日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC学习--参数绑定

發布時間:2024/7/19 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC学习--参数绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • spring參數綁定過程 

  從客戶端請求key/value數據,經過參數綁定,將key/value數據綁定到controller方法的形參上。springmvc中,接收頁面提交的數據是通過方法形參來接收。而不是在controller類定義成員變更接收。

?

  • 默認支持的類型

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

  1、HttpServletRequest

  通過request對象獲取請求信息。

  2、HttpServletResponse

  通過response處理響應信息

  3、HttpSession

  通過session對象得到session中存放的對象

  4、Model/ModelMap

  model是一個接口,modelMap是一個接口實現。用:將model數據填充到request域。

  • 簡單類型

  通過@RequestParam對簡單類型的參數進行綁定。如果不使用@RequestParam,要求request傳入參數名稱和controller方法的形參名稱一致,方可綁定成功,如果使用@RequestParam,不用限制request傳入參數名稱和controller方法的形參名稱一致。通過required屬性指定參數是否必須要傳入,如果設置為true,沒有傳入參數,則會報錯。

  • POJO綁定

  1、簡單的POJO

  將pojo對象中的屬性名于傳遞進來的屬性名對應,如果傳進來的參數名稱和對象中的屬性名稱一致則將參數值設置在pojo對象中

?

  2、復雜的POJO

?  與簡單的POJO差不過,只是在頁面上將頁面屬性設置為pojo類型的屬性,如:

1 <input type="text" name="items.name" />
  • 自定義參數綁定實現日期類型綁定

  對于controller形參中pojo對象,如果屬性中有日期類型,需要自定義參數綁定。將請求日期數據串傳成?日期類型,要轉換的日期類型和pojo中日期屬性的類型保持一致。

  自定義日期類型綁定:

1 public class CustomDateConverter implements Converter<String,Date>{ 2 3 @Override 4 public Date convert(String source) { 5 //將實際的字符串轉為date類型 6 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 7 try { 8 //轉換成功直接返回 9 return sdf.parse(source); 10 } catch (ParseException e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 //轉換失敗返回null 15 return null; 16 } 17 18 }

  配置方式:springmvc.xml

1 <mvc:annotation-driven conversion-service="conversionService"/> 2 <!-- 自定義參數綁定 --> 3 <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 4 <!-- 轉換器 --> 5 <property name="converters"> 6 <list> 7 <!-- 日期類型轉換 --> 8 <bean class="com.luchao.converter.CustomDateConverter"/> 9 </list> 10 </property> 11 </bean>
  • 集合類型綁定

  1、數組綁定

  如果要批量刪除刪除,用戶在頁面選擇多個商品,批量刪除。

  將頁面選擇(多選)的商品id,傳到controller方法的形參,方法形參使用數組接收頁面請求的多個商品id

  如下代碼:

?

1 // 批量刪除 2 @RequestMapping(value="/deleteItems") 3 public void deleteItems(String[] item_ids) throws Exception { 4 for (String string : item_ids) { 5 System.out.println(string); 6 } 7 }

?

  2、list綁定

  通常在需要批量提交數據時,將提交的數據綁定到list<pojo>中,比如:成績錄入(錄入多門課成績,批量提交)。

  頁面屬性:

?

<c:forEach items="${itemsList }" var="item" varStatus="status"> <tr> <td><input name="itemsList[${status.index }].name" value="${item.name }"/></td><td><input name="itemsList[${status.index }].price" value="${item.price }"/></td><td><input name="itemsList[${status.index }].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/></td><td><input name="itemsList[${status.index }].detail" value="${item.detail }"/></td></tr> </c:forEach>

?

  controller中將包裝list集合的POJO作為參數。

  3、Map綁定

  頁面屬性:

<tr> <td>學生信息:</td> <td> 姓名:<inputtype="text"name="itemInfo['name']"/> 年齡:<inputtype="text"name="itemInfo['price']"/> </td> </tr>

  controller中將包裝Map集合的POJO作為參數。

?

?

  如果出現亂碼問題,需要添加一個攔截器,spring已經幫我們實現,配置如下:web.xml

1 <filter> 2 <filter-name>CharacterEncodingFilter</filter-name> 3 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 4 <init-param> 5 <param-name>encoding</param-name> 6 <param-value>utf-8</param-value> 7 </init-param> 8 </filter> 9 <filter-mapping> 10 <filter-name>CharacterEncodingFilter</filter-name> 11 <url-pattern>/*</url-pattern> 12 </filter-mapping>

  另外,也可以將tomcat配置文件添加編碼與工程編碼一致,如下:

1 <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

  另外一種方法對參數進行重新編碼:

1 String userName = new 2 String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

  ISO8859-1是tomcat默認編碼,需要將tomcat編碼后的內容按utf-8編碼。最后一種實現比較麻煩。

  現在對SpringMVC已經有了一定的認識,比較其與struts2的一些特點可以加強認識。

  1、springmvc基于方法開發的,struts2基于類開發的。

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

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

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

?

轉載于:https://www.cnblogs.com/lcngu/p/5510362.html

總結

以上是生活随笔為你收集整理的SpringMVC学习--参数绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。