SpringMVC執行步驟、Model的使用詳解
第一個SpringMvc HelloWorld
無啟動類
springboot才有啟動類
前端操作
訪問項目名進入默認主頁,顯示一個鏈接
點擊鏈接後請求helloWorld.do跳轉另一個jsp頁面
後臺執行步驟
*也對應controller的RequestMapping,若要映射多有請求則為/
web.xml負責攔截請求並分發到controller處理
spring-mvc.xml負責解析controller的返回值,跳轉到相應的頁面上。
spring-mvc.xml以及在web.xml中的聲明都可以用Java Configuration來代替,參考文章
項目實例:eclipse/SpringMvc01
第二個SpringMvc項目
項目簡介
訪問首頁,請求後臺controller初始化學生列表,裝入ModelAndView後返回list.jsp,顯示學生列表。
list.jsp點擊“添加學生”鏈接請求後臺controller,controller處理頁面跳轉為add.jsp。
list.jsp點擊“修改”操作,帶學生id參數到後臺controller處理,controller調出該id學生信息,封裝到ModelAndView中並返回update.jsp頁面。
知識點整合
SpringMvc對象屬性自動封裝。參見add.jsp。
SpringMvc亂碼解決:配置一個過濾器。參見web.xml。
SpringMvc重定向與轉發:轉發能帶參數,但是網址欄不會改變,重定向會改變。參見StudentController
SpringMvc對servlet API的支持:支持request、response等。參見UserController。
SpringMvc自動解析json:引入jar包、命名空間、加註解。參見UserController。
代碼實例:SpringMvc02
SpringMvc對rest風格url的支持
特點:請求任何controller都沒有.do後綴,請求前端頁面沒有.jsp;所有的url都沒有後綴(但博主似乎支持帶.html後綴)。
@PathVariable獲取url參數。
SpringMvc對靜態資源的映射
代碼實例:SpringMvc5Rest
SpringMvc文件上傳
引入jar包、配置bean
SpringMvc文件上傳
引jar包、配置bean
單文件上傳
多文件上傳
代碼實例:SpringMvc6FileUpload
圖解SpringMvc的執行流程
1.用戶發起請求到前端控制器DispatcherServlet
前端控制器 <!-- 前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:ApplicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 這裡不能使用/* /*要在過濾器中使用--> <url-pattern>/</url-pattern> </servlet-mapping>
2.前端控制器發送url請求處理器映射器HandlerMapping根據url查找Handler
3.處理器映射器返回前端控制器一個執行鏈
4.前端控制器請求處理器適配器進行Handler
5.處理器適配器選擇合適的處理器(Handler一般是controller)
controller控制器返回ModelandView以及視圖名
//接受路徑名為h1的請求 @RequestMapping("/h1") public String hello(Model model){ //將內容Hello,SpringMvc以參數名msg返回給經視圖解析器解析的hello頁面 model.addAttribute("msg","Hello,SpringMvc"); return "hello";//會被視圖解析器處理 } //這裡我使用瞭Model
6.Handler將ModelAndView返回給處理器適配器
7.處理器適配器將ModelAndView返回給前端控制器
8.前端控制器請求視圖解析器View resolver進行視圖解析 根據邏輯視圖添加前綴和後綴解析成真正的物理視圖(jsp等)
<!-- 4. 視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value="/.jsp"/> </bean>
9.視圖解析器向前端控制器返回view
10.渲染視圖,將模型數據填充到request域
11.響應視圖
前端控制器,處理器映射器,處理器適配器不需要我們寫
處理器需要我們寫(一般就是Controller)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Springmvc工程跳轉controller無效的解決
- SpringMVC的詳細架構你瞭解嘛
- SpringMVC xml文件路徑在web.xml中的配置方式
- 基於SpringMVC入門案例及講解
- 關於springmvc報錯404的問題