程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> springmvc學習筆記(11)-springmvc注解開發之簡單參數綁定

springmvc學習筆記(11)-springmvc注解開發之簡單參數綁定

編輯:JAVA綜合教程

springmvc學習筆記(11)-springmvc注解開發之簡單參數綁定


springmvc學習筆記(11)-springmvc注解開發之簡單參數綁定

 

本文主要介紹注解開發的簡單參數綁定,包括簡單類型、簡單pojo以及自定義綁定實現類型轉換

spring參數綁定過程

從客戶端請求key/value數據,經過參數綁定,將key/value數據綁定到controller方法的形參上。

springmvc中,接收頁面提交的數據是通過方法形參來接收。而不是在controller類定義成員變更接收!!!!

參數綁定過程

默認支持的類型

直接在controller方法形參上定義下邊類型的對象,就可以使用這些對象。在參數綁定過程中,如果遇到下邊類型直接進行綁定。

HttpServletRequest:通過request對象獲取請求信息 HttpServletResponse:通過response處理響應信息 HttpSession:通過session對象得到session中存放的對象 Model/ModelMap:model是一個接口,modelMap是一個接口實現。作用:將model數據填充到request域。

簡單類型

通過@RequestParam對簡單類型的參數進行綁定。如果不使用@RequestParam,要求request傳入參數名稱和controller方法的形參名稱一致,方可綁定成功。

如果使用@RequestParam,不用限制request傳入參數名稱和controller方法的形參名稱一致。

通過required屬性指定參數是否必須要傳入,如果設置為true,沒有傳入參數,報下邊錯誤:

指定傳入參數未傳入報錯

@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})
[email protected]裡邊指定request傳入參數名稱和形參進行綁定。
//通過required屬性指定參數是否必須要傳入
//通過defaultValue可以設置默認值,如果id參數沒有傳入,將默認值和形參綁定。
public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {

pojo綁定

頁面中input的name和controller的pojo形參中的屬性名稱一致,將頁面中數據綁定到pojo。

注意:這裡只是要求name和形參的屬性名一致,而不是要求和形參的名稱一致,這點不要混淆了,框架會進入形參內部自動匹配pojo類的屬性名。(我沒看源碼,但應該是用反射實現的)

頁面定義:


controller的pojo形參的定義:

public class Items {
    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;

自定義參數綁定實現日期類型綁定

對於controller形參中pojo對象,如果屬性中有日期類型,需要自定義參數綁定。

將請求日期數據串傳成日期類型,要轉換的日期類型和pojo中日期屬性的類型保持一致。本文示例中,自定義參數綁定將日期串轉成java.util.Date類型。

需要向處理器適配器中注入自定義的參數綁定組件。

自定義日期類型綁定
public class CustomDateConverter implements Converter{
    public Date convert(String s) {
        //實現 將日期串轉成日期類型(格式是yyyy-MM-dd HH:mm:ss)

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            //轉成直接返回
            return simpleDateFormat.parse(s);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //如果參數綁定失敗返回null
        return null;

    }
}
配置方式

    
        
        
            
                
                
           
        
    

springmvc和struts2的區別

1.springmvc基於方法開發的,struts2基於類開發的。

springmvc將url和controller方法映射。映射成功後springmvc生成一個Handler對象,對象中只包括了一個method。方法執行結束,形參數據銷毀。springmvc的controller開發類似service開發。

2.springmvc可以進行單例開發,並且建議使用單例開發,struts2通過類的成員變量接收參數,無法使用單例,只能使用多例。

3.經過實際測試,struts2速度慢,在於使用struts標簽,如果使用struts建議使用jstl。

商品名稱 商品價格

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved