一,springMVC简介
springMVC和Struts2都属于表现层框架,它是spring家族的一个小模块。使用简单,学习成本低。
核心前端控制器:dispatcherServlet
二,入门案例
场景:浏览器输入 list.action 跳转到一个商品列表页面
1.创建web工程
创建一个动态的web项目
2.添加jar包
springMVC、spring、junit
3.配置前端控制器
在web.xml里配置
<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:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- /* :过滤所有请求 包含jsp-->
<!-- / :过滤所有请求 不包含jsp-->
<!-- *.action : 过滤以.action结尾的请求-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
4.添加springmvc.xml
添加约束头
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
</beans>
5.创建一个商品pojo
public class Items {
private Integer id;
private String name;
private Float price;
private String pic;
private Date createtime;
private String detail;
//set和get方法。。。
6.创建一个商品Controller
传统方式:实现一个Controller接口
public class ItemsController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//模拟数据
List<Items> list = new ArrayList<Items>();
for (int i = 0; i < 10; i++) {
Items items = new Items();
items.setId(i);
items.setName("小米"+i);
items.setCreatetime(new Date());
items.setDetail("国产好手机");
items.setPrice((float) (1000*i));
list.add(items);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemList", list); //相当于把数据放入request域中
//逻辑视图:就是jsp路径
modelAndView.setViewName("/WEB-INF/jsp/itemsList.jsp");
return modelAndView;
}
}
注解方式:添加一个@Controller标签
@Controller
public class ItemsController2 {
@RequestMapping("/list")
public ModelAndView list(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//模拟数据
List<Items> list = new ArrayList<Items>();
for (int i = 0; i < 10; i++) {
Items items = new Items();
items.setId(i);
items.setName("紅米"+i);
items.setCreatetime(new Date());
items.setDetail("国产好手机");
items.setPrice((float) (1000*i));
list.add(items);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemList", list); //相当于把数据放入request域中
//逻辑视图:就是jsp路径
modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");
return modelAndView;
}
}
7.创建一个jsp页面
部分页面代码
</table>
商品列表:
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td>商品价格</td>
<td>生产日期</td>
<td>商品描述</td>
<td>操作</td>
</tr>
<c:forEach items="${itemList }" var="item">
<tr>
<td>${item.name }</td>
<td>${item.price }</td>
<td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td>${item.detail }</td>
<td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>
</tr>
</c:forEach>
</table>
8.配置springmvc.xml
传统方式:把Controller配置到springmvc.xml中
<bean name="/list.action" class="com.djc.controller.ItemsController"></bean>
注解方式:开启包扫描
<context:component-scan base-package="com.djc.controller"></context:component-scan>
9.tomcat测试
把项目放入Tomcat中,启动后浏览器输入http://localhost:8080/spring01/list.action
三,springMVC完整架构图
1.springmvc三大核心组件:
1、处理器映射器
HandlerMapping:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(传统开发方式)
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping(过时的注解开发方式)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping(最新版本的注解开发方式)
2、处理器适配器
HandlerAdapter:
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter(传统开发方式)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter(过时的注解开发方式)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter(最新版本的注解开发方式)
3、注解驱动 mvc:annotation-driven/ 代替了上述两个
4、视图解析器
ViewResolver:
org.springframework.web.servlet.view.InternalResourceViewResolver
2.使用新版映射器和适配器配置
<!-- 配置最注解开发方式新版本的处理器映射器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
配置最注解开发方式新版本的处理器适配器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
-->
<!-- 注解驱动 目的:加载新版本的处理器映射器、处理器适配器-->
<mvc:annotation-driven/>
3.配置视图解析器的前缀和后缀
<!-- 配置视图解析器的前缀和后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>