SpringMVC框架
1.SpringMVC
2.请求-响应模型
3.mvc模型
3.1 组件:
五大组件及作用
DispatcherServlet
DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
HandlerMapping
HandlerMapping 是处理器映射,它的作用是请求派发,负责请求和控制器建立对应的关系。它是由 DispatcherServlet 调用,DispatcherServlet 会从容器中取出所有 HandlerMapping 实例并遍历,让 HandlerMapping 实例根据自己实现类的方式去尝试查找 Handler。也就是说,DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean,这个Bean的名字为“HandlerMapping”。
Controller
控制器,负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
ModelAndView
封装数据信息和视图信息的模型。使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。
ViewResolver
视图解析器,ViewResolver 的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。
3.2 配置解析
1 <web-app> 2 <servlet> 3 <!-- 加载前端控制器 --> 4 <servlet-name>springmvc</servlet-name> 5 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 6 <!-- 7 加载配置文件 8 默认加载规范: 9 * 文件命名:servlet-name-servlet.xml====springmvc-servlet.xml 10 * 路径规范:必须在WEB-INF目录下面 11 修改加载路径: 12 --> 13 <init-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>classpath:springmvc.xml</param-value> 16 </init-param> 17 </servlet> 18 <servlet-mapping> 19 <servlet-name>springmvc</servlet-name> 20 <url-pattern>*.do</url-pattern> 21 </servlet-mapping> 22 </web-app>
1 <beans> 2 <!-- 配置映射处理器:根据bean(自定义Controller)的name属性的url去寻找handler;springmvc默认的映射处理器是BeanNameUrlHandlerMapping--> 3 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> 4 5 <!-- 配置处理器适配器来执行Controller ,springmvc默认的是SimpleControllerHandlerAdapter 6 --> 7 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> 8 9 <!-- 配置sprigmvc视图解析器:解析逻辑视图; 10 后台返回逻辑视图:index 11 视图解析器解析出真正物理视图:前缀+逻辑视图+后缀====/WEB-INF/jsps/index.jsp 12 --> 13 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 14 <property name="prefix" value="/WEB-INF/jsps/"></property> 15 <property name="suffix" value=".jsp"></property> 16 </bean> 17 </beans>
1 @Controller 2 @RequestMapping("/mvc") 3 public class MyController implements Controller{ 4 5 @PostMapping("/request") 6 public ModelAndView handleRequest(HttpServletRequest arg0, 7 HttpServletResponse arg1) throws Exception { 8 ModelAndView mv = new ModelAndView(); 9 //设置页面回显数据 10 mv.addObject("hello", "欢迎学习springmvc!"); 11 12 //返回物理视图 13 //mv.setViewName("/WEB-INF/jsps/index.jsp"); 14 15 //返回逻辑视图 16 mv.setViewName("index"); 17 return mv; 18 } 19 }