標籤: springmvcjava
[TOC]git
本文主要介紹註解開發的簡單參數綁定,包括簡單類型、簡單pojo以及自定義綁定實現類型轉換github
從客戶端請求key/value數據,通過參數綁定,將key/value數據綁定到controller方法的形參上。spring
springmvc中,接收頁面提交的數據是經過方法形參來接收。而不是在controller類定義成員變動接收!!!!session
直接在controller方法形參上定義下邊類型的對象,就能夠使用這些對象。在參數綁定過程當中,若是遇到下邊類型直接進行綁定。mvc
HttpServletRequest
:經過request對象獲取請求信息HttpServletResponse
:經過response處理響應信息HttpSession
:經過session對象獲得session中存放的對象Model/ModelMap
:model是一個接口,modelMap是一個接口實現。做用:將model數據填充到request域。經過@RequestParam
對簡單類型的參數進行綁定。若是不使用@RequestParam
,要求request傳入參數名稱和controller方法的形參名稱一致,方可綁定成功。app
若是使用@RequestParam
,不用限制request傳入參數名稱和controller方法的形參名稱一致。框架
經過required屬性指定參數是否必需要傳入,若是設置爲true,沒有傳入參數,報下邊錯誤:jsp
@RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET}) //@RequestParam裏邊指定request傳入參數名稱和形參進行綁定。 //經過required屬性指定參數是否必需要傳入 //經過defaultValue能夠設置默認值,若是id參數沒有傳入,將默認值和形參綁定。 public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {
頁面中input的name和controller的pojo形參中的屬性名稱一致,將頁面中數據綁定到pojo。學習
注意:這裏只是要求name和形參的屬性名一致,而不是要求和形參的名稱一致,這點不要混淆了,框架會進入形參內部自動匹配pojo類的屬性名。(我沒看源碼,但應該是用反射實現的)
頁面定義:
<table width="100%" border=1> <tr> <td>商品名稱</td> <td><input type="text" name="name" value="${itemsCustom.name }"/></td> </tr> <tr> <td>商品價格</td> <td><input type="text" name="price" value="${itemsCustom.price }"/></td> </tr>
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<String,Date>{ 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; } }
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 自定義參數綁定 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- 轉換器 --> <property name="converters"> <list> <!-- 日期類型轉換 --> <bean class="com.iot.learnssm.firstssm.controller.converter.CustomDateConverter"/> </list> </property> </bean>
springmvc將url和controller方法映射。映射成功後springmvc生成一個Handler對象,對象中只包括了一個method。方法執行結束,形參數據銷燬。springmvc的controller開發相似service開發。
2.springmvc能夠進行單例開發,而且建議使用單例開發,struts2經過類的成員變量接收參數,沒法使用單例,只能使用多例。
3.通過實際測試,struts2速度慢,在於使用struts標籤,若是使用struts建議使用jstl。