springMVC 的生命周期,听到的时候都没有反应过来,springMVC 还有生命周期? 现在看来生命周期就是 springMVC 的流程,SpringMVC 是 MVC 思想的一种实现,下面看一下 MVC 思想的流程图:
MVC 的核心思想如上图,那么 springMVC 是如何实现 MVC 的思想的呢
第一步:发起请求到前端控制器 (DispatcherServlet)
第二步:前端控制器请求 HandlerMapping(处理器映射器) 查找 Handler
可以根据 xml 配置、注解进行查找
第三步:处理器映射器 HandlerMapping 向前端控制器返回 Handler
第四步:前端控制器调用处理器适配器去执行 Handler
第五步:处理器适配器去执行 Handler
第六步:Handler 执行完成给适配器返回 ModelAndView
第七步:处理器适配器向前端控制器返回 ModelAndView
ModelAndView 是 springmvc 框架的一个底层对象,包括 Model 和 view
第八步:前端控制器请求视图解析器去进行视图解析
根据逻辑视图名解析成真正的视图 (jsp)
第九步:视图解析器向前端控制器返回 View
第十步:前端控制器进行视图渲染
视图渲染将模型数据 (在 ModelAndView 对象中) 填充到 request 域
第十一步:前端控制器向用户响应结果
代码示例
(1) 在 web-INF/web.xml 中加入如下代码:
- dispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath*:spring-servlet.xml1dispatcherServlet*.html
上述的配置的就是前端控制器 DispatcherServlet,在 servlet-mapping 配置了 *.html,意味着所有以. html 结尾的请求多会通过这个 servlet。当 dispatcherServlet 启动时,会默认在 web-info 目录下查找一个 spring-servlet.xml 的配置文件,上面我们通过显示指定了这个文件的位置,即在类路径底下的 spring-servlet.xml。如果我们没有指定配置文件的名称 Spring 会在 web 应用的 WEB-INF 文件夹下寻找名为 [servlet-name]-servlet.xml 的配置文件如 dispatcher-servlet.xml
(2) 在类路径底下添加 spring-servlet.xml 文件
上面这个文件,我们定义了一个 context 标签,这样的标签定义了以后,当 spring 在启动时,会加载 com.pango.spring.helloworld.controller 这个包下及子包下的所有的组件 (这是包的自动扫描机制,即 spring 会将标有 @Controller @Component 等类加载到 spring 容器管理中)。
后面配置了 bean 标签,ViewResolver 是一个试图解析器,就是 springMVC 生命周期中的第五步,当我们从后端控制器中返回的视图时,前端控制器就根据这一段配置来返回一个具体的视图,如后端控制返回的是一个 hello,根据上面的配置,最后前端控制器会组并成这样的一个址:/web-inf/jsp/hello.jsp, 然后从 / web-inf/jsp / 这个目录下面查找一个 hello.jsp 返回客户端。
(3) 在包底下写一个 HelloWorldController 的类
- @Controllerpublic class HelloWorldController {@RequestMapping(value = "/hello") public String sayHello(ModelMap modelMap) {
- modelMap.put("sayHello", "hello world");
- return "/hello";
- }
- }
Controller 即声明这个类是一个控制器,上面第二部分我们说明了,只要加了 @Controller 标示的,spring 会通过自动扫描机制,将这个类纳入 spring 容器管理中。@RequestMapping(value="/hello"),这个定义的就是一个请求路径,只要符合 / hello 路径的都会交给这个控制器的 sayhello 方法来处理。最后我们返回 / hello 的视图给客户端。
小结
初步的了解了一下 Java 中 springMVC 的生命周期,它是 MVC 思想的一种实现,之前听过 MVC 是一种设计模式,但是在经典的 23 个设计模式中并没有 MVC 模式,它其实是观察者模式 (Observer)(Pub/Sub), 策略模式(Strategy) 和组合模式 (Composite) 的一个整合,详细的可以进一步研究。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-15/18801110.html