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。

推薦閱讀: