SpringMVC-day01
1.SpringMVC简介
SpringMVC和struct2一样属于控制层框架.
2.SpringMVC配置文件
1.1springMVC.xml,是SpringMVC的核心配置文件 .
需要开启注解扫描,可以扫描各层的注解(Controller,Service等)
<content:component-scan base-package="要扫描的包">
1.2 web.xml中的配置
SpringMVC的核心为前端控制器,就和struct2的核心为过滤器一样.
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> //指定SpringMVC的核心配置文件的位置 <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-partten>*.action</url-partten> </servlet-mapping>
url-partten标签内部的过滤方式
- *.action拦截以action结尾的所有请求 不建议使用
- /* 拦截所有请求,包括js,jsp.css //一般用在后台系统中
- / 拦截所有(不包含jsp)(包含.css,jsp) //用在前台系统中
3.一个简单的controller程序.
@Controller public class ItemController { // @RequestMapping:里面放的是请求的url,和用户请求的url进行匹配 // action可以写也可以不写 @RequestMapping("/itemList.action") public ModelAndView queryItemList() { // 创建页面需要显示的商品数据 List<Item> list = new ArrayList<>(); list.add(new Item(1, "1华为 荣耀8", 2399, new Date(), "质量好!1")); list.add(new Item(2, "2华为 荣耀8", 2399, new Date(), "质量好!2")); list.add(new Item(3, "3华为 荣耀8", 2399, new Date(), "质量好!3")); list.add(new Item(4, "4华为 荣耀8", 2399, new Date(), "质量好!4")); list.add(new Item(5, "5华为 荣耀8", 2399, new Date(), "质量好!5")); list.add(new Item(6, "6华为 荣耀8", 2399, new Date(), "质量好!6")); // 创建ModelAndView,用来存放数据和视图 ModelAndView modelAndView = new ModelAndView(); // 设置数据到模型中 modelAndView.addObject("list", list); // 设置视图jsp,需要设置视图的物理地址 modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp"); return modelAndView; } }
此方法不用实现任何借口或者继承任何父类,只需要打上注解@Controller
方法上面打上映射的注解@RequestMapping("请求地址")
类ModelAndView用来存放数据和视图.
4.SpringMVC的架构

架构流程:前端控制器DispatcherServlet拦截到请求后.条用处理器映射器HandlerMapper,来分析请求,找到需要执行的方法,返回前端控制器DispatcherServlet需要处理的执行链,前端控制器调用适配器 HandlerAdapter,处理器适配器调用处理器来执行Handler ,返回ModelAndView对象.前端控制器将ModelAndView对象传递给视图解析器ViewResolver,视图解析器解析完成后返回View对象.最后前端控制器对View对象进行渲染.将结果响应给用户.
5.SpringMVC的组件
DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。
Handler:处理器
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。 由于Handler涉及到具体的用户业务请求,所以一般情 况需要程序员根据业务需求开发Handler。
处理器映射器:HandlerMapping
HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
处理器适配器:HandlerAdapter
视图解析器:ViewResolver
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面 展示给用户。
View :视图
springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
6.注解扫描器
在springMVC.xml 已经开启注解扫描.可以使用注解进行将对象交由Spring管理
7.springMVC.xml中注解映射器和适配器的配置.
1.注解映射器
<!-- 配置处理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
@RequestMapping("请求路径名称")
2.配置适配器
<!-- 配置处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
3.开启注解驱动
直接配置处理器映射器和处理器适配器比较麻烦,可以使用注解驱动来加载。SpringMVC使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。
<!-- 注解驱动 -->
<mvc:annotation-driven />
4.视图解析器
<!-- 配置视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置逻辑视图的前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 配置逻辑视图的后缀 -->
<property name="suffix" value=".jsp" />
</bean>
可以不用配置,写完整路径名

浙公网安备 33010602011771号