springMVC的生命周期,听到的时候都没有反应过来,springMVC还有生命周期?现在看来生命周期就是springMVC的流程,springMVC是MVC思想的一种实现,下面看一下MVC思想的流程图:
MVC的核心思想如上图,那么springMVC是如何实现MVC的思想的呢?
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping(处理器映射器)查找处理
可以根据xml配置,注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回处理
第四步:前端控制器调用处理器适配器去执行处理
第五步:处理器适配器去执行处理
第六步:处理程序执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一个底层对象,包括模型和视图
第八步:前端控制器请求视图解析器去进行视图解析
根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回视图
第十步:前端控制器进行视图渲染
视图渲染将模型数据(在ModelAndView对象中)填充到请求域
第十一步:前端控制器向用户响应结果
代码示例
(1)在web - inf/web . xml中加入如下代码:
& lt; servlet> & lt; servlet-name> dispatcherServlet & lt; servlet-class> org.springframework.web.servlet.DispatcherServlet & lt; init-param> & lt; param-name> contextConfigLocation & lt; param-value> classpath *: spring-servlet.xml & lt;/param-value> & lt;/init-param> & lt; load-on-startup> 1 & lt;/load-on-startup> & lt;/servlet> & lt; servlet-mapping> & lt; servlet-name> dispatcherServlet & lt; url-pattern> * .html & lt;/servlet-mapping>
上述的配置的就是前端控制器DispatcherServlet,在servlet映射配置了* . html,意味着所有以. html结尾的请求多会通过这个servlet。当DispatcherServlet启动时,会默认在网络信息目录下查找一个spring-servlet.xml的配置文件,上面我们通过显示指定了这个文件的位置,即在类路径底下的spring-servlet.xml。如果我们没有指定配置文件的名称春天会在web应用的- inf文件夹下寻找名为[servlet-name] -servlet.xml的配置文件如dispatcher-servlet。xml
(2)在类路径底下添加spring-servlet.xml文件
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;豆类xmlns=" http://www.springframework.org/schema/beans "比; & lt;上下文:component-scan基础包=" com.pango.spring.helloworld。控制器”/比; & lt; bean id=皏iewResolver”类=皁rg.springframework.web.servlet.view.UrlBasedViewResolver”比; & lt;属性名=" viewClass " value=" https://www.yisu.com/zixun/org.springframework.web.servlet.view.JstlView "/比; & lt;属性名="前缀" value=" https://www.yisu.com/WEB-INF/jsp/"/比; & lt;属性名="后缀" value=" https://www.yisu.com/zixun/.jsp "/比; & lt;/bean> & lt;/beans>>之前上面这个文件,我们定义了一个上下文标签,这样的标签定义了以后,当春天在启动时,会加载com.pango.spring.helloworld。控制器这个包下及子包下的所有的组件(这是包的自动扫描机制,即弹簧会将标有@ controller @ component等类加载到春容器管理中)。
后面配置了bean标签,ViewResolver是一个试图解析器,就是springMVC生命周期中的第五步,当我们从后端控制器中返回的视图时,前端控制器就根据这一段配置来返回一个具体的视图,如后端控制返回的是一个你好,根据上面的配置,最后前端控制器会组并成这样的一个址:/web - inf/jsp/hello.jsp,然后从/web - inf/jsp/这个目录下面查找一个你好。jsp返回客户端。
(3)在包底下写一个HelloWorldController的类
@ controller 公开课HelloWorldController { @RequestMapping (value=" https://www.yisu.com/hello ") 公共字符串sayHello (ModelMap ModelMap) { modelMap。把(“sayHello”、“hello world”); 返回"/hello”; } }springMVC的生命周期详解