一、什么是SpringMVC
Spring MVC属于SpringFrameWork的后续产品,是基于Web层的一种MVC框架,是spring的一个模块,拥有spring的特性,Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,SpringMVC提高了程序的耦合性。
二、SpringMVC组成
SpringMVC主要由前端控制器、处理映射器、处理器适配器、处理器、视图解析器、视图组成的。
- 前端控制器(DispatcherServlet):负责任务的分配。
- 处理器映射器(HandlerMapping):接收前端控制器的请求后,对url进行匹配,返回给前端控制器一个处理器执行链。
- 处理器适配器(HandlerAdaptor):接收到前端控制器要寻找的Handler,选择对应的Handler进行执行,执行后返回ModelAndView给前端控制器。
- 处理器(Handler):执行处理器适配器发送的任务,返回ModelAndView给处理器适配器。
- 视图解析器(Viewresolver):接收前端控制器发送来的逻辑视图。(ModelAndView),转换为真正的视图,返回给前端控制器供其渲染。
- 视图(View):经过视图解析器生成的视图,经前端控制器渲染后发送到请求方。
三、SpringMVC入门程序
- 创建Maven项目
- 导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>SpringMVC</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>SpringMVC Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--SpringMVC依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.17.RELEASE</version>
</dependency>
</dependencies>
</project>
- web.xml配置前端控制器和编码过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--配置前端控制器-->
<servlet>
<servlet-name>dispathcherServlet</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>
<load-on-startup>1</load-on-startup>
</servlet>
<!--请求拦截-->
<servlet-mapping>
<servlet-name>dispathcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--配置编码过滤器-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter