一、 Introduction
springMVC是spring的一个组成部分,天然具备了spring的IoC的松耦合的特点及其他优点,是一个MVC模式下的web框架。SpringMVC对于mvc设计的实现围绕其核心组件DispatcherServlet展开,DispatcherServlet可以看做是处理web端请求和响应的中央处理器或者核心调度器。从数据流向来看,它接受请求,向下分发调度,并将最终的处理结果的视图响应给请求源。在向下调度请求任务过程中,主要是通过与HandlerMapping(处理器映射器)、Handler(处理器)、HandlerAdapter(处理器适配器)、ViewReslover(视图解析器)等的数据交互,完成请求过程,形成响应结果。DispatcherServlet本质上一个功能强大的servlet。因为servlet的核心功能即处理请求与响应,而DispatherServlet的核心功能也是处理请求与响应,它的强大在于从具体的处理工作中脱离出来,而是调度它的小弟完成处理的动作,它主要负责与源端的交接以及请求流的调控。所以,在web.xml中配置它为servlet。
在DispatcherServlet的组件中:
1. HandlerMapping,将用户请求的url映射给Handler。Handler是一个统称,一个一个具体的Controller(控制器)构成了Handler,而HandlerMapping将url映射到Controller中具体的业务单元。实际中,通过@Controller和@RequestMapping()等注释实现。
2. 显然,Controller中的方法,可以通过原始request和response的方法,实现与view的交互,然而,这将失去框架低耦合、高内聚的优势。框架设计的宗旨,必然要将其中的某些执行进行封装或者其他处理,这个就是HandlerAdapter的由来。HandlerAdapter组件使得Controller中的处理单元可以享有一些特别的方法,相比框架前操作。
3. 从HandlerAdapter处理过的数据,必然与框架前的数据有区别的,如果直接给视图,如jsp,使用,恐怕会出现问题。所以,ViewResolver应运而生,可以看做ViewResolver是HandlerAdapter在v部分的延续,或者看做是m和v的一个交接媒介。
不难看出,上述3大组件在springMVC中的重要地位。
二、 使用步骤
1. 创建web工程
2. 导入需要的jar包
3. 配置springMVC的配置文件,注意tomcat默认从web根目录下读取springMVC的配置文件,所以请将DispatcherServlet的上下文配置文件地址改为classpath:XXX.xml
4. 配置web.xml文件
5. 创建控制器类
6. 创建前端jsp文件
7. 例子
配置springMVC文件
<?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:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 开启注解扫描 -->
<context:component-scanbase-package="com.springmvc.controller"></context:component-scan>
</beans>
配置xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0">
<display-name>springMVC</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 配置springMVC的DispathcerServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- tomcat默认从web根目录下找springmvc的配置文件。需要配置这个servlet的config,将上下文配置文件的地址改为classpath下的springmvc.xml的文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
创建控制器类
//springMVCjar包支持下,@Controller作用将类注解为控制器
@Controller
public classItemsController {
@RequestMapping("/itemList")
public ModelAndViewitemlist()throws Exception{
List<Items> ilist=newArrayList<Items>();
Items li1=new Items();
li1.setName("haha");
li1.setCreatetime(new Date());
li1.setDetail("hhhhh快快快快快快");
li1.setPrice(11f);
Items li2=new Items();
li2.setName("2222");
li2.setCreatetime(new Date());
li2.setDetail("22222");
li2.setPrice(22f);
ilist.add(li1);
ilist.add(li2);
ModelAndView mav=newModelAndView();
mav.addObject("itemList",ilist);
mav.setViewName("/WEB-INF/jsp/itemList.jsp");
return mav;
}
}
创建jsp和测试略
关于springMVC的其他使用,见:点击打开链接