SpingMVC 执行的流程
一:SpringMVC的開發步驟
①:在web.xml文件中定義前端控制器DispatcherServlet來攔截用戶請求。
由于Web應用是基于請求/響應結構的應用,所以不管哪個MVC Web框架,都需要在web.xml中配置該框架的核心Servlet或Filter,這樣才可以讓該框架介入web應用中。
<!-- 定義Spring MVC的前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<sevlet-class>org.springframework.web.servlet.DispacherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-stratup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
②:如果要以POST方式提交請求,則定義包含表單數據的JSP頁面。如果僅僅只是以GET方式發送請求,則無需經過這一步。
③:定義處理用戶請求的Handle類,可以實現Controller接口或者使用@Controller注解。
④:配置Handle
<!--配置Handle,映射“/hello”請求-->
<bean name="/hello" class="org.fkit.controller.HelloController" />
或者使用注解來配置
@Controller
public class HelloController{
@RequestMapping(value="/hello")
public ModelAndView hello(){
.......
}
}
⑤:編寫視圖資源
當Handle處理用戶請求結束后,通常會返回一個ModelAndView對象,該對象中應該包含返回的視圖名或視圖名的模型。
二:SpringMVC的執行步驟
?
①:用戶向服務器發送請求,請求被Spring的前端控制器DispatcherServlet截獲。
②:DispatcherServlet對請求的URL進行解析,得到URI。然后根據該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象,包括Handler對象以及Handler對象對應的攔截器,這些對象會被封裝到一個HandlerExceptionChain對象當中返回。
③:DispatcherServlet根據獲得的Handler,選擇一個合適的HandlerAdapter。HandlerAda,pter的設計符合面向對象中的單一職責原則,代碼架構清晰,便于維護,最重要的是,代碼可復用性高。HandlerAdapter會被用于處理多種handler,調用Handler實際處理請求的方法,例如hello方法。
④:提取請求中的模型數據,開始執行Handler(Controller)。在填充Handler的入參過程中,根據配置,spring 將幫你做一些額外的工作。
-->消息轉換。將請求消息(如Json、xml等數據)轉換成一個對象,將對象轉換成指定的響應信息。
-->數據轉換。對請求笑死進行數據轉換,如String 轉換成Integer、Double等。
-->數據格式化。對請求消息進行數據格式化,如將字符串轉換成格式化數字或格式化日期等。
-->數據驗證。驗證數據的有效性(如長度、格式等),驗證結果存儲到BindingResult或error中。
⑤:Handler執行完成后,向DispatcherServler但會一個ModelAndView對象,ModelAndView對象中應該包含視圖名或視圖名和模型。
⑥:根據返回的ModelAndView對象,選擇一個合適的ViewResolver(視圖解析器)返回給DispatcherServlet。
⑦:ViewResolver結合Model 和View來渲染視圖。
⑧:將視圖渲染結果返回給客戶端
轉載于:https://www.cnblogs.com/gaofz/p/7201138.html
總結
以上是生活随笔為你收集整理的SpingMVC 执行的流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: namespace for c++
- 下一篇: 团队随笔汇总