標籤: springmvc前端
[TOC]java
本文對springmvc系列博文進行小結程序員
DispatcherServlet
前端控制器:接收request,進行responseHandlerMapping
處理器映射器:根據url查找Handler。(能夠經過xml配置方式,註解方式)HandlerAdapter
處理器適配器:根據特定規則去執行Handler,編寫Handler時須要按照HandlerAdapter的要求去編寫。Handler
處理器(後端控制器):須要程序員去編寫,經常使用註解開發方式。
ModelAndView
,具體開發時Handler
返回方法值類型包括:ModelAndView
、String
(邏輯視圖名)、void
(經過在Handler形參中添加request和response,相似原始 servlet開發方式,注意:能夠經過指定response響應的結果類型實現json數據輸出)View Resolver
視圖解析器:根據邏輯視圖名生成真正的視圖(在springmvc中使用View對象表示)View
視圖:jsp頁面,僅是數據展現,沒有業務邏輯。<!--註解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--註解適配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
在實際開發,使用<mvc:annotation-driven>
代替上邊處理器映射器和適配器配置。web
@controller
註解必需要加,做用標識類是一個Handler處理器。@requestMapping
註解必需要加,做用:
映射成功後,springmvc框架生成一個Handler對象,對象中只包括 一個映射成功的method。spring
將request請求過來的key/value的數據(理解一個串),經過轉換(參數綁定的一部分),將key/value串轉成形參,將轉換後的結果傳給形參(整個參數綁定過程)。json
springmvc所支持參數綁定:後端
HttpServletRequest
、response
、session
、model/modelMap
(將模型數據填充到request域)@RequestParam
(指定request請求的參數名),@RequestParam
加在形參的前邊。HttpServletRequest request
參數,經過request接收查詢條件參數。get/set
方法,action使用包裝對象接收注意:形參中即有pojo類型又有簡單類型,參數綁定互不影響。api
自定義參數綁定數組
定義的Converter<源類型,目標類型>
接口實現類,好比:Converter<String,Date>
,表示:將請求的日期數據串轉成java中的日期類型。瀏覽器
注意:要轉換的目標類型必定和接收的pojo中的屬性類型一致。
將定義的Converter實現類注入處處理器適配器中。
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- conversionService --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- 轉換器 --> <property name="converters"> <list> <bean class="cn.itcast.ssm.controller.converter.CustomDateConverter"/> </list> </property> </bean>
springmvc面向方法開發的(更接近service接口的開發方式),struts2面向類開發。
springmvc能夠單例開發,struts2只能是多例開發。
服務端校驗:
通常使用hibernate的校驗框架,依賴hibernate-validator.jar
,jboss-logging.jar
,validation-api.jar
這幾個jar包
開發步驟
@Validated
來捕獲和顯示校驗錯誤信息分組校驗
數據回顯有三種方法
@ModelAttribute
指定pojo回顯到頁面在request中的key@ModelAttribute
還能夠將方法的返回值傳到頁面@ModelAttribute
系統的dao、service、controller出現都經過throws Exception向上拋出,最後由springmvc前端控制器交由異常處理器進行異常處理。
springmvc提供全局異常處理器(一個系統只有一個異常處理器)進行統一異常處理。
全局異常處理器處理思路:
解析出異常類型
拋出異常的位置
開發步驟
commons-fileupload
兩種json數據交互的形式:
須要的依賴:
jackson-databind
jackson-mapper-asl
在註解適配器中加入messageConverters
<!--註解適配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>
注意:若是使用<mvc:annotation-driven />
則不用定義上邊的內容。
在controller的返回值上加註解@ResponseBody
來將java對象輸出json,返回json格式數據
@RequestMapping(value="/ itemsView/{id}")
:{×××}
佔位符,請求的URL能夠是/viewItems/1
或/viewItems/2
,經過在方法中使用@PathVariable
獲取{×××}中的×××變量。@PathVariable
用於將請求URL中的模板變量映射到功能處理方法的參數上。
若是@RequestMapping
中表示爲/itemsView/{id}
,id和形參名稱一致,@PathVariable
不用指定名稱。
同時須要配置前端控制器。若要訪問靜態資源,還需在springmvc.xml中添加靜態資源解析方法,如<mvc:resources location="/js/" mapping="/js/**"/>
定義攔截器,實現HandlerInterceptor
接口。接口中提供三個方法。能夠從名稱和參數看出各個接口的順序和做用
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
鏈式執行測試
應用