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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

springmvc(三) 参数绑定、

發(fā)布時(shí)間:2024/4/14 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springmvc(三) 参数绑定、 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

      前面兩章就介紹了什么是springmvc,springmvc的框架原理,并且會(huì)簡(jiǎn)單的使用springmvc以及ssm的整合,從這一章節(jié)來看,就開始講解springmvc的各種功能實(shí)現(xiàn),慢慢消化

                          --WH

一、參數(shù)綁定

      1.1、什么是參數(shù)綁定?

        客戶在瀏覽器端會(huì)提交一些參數(shù)到服務(wù)器端,比如用戶的登錄等,就會(huì)傳username 和 password過來,springmvc則通過參數(shù)綁定組件將請(qǐng)求參數(shù)的內(nèi)容進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后將轉(zhuǎn)換后的值覆給controller方法的形參,這就是參數(shù)綁定的過程,其實(shí),springmvc就是使用controller方法形參來接收請(qǐng)求的參數(shù)

      1.2、springmvc默認(rèn)支持的參數(shù)類型

        可以在Controller方法的形參中直接使用以下類型

          HttpServletRequest、HttpServletResponse、HttpSession:這三個(gè)很熟悉,不做解釋

          Model/ModelMap:將model數(shù)據(jù)填充到request域,比如之前的ModelAndView對(duì)象添加list,其實(shí)就是將list添加到request作用域,只是ModelAndView對(duì)象不僅能夠添加model數(shù)據(jù),還能夠添加視圖。而Model對(duì)象的功能就只有將model數(shù)據(jù)填充到request作用域

          

        如圖所示,就是這樣,在形參中使用這幾個(gè)對(duì)象,那么在方法中就能直接用這幾個(gè)對(duì)象了。有了request對(duì)象,就能夠使用我們以前學(xué)過的老方法獲取請(qǐng)求參數(shù)等一些信息了。

      1.3、綁定簡(jiǎn)單類型的參數(shù)

        上面講解的只是默認(rèn)支持的參數(shù)類型,有request等一些對(duì)象,必然是很好很方便的一件事,比如獲取請(qǐng)求參數(shù)就可以得到解決了,但是springmvc提供更強(qiáng)大一些的功能。

        綁定簡(jiǎn)單類型的參數(shù)規(guī)則

          1.3.1、如果請(qǐng)求參數(shù)的key和Controller類中方法的形參名稱一致,那么就直接綁定;

            請(qǐng)求url:http://localhost:8080/ssm_test/editItems.do?id=2?? 模擬客戶端發(fā)送了一個(gè)id=2的請(qǐng)求參數(shù)過來,這里使用的是get方式,如果post方式也是一樣的道理

            Controller方法:

                

            分析:形參中的名稱與請(qǐng)求參數(shù)的名稱相同,固可以直接綁定。

          1.3.2、如果請(qǐng)求參數(shù)的key和Controller類中方法的形參名稱不一致,那么就需要使用@RequestParam注解來進(jìn)行參數(shù)綁定

            請(qǐng)求url:http://localhost:8080/ssm_test/editItems.do?itemsId=2?? 模擬客戶端發(fā)送了一個(gè)id=2的請(qǐng)求參數(shù)過來

            Controller方法:

                

            分析:使用@RequestParam("itemsId")注解將名為itemsId的請(qǐng)求參數(shù)的值賦值給形參中名為id的參數(shù)。注意,在對(duì)應(yīng)的形參前面加該注解。

?

      1.4、綁定pojo

        使用springmvc綁定pojo的參數(shù)時(shí),要求jsp中input框的name值要和Controller方法形參的pojo對(duì)象中的屬性名稱一致,如下圖

          jsp頁面

              

          controller方法

                

          Items類

              

      1.5、參數(shù)綁定時(shí)日期類型轉(zhuǎn)換問題

        在我們從jsp頁面?zhèn)鬟^來的參數(shù)的類型都是object的,而我們自己編寫的是有具體類型的,比如id是需要int型,name是需要string型,而springmvc就會(huì)幫我們將這些簡(jiǎn)單的類型自動(dòng)進(jìn)行類型轉(zhuǎn)換,但是當(dāng)遇到Date類型的時(shí)候,就轉(zhuǎn)換不了,需要我們自己寫一個(gè)類型轉(zhuǎn)換器,然后給適配器配上,從而jsp傳過來的參數(shù)能夠轉(zhuǎn)換成我們需要的日期類型,如果不自定義類型轉(zhuǎn)換器的話,會(huì)報(bào)錯(cuò)             即把請(qǐng)求中的日期字符串轉(zhuǎn)成java的日期類型,該日期類型與pojo中日期屬性的類型保持一致            

        1.5.1、自定義Converter

              

package com.wuhao.ssm.util;import java.text.SimpleDateFormat; import java.util.Date;import org.springframework.core.convert.converter.Converter;public class DateConverter implements Converter<String,Date> {@Overridepublic Date convert(String source) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");return sdf.parse(source);} catch (Exception e) {e.printStackTrace();}return null;}} DateConverter.java

  

        1.5.2、在springmvc.xml中配置該轉(zhuǎn)換器

          第一種方式(推薦):兩步搞定

            修改mvc:annotation-driven的配置

            配置自定義轉(zhuǎn)換器綁定

              

<!-- 配置處理器映射器和處理器適配器 --> <mvc:annotation-driven conversion-service="conversionService" /><!-- 自定義參數(shù)綁定 --> <bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><!-- 日期類型轉(zhuǎn)換器 --><bean class="com.wuhao.ssm.util.DateConverter" /></list></property></bean> springmvc.xml中配置日期轉(zhuǎn)換器

?

          第二種方式:

              

<!--注解適配器,也就是不使用spring標(biāo)簽對(duì)注解進(jìn)行管理 --> <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="webBindingInitializer" ref="customBinder" /> </bean><!-- 自定義webBinder --> <bean id="customBinder"class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"><property name="conversionService" ref="conversionService" /> </bean> <!-- conversionService --> <bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><!-- 轉(zhuǎn)換器 --><property name="converters"><list><bean class="com.wuhao.ssm.util.DateConverter" /></list></property> </bean> View Code

?

      1.6、包裝pojo參數(shù)綁定

        與1.4的pojo參數(shù)綁定的區(qū)別在于,這里將pojo放入一個(gè)包裝類中,如下圖,將Items類放入了ItemsQueryVO類中,ItemsQueryVO就是一個(gè)包裝pojo

          ItemsQueryVO

            

          jsp

                  

          controller:直接使用包裝pojo接收

            

            

      1.7、集合參數(shù)的綁定

        1.7.1、簡(jiǎn)單類型的集合參數(shù)綁定,可以使用數(shù)組或者List來接收

        比如jsp頁面有一些多選框,復(fù)選框,這樣提交過來,就需要使用集合參數(shù)的綁定了。

        jsp

          

        controller

          使用數(shù)組來接收

            形參中的數(shù)組類型要和jsp中值的類型一致,形參中的參數(shù)名稱要和jsp中name一致。也就是itemsid

              

          使用list來接收

            形參中l(wèi)ist的泛型跟jsp中的值的類型一致,形參中參數(shù)名稱要和jsp中name一致。(我們想象中是這樣)

                  

            結(jié)果,會(huì)報(bào)錯(cuò),嘿嘿,因?yàn)椴荒茉谛螀⒅兄苯佣xList類型的參數(shù),如果想要使用list來接收,需要把List類型的參數(shù)定義在包裝POJO中,Controller的方法形參使用該包裝POJO,下面講解。所以如果使用接收簡(jiǎn)單類型的集合參數(shù),使用數(shù)組最為方便。

?

        1.7.2、pojo類型的集合參數(shù)綁定,可以使用數(shù)組或者list來接收

          注意:pojo類型的集合參數(shù)綁定時(shí),接收它的數(shù)組或者List,都不能直接定義在Controller方法形參上,需要把它定義到一個(gè)包裝pojo中,如何把這個(gè)包裝pojo放到形參

          使用list。

          包裝pojo類 ItemsQueryVo, 將需要裝items集合的對(duì)象放入包裝類中。

              

          jsp

              

          這里注意:標(biāo)記的是name屬性,不要與value屬性搞混淆了,在ItemsQueryVo中有名為itemsList的list,所以在jsp中的name就需要一層層匹配下去才能正確將其屬性值裝載到正確的位置,list的格式為:itemsList[下標(biāo)].name。 就拿這個(gè)分析,itemsList就可以找打ItemsQueryVo中的itemsList, itemsList[1],就可以定位到itemsList中的第一個(gè)items,itemsList[1].name就可以定位到itemsList中的第一個(gè)items的name屬性,這樣一來就看得懂了。

          

          controller

                

?

        1.7.3、總結(jié)上面兩種

          總結(jié)一下集合參數(shù)的綁定

            對(duì)于簡(jiǎn)單類型的集合參數(shù)綁定,則使用數(shù)組作為形參來接收請(qǐng)求的集合參數(shù)

            對(duì)于pojo類型的集合參數(shù)綁定,則使用數(shù)組或者list兩者都可以,一般常用list。

              注意:這種pojo類型的集合參數(shù)綁定,必須將list或者數(shù)組作為一個(gè)包裝類中的屬性,然后使用該包裝類對(duì)象作為形參來接收請(qǐng)求參數(shù)。       

?

        1.7.4、map集合類型綁定

          這個(gè)用的不多,一般只是用list,這個(gè)也稍微了解一下,等需要的時(shí)候會(huì)用即可,貼出關(guān)鍵代碼就行

          同樣,需要使用包裝pojo類。

          ItemsQueryVo

            

          jsp:格式為下面這樣。就能夠匹配到

            

          controller

            

    

二、總結(jié)

      看了這么多中參數(shù)綁定的例子,我覺得用一句話來概括最為準(zhǔn)確,萬變不離其宗。有耐心看一下就自然就會(huì)用了,真的很簡(jiǎn)單。只是知識(shí)比較多比較細(xì),需要理解的也不多。

?

總結(jié)

以上是生活随笔為你收集整理的springmvc(三) 参数绑定、的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。