SpringMVC SpringMVC執行流程

SpringMVC執行流程

開局一張圖:
在這裏插入圖片描述
是不是很懵逼,我們來把他翻譯成中文的:
在這裏插入圖片描述

emmmm~~~這樣是不是容易多了

然後我們再把它變成代碼來實現
在這裏插入圖片描述

執行流程

  1. DispatcherServlet表示前端控制器,是整個SpringMVC的控制中心,用戶發出的請求,DispatcherServlet接收請求並攔截請求。
  2. 假設我們的請求爲:http://localhost:8080/SpringMVC/hello
  3. 他會將它拆分爲三部分
    • http://localhost:8080 服務器域名
    • SpringMVC部署在服務器上的站點
    • hello表示控制器
    • 這個url表示爲:請求爲於http://localhost:8080 上的SpringMVC站點的hello控制器
  4. HandlerMapping爲處理器映射。DispatcherServlet調用HandlerMapping,HandlerMapping根據請求url查找Handler
  5. HandlerExcution表示具體的Handler,其主要作用是根據url查找控制器,如上url被查找的控制器爲:hello
  6. HandlerExcution將解析後的信息傳遞給DispatcherServlet,如解析控制器映射等。
  7. HandlerAdapter表示處理器適配器,其按照特定的規則去執行Handler。
  8. Handler讓具體的Controller執行
  9. Controller將具體的執行信息返回給HandlerAdapter,如ModelAndView.
  10. HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherServlet
  11. DispatcherServlet調用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名。
  12. 視圖解析器將解析的邏輯視圖名傳給DispatcherServlet。
  13. DispatcherServlet根據視圖解析器解析的視圖結果,調用具體的視圖。
  14. 最終將視圖呈現給用戶

這樣是不是明白,下面用對應的代碼來實現

實現代碼

  1. 第1、2、3步
    <!--/ 匹配所有的請求;(不包括.jsp)-->
    <!--/* 匹配所有的請求;(包括.jsp)-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--Handler-->
    <bean id="/hello" class="cn.at99guoke.conn.HelloController"/>
  1. 第4、5、6、7、8
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>


package cn.at99guoke.conn;

import org.springframework.web.servlet.ModelAndView;
        import org.springframework.web.servlet.mvc.Controller;

        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;

//注意:這裏我們先導入Controller接口
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //ModelAndView 模型和視圖
        ModelAndView mv = new ModelAndView();

        //業務層

        //封裝對象,放在ModelAndView中。Model
        mv.addObject("msg","HelloSpringMVC!");
        //封裝要跳轉的視圖,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
        return mv;
    }

}
  1. 最後幾步


    <!--視圖解析器:DispatcherServlet給他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前綴-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--後綴-->
        <property name="suffix" value=".jsp"/>
    </bean>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章