springmvc是一個基於java實現了mvc設計模式的輕量級web框架,經過把model,view,controller分離,將web層進行解耦,把複雜的web應用分紅幾部分,簡化開發。前端
1.用戶發送請求被前端DispatcherServlet捕獲, 2.DispatcherServlet捕獲到請求後,調用HandlerMapping處理映射器,請求獲取Handle 3.處理器映射器跟據請求url找到具體的處理器,生成處理器對象及處理器攔截器並返回給DispatcherServlet 4.DispatcherServlet調用HandlerAdapter處理器適配器 5.HandlerAdapter通過適配調用handler 6.Handler執行完成返回ModelAndView 7.HandlerApdater將Handler執行結果ModelAndView返回給DispatcherServlet 8.DispatcherServlet講講ModelAndView傳給ViewResolver視圖解析器進行解析 9.ViewResolver解析後返回具體View 10.DispatcherServlet對View進行視圖渲染(即將模型數據充至視圖中)而後DispatcherServlet響應用戶java
與spring框架繼承,支持各類請求資源的映射策略,支持各類視圖技術程序員
前端控制器DispatcherServlet: 做用:接受請求,響應結果,至關於轉發器 處理器映射器HandlerMapping 做用:跟據請求的·url來查找Handler 處理器適配器HandlerAdapter 處理器Handler(須要程序員開發) 視圖解析器 ViewResolver(不須要程序員開發) 做用:進行視圖的解析,根據視圖邏輯名解析成真正的視圖視圖View(須要程序員開發jsp)web
1.轉發:在返回值前面加「forward」 2.重定向:在返回值前面加:「redirect」spring
經過jackson框架把java裏面的對象直接轉化爲js能夠識別的json對象,具體步驟: 加入jar包:jackson.jar 在配置文件中配置json的映射 在接受Ajax方法裏面直接返回list等,但在方法前面加@ResponseBody註解json
1.解決post請求亂碼方法 在web.xml配置一個過濾器,設置成utf-8設計模式
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.get請求解決方法 修改tomcat配置文件添加編碼與工程編碼同樣tomcat
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一種是對參數從新編碼: String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")安全
ISO8859-1是tomcat默認編碼,須要將tomcat編碼後的內容按utf-8編碼。restful
能夠將異常拋給Spring框架,有Spring處理,咱們只須要配置簡單的異常處理器,在異常處理器中添加視圖頁面便可。
@RequestMapping:用於處理請求 url 映射的註解,可用於類或方法上。用於類上,則表示類中的全部響應請求的方法都是以該地址做爲父路徑。
@RequestBody:註解實現接收http請求的json數據,將json轉換爲java對象。
@ResponseBody:註解實現將conreoller方法返回對象轉化爲json對象響應給客戶。
是單例模式,因此在多線程訪問的時候存在線程安全的問題。
能夠在@RequestMapping註解裏面加上method=RequestMethod.GET
直接在方法形參聲明request,SpringMVC就自動就把request對象傳入
在形參裏面聲明這個參數,名字和傳過來的參數必須同樣
直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象裏面。
返回值能夠有不少類型,有String, ModelAndView。ModelAndView類把視圖和數據都合併的一塊兒的,但通常用String比較好
用modelmap對象,能夠在這個對象裏面調用put方法,把對象加到裏面,前臺就能夠經過el表達式拿到。
能夠在類加註解@SessionAttributes,裏面包含的字符串要放入session裏面的key
1.導入jackson2包
2,開啓註解驅動mvc:annotation-driven/
ModelAndView
有兩種寫法,一種是實現HandlerInterceptor接口,另一種是繼承適配器類,,接着在接口方法當中,實現處理邏輯;而後在SpringMvc的配置文件中配置攔截器便可:
<!-- 攔截器的配置 --> <mvc:interceptors> <mvc:interceptor> <!-- ** 表示當前目錄及其子目錄路徑 --> <mvc:mapping path="/**"/> <bean class="com.dpb.interceptor.FirstIntercepter"></bean> </mvc:interceptor> </mvc:interceptors>
RESTful是一種架構的規範與約束、原則,符合這種規範的架構就是RESTful架構 在RESTful接口中,全部的方法都是返回JSON,沒有返回頁面的(ModelAndView),所以,全部的方法上都須要添加@ResponseBody註解。一個替代的簡化方案,是使用 @RestController 代替@Controller。@RestController其實是一個組合註解,是@Controller和@ResponseBody的組合