Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架。
SpringMVC是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互。
SpringMVC本质工作:接收并解析请求,处理请求,数据渲染、响应请求。
SpringMVC概述
Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架,是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互。
SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。
SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。
SpringMVC优势
严格遵守了MVC分层思想;
采用了松耦合、插件式结构;相比较于我们封装的BaseServlet以及其他的一些MVC框架来说更灵活、更具扩展性;
SpringMVC是基于Spring的扩展、提供了一套完善的MVC注解;
SpringMVC在数据绑定、视图解析都提供了多种处理方式,可灵活配置;
SpringMVC对RESTful URL设计方法提供了良好的支持。
SpringMVC本质工作
SpringMVC开发步骤
需求:客户端发起请求,服务器端接收请求,执行逻辑并进行视图跳转。
开发步骤:
- 导入SpringMVC相关坐标
- 配置SpringMVC核心控制器DispathcerServlet
- 创建Controller类和视图页面
- 使用注解配置Controller类中业务方法的映射地址
- 配置SpringMVC核心文件 spring-mvc.xml
- 客户端发起请求测试
案例一
1. 基于Maven创建一个web工程
SpringMVC是一个web框架,应用在web工程中。
2. 添加SpringMVC依赖
- spring-context
- spring-aspects
- spring-jdbc
- spring-test
- spring-web
- spring-webmvc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <properties> <spring.version>5.2.13.RELEASE</spring.version> </properties>
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency>
</dependencies>
|
3. 创建SpringMVC配置文件
- 在resources目录下创建名为
spring-servlet.xml
的文件;
- 添加MVC命名空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:annotation-config/> <context:component-scan base-package="cc.gaojie"/>
<mvc:annotation-driven/>
</beans>
|
4. 在web.xml中配置SpringMVC的前端控制器
SpringMVC提供了一个名为DispatcherServlet的类(SpringMVC前端控制器),用于拦截用户请求交由SpringMVC处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<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-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
</web-app>
|
5. 创建控制器
在SpringMVC中,我们把接收用户请求、处理用户请求的类称之为Controlelr(控制器)。
1. 创建控制器类
创建一个名为cc.gaojie.controllers
的包(包需要在Spring注解扫描的范围内);
创建一个类(无需做任何的继承和实现);
在类上添加@Controller
注解声明此类为SpringMVC的控制器;
在类上添加@RequestMapping("url")
声明此控制器类的请求url(可以省略)。
1 2 3 4 5
| @Controller @RequestMapping("/book") public class BookController {
}
|
2. 在控制器类中定义处理请求的方法
- 在一个控制器类中可以定于多个方法处理不同的请求。
- 在每个方法上添加
@RequestMapping("url")
用于声明当前方法请求的url。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Controller @RequestMapping("/book") public class BookServlet {
@RequestMapping("/add") public void addBook(){ System.out.println("------>Book Add !"); }
@RequestMapping("/list") public void listBooks(){ System.out.println("------>Book List!"); } }
|
6. 客户端发起请求测试
案例二
1. 导入Spring和SpringMVC的坐标
1 2 3 4 5 6 7 8 9 10
| <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.13.RELEASE</version> </dependency>
<groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.13.RELEASE</version> </dependency>
|
2. 配置SpringMVC核心控制器DispathcerServlet
1 2 3 4 5 6 7 8 9 10
| <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
|
3. 创建Controller类和视图页面
1 2 3 4 5 6 7
| public class UserController {
public String sava() { System.out.println("Controller save running……"); return "success.jsp"; } }
|
1 2 3 4 5 6 7 8 9
| <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>Hello SpringMVC!</h1> </body> </html>
|
4. 使用注解配置Controller类中业务方法的映射地址
1 2 3 4 5 6 7 8 9
| @Controller public class UserController {
@RequestMapping("/quick") public String sava() { System.out.println("Controller save running……"); return "success.jsp"; } }
|
5. 配置SpringMVC核心文件 spring-mvc.xml
1 2 3 4 5 6 7 8 9 10 11
| <?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="cc.gaojie.controller"/> </beans>
|
6. 客户端发起请求测试
SpringMVC流程图示
开发步骤
- 导入SpringMVC相关坐标
- 配置SpringMVC核心控制器DispathcerServlet
- 创建Controller类和视图页面
- 使用注解配置Controller类中业务方法的映射地址
- 配置SpringMVC核心文件 spring-mvc.xml
- 客户端发起请求测试
代码分析
流程图示