天天看點

SpringMvc學習-1-Spring MVC了解

SpringMVC了解

Spring MVC是Spring提供的一個實作了Web MVC設計模式的輕量級Web架構,提供了一個前端控制器DispatcherServlet,使開發人員無需額外開發控制器對象。

DispatcherServlet作用

 DispatcherServlet的全名是org.springframework.web.servlet.DispatcherServlet,它在程式中充當着前端控制器的角色。

 在使用時,隻需将其配置在項目的web.xml檔案中.

web.xml配置

<!--理論上classpath的預設路徑是WEB-INF/classes  解決找不到的問題 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/springmvc.xml</param-value>
    </context-param>
    <!-- 配置Spring MVC前端控制器 DispatcherServlet -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <!-- 配置Spring MVC加載配置檔案路徑 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
        <!-- 配置伺服器啟動後立即加載Spring MVC配置檔案 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
           

Spring Mvc 工作流程:

SpringMvc學習-1-Spring MVC了解

講解:

1.使用者通過浏覽器向伺服器發送請求,請求會被Spring MVC的前端控制器DispatcherServlet所攔截;

2:DispatcherServlet攔截到請求後,會調用HandlerMapping處理器映射器;

3:處理器映射器根據請求URL找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并傳回給DispatcherServlet;

4:DispatcherServlet會通過傳回資訊選擇合适的HandlerAdapter(處理器擴充卡);

5:HandlerAdapter會調用并執行Handler(處理器),這裡的處理器指的就是程式中編寫的Controller類,也被稱之為後端控制器;

6:Controller執行完成後,會傳回一個ModelAndView對象,該對象中會包含視圖名或包含模型和視圖名;

7:HandlerAdapter将ModelAndView對象傳回給DispatcherServlet;

8:DispatcherServlet會根據ModelAndView對象選擇一個合适的ViewReslover(視圖解析器);

9:ViewReslover解析後,會向DispatcherServlet中傳回具體的View(視圖);

10:DispatcherServlet對View進行渲染(即将模型資料填充至視圖中);

11:視圖渲染結果會傳回給用戶端浏覽器顯示。

字元編碼過濾器

<!-- 配置編碼過濾器 -->
    <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>
           

繼續閱讀