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);
最終返回給使用者,呈現在瀏覽器上