01_SpringMvc的概述
- SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。
- SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控 制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。
02_入门案例
A.创建web工程
B.导入jar包,在上一章基础上新加
C.配置前端控制器DispatcherServlet
<servlet>
<servlet‐name>springmvc</servlet‐name>
<servlet‐class>org.springframework.web.servlet.DispatcherServlet</servlet‐class>
<init‐param>
<param‐name>contextConfigLocation</param‐name>
<param‐value>classpath:spring‐mvc.xml</param‐value>
</init‐param>
</servlet>
<servlet‐mapping>
<servlet‐name>springmvc</servlet‐name>
<url‐pattern>*.do</url‐pattern>
</servlet‐mapping>
D.创建Controller层类
@Controller
public class UserController {
@RequestMapping(value="/selectuserlist.do")
public ModelAndView selectUserList(){
System.out.println("selectUserList");
List<User> users = new ArrayList<User>();
users.add(new User(1L, "root1", "root1"));
users.add(new User(2L, "root2", "root2"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("users", users);
modelAndView.setViewName("/index.jsp");
return modelAndView;
}
}
E.创建spring-mvc.xml核心配置文件
<context:component‐scan base‐package="com.qzw"/>
F.创建jsp页面
<body>
<table>
<tr>
<td>编号</td>
<td>用户</td>
<td>密码</td>
</tr>
<c:forEach items="${users }" var="user">
<tr>
<td>${user.id }</td>
<td>${user.username }</td>
<td>${user.password }</td>
</tr>
</c:forEach>
</table>
</body>
03_SpringMVC的执行流程
1, 用户发送请求至前端控制器DispatcherServlet
2, DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3, 返回处理器执行链HandlerExecutionChain。
4, DispatcherServlet通过HandlerAdapter处理器适配器调用合适的处理器
5, 执行处理器handler
6, handler执行完成返回ModelAndView(数据及视图)
7, HandlerAdapter将果ModelAndView返回给
DispatcherServlet
8, DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9, ViewReslover解析后返回具体View对象
10, DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11, DispatcherServlet响应用户
04_SpringMVC组件说明
DispatcherServlet:前端控制器
- 前端控制器用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整 个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组 件之间的耦合性。
HandlerMapping:处理器映射器
- 处理器映射器HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供 了不同的映射器实现不同的映射方式,
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
HandlerAdapter:处理器适配器
- 通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对 更多类型的处理器进行执行。
ViewResolver:视图解析器
- View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成 物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通 过页面展示给用户。
Handler:处理器
- 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler 对具体的用户请求进行处理。
SpringMvc默认加载的组件
- 在org.springframework.web.servlet目录下DispatcherServlet.properties文件中有设置 SpringMVC的默认组件.
- 设置的常用组件有:HandlerMapping(处理器映射器),HandlerAdapter(处理器适配 器),ViewResolver(视图解析器).
05_核心组件配置
HandlerMapping配置
- 注解式处理器映射器,对类中标记@ResquestMapping的方法进行映射,根据 ResquestMapping定义的url匹配方法
- 从spring3.1版本开始,废除了DefaultAnnotationHandlerMapping的使用,推荐使用 RequestMappingHandlerMapping完成注解式处理器映射。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping "/>
HandlerAdapter配置
- 注解式处理器适配器,对标记@ResquestMapping的方法对应的处理器类型进行适配。 从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用 RequestMappingHandlerAdapter完成注解式处理器适配。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter "/>
< mvc:annotation-driven >配置
- springmvc使用< mvc:annotation-driven >自动加载RequestMappingHandlerMapping和 RequestMappingHandlerAdapter,可用在springmvc.xml配置文件中使用 < mvc:annotation-driven >替代注解处理器和适配器的配置。
视图解析器配置
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"value="/jsp/"/>
<property name="suffix"value=".jsp"/>
</bean>