1. 程式人生 > >Spring MVC 工作流程詳解

Spring MVC 工作流程詳解

1.首先先來一張圖

開始流程----------------》

1.使用者傳送請求到前端控制器,前端控制器會過濾使用者的請求,例如我們在web.xml裡面配置的內容;

<!-- 配置SpringMVC核心控制器 -->   <servlet>     <servlet-name>springMVC</servlet-name>

    //前端控制器是一個Servlet      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>       <param-name>contextConfigLocation</param-name>       <param-value>classpath*:config/spring-mvc.xml</param-value>     </init-param>     <!-- 啟動載入一次 -->     <load-on-startup>1</load-on-startup>   </servlet>

<servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!-- 此處可以可以配置成*.do
--> <url-pattern>/</url-pattern> </servlet-mapping>

這裡表示過濾以/開始的所有請求

2-3.前端控制器會找到處理器對映器(HandlerMapping),簡單來說就是它會去找你配置好@Controller ,然後把請求的url 與處理器繫結在一起

@Controllerpublic class UserCon {

@Autowired private UserService userService;

@ResponseBody @RequestMapping(method = RequestMethod.POST, value = "/login")   public String login(HttpServletRequest request) {

  String phone = request.getParameter("phone");   String password = request.getParameter("password");   boolean b = userService.login(phone, password);   if (b) {     return "true";   }     return "false";

}

這裡繫結url就是/login 這裡吧login和login()方法繫結在一起,並且返回這個繫結後的Map集合

4-5 HandlerAdapter 會將Map集合中的Login()拿出來交給Handler處理器

5-6 Handler處理器處理程式碼最終會處理器會返回一個ModelAndView物件給HandlerAdapter(這裡不返回檢視,直接返回String)

7-8 通過HandlerAdapter將ModelAndView物件返回給前端控制器(DispatcherServlet)

9-10 前端控制器請求檢視解析器(ViewResolver)去進行檢視解析,根據邏輯檢視名解析成真正的檢視(jsp);

最終返回給使用者,呈現在瀏覽器上