Springmvc學習小結

Springmvc框架:
1.用戶請求到達DispatcherServlert前端控制器,接受請求,進行響應。
2.接收到請求後,會調用HandlerMapping處理器映射器,根據url查找Handler(可以通過xml配置方式,註解方式)。
3.HandlerAdapter處理器適配器:根據特定規則去執行Handler,編寫Handler時需要按照HandlerAdapter的要求去編寫。
4.Handler處理器(後端控制器):需要程序員去編寫,常用註解方式開發
Handler處理器執行後的結果是ModelAndView(這裏爲HandlerAdapter執行後一定會把對象封裝爲ModelAndView),具體開發時Handler返回值類型可以爲ModelAndView,String(邏輯視圖名),void(通過在Handler形參中添加request和response,類似原始servlet開發方,注意:這種方式可以通過指定response響應的結果類型實現json數據輸出。)
5.View resolver視圖解析器:根據邏輯視圖名生成真正的視圖(在springmvc中使用View對象表示)。
6.View視圖:jsp頁面,僅是數據展示,裏邊沒有業務邏輯。

註解開發:
使用註解方式的處理器映射器和處理器適配器配置
第一種方法:

<!--註解映射器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--註解適配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

第二種方法:在實際開發中可以在springmvc.xml配置文件中使用 <mvc:annotation-driven> 代替上邊處理器映射器和處理器適配器配置,springmvc使用<mvc:annotation-driven>自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter。如:

<mvc:annotation-driven></mvc:annotation-driven>

@Controller 註解必須要加,作用是標識這個類是一個Handler處理器。
@RequestMapping 註解必須要加,作用:
1.對url和Handler的方法進行映射
2.可以窄化請求映射,設置Handler的根路徑,url就是根路徑+子路徑請求方式
3.可以限制http請求的方法
映射成功後,springmvc框架生成一個Handler對象,對象中只包括一個映射成功的method。

註解開發中的參數綁定:
將request請求過來的key/value的數據(理解成一個串),通過轉換(參數綁定的一部分)將key/value轉成形參類型,最後將轉換後的結果傳給形參。(整個參數綁定過程)
springmvc所支持的參數綁定:
1.默認支持很多類型,比如HttpServletRequest,rsponse,session,model/modelMap將模型數據填充到request域。
2.支持簡單數據類型,比如整形,字符串,日期。
只要能夠保證request請求的參數名和形參名稱一致,自動綁定成功。
如果request請求的參數名和形參名稱不一致,可以使用@RequestParam(指定request請求的參數名),@RequestParam加在形參的前邊。如public String editItems(Model model,
@RequestParam(value = "id", required = true)Integer items_id)
throws Exception {}

3.支持pojo類型
只要保證request提交的參數名稱和pojo中的屬性名一致,自動將request請求的參數設置到pojo的屬性中。
如果形參中既有pojo類型,又有簡單類型,參數綁定互不影響,各綁定各的。
4.自定義參數綁定:
日期類型綁定:
定義一個Converter<源類型,目標類型>接口的實現類,比如String字符串(日期數據串),Converter

<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.jxk.ssm.controller.converter.CustomDateConverter"/>
            </list>
        </property>
    </bean>

springmvc和struts2的區別
springmvc面向方法開發的(更接近service接口的開發方式),struts2面向類開發。
springmvc可以單例開發,struts2只能是多例開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章