1、什么是 SpringMVC
-
MVC 是一种设计模式,即model-view-controller。而 SpringMVC 是一种基于 Java 实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)等,属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
-
SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。
2、为什么要使用 SpringMVC
SpringMVC的优点:
- 进行更简洁的Web层的开发
- 天生与Spring框架集成(如IOC容器、AOP等)
- 提供强大的约定大于配置的契约式编程支持
- 非常灵活的数据验证、格式化和数据绑定机制
- 支持Restful风格
- 清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。
我们在web层的servlet中做了很多操作,例如接受请求、获取请求中的参数、实例化实体类和调用 service 层方法等等。我们可以将这些操作分为共有行为和特有行为,而 SpringMVC就是将共有行为抽取出来,这种被抽取的共有行为一般称为前端控制器,具体的抽取过程由 SpringMVC 实现。
3、SpringMVC的开发步骤
我们可以简单的将 SpringMVC 开发分为四个步骤:
-
导入 SpringMVC 相关依赖:除了要导入 SpringMVC 的包,还要导入jsp、servlet和content三个包。
<!-- 在 pom.xml 文件中--> <!--Servlet坐标--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <!--Jsp坐标--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency> <!--SpringMVC坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!--Spring坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE</version> </dependency>
-
配置 SpringMVC 核心控制器
DispathcerServlet
:在之前我们提到过前端控制器,DispathcerServlet 就是 SpringMVC 的前端控制器,配置核心控制器的方式有很多种,下面我们会介绍一种比较简单的。<!-- 配置spring 和web 的集成环境 --> <!-- ContextLoaderListener监听器由 spring 提供 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--全局参数,用于告诉监听器 Spring 配置文件的地址--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 配置 DispatcherServlet --> <servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--使用 DispatcherServlet 需要用到的参数--> <!--告诉 DispatcherServlet SpringMVC配置文件的地址 --> <init-param> <!-- contextConfigLocation 由springMVC提供,是固定值 --> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring_mvc.xml</param-value> </init-param> <!--将 DispatcherServlet初始化时间提前到服务器启动时 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
这种配置方式是使用带有应用程序上下文层次结构的方式完成对 SpringMVC 核心控制器 DispathcerServlet 的配置。这种方式的基础是在Spring与web环境集成之上进行的。
-
创建 Controller 类并进行注解配置:Controller 类就是用于出来请求的后端控制器,在 SpringMVC 中 Controller 类是我们需要编写的核心。
-
配置 SpringMVC的配置文件:为了避免配置混淆,一般将与 Spring 有关配置项放在一个配置文件中,与 SpringMVC 有关配置项放在一个配置文件中。因为 Controller 类使用了注解,所以要配置组件扫描,并且扫描的范围是存放 Controller 的包。
<?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/content/spring-context.xsd"> <!-- 组价扫描 --> <context:component-scan base-package="存放 Controller 包的全限定名"/> </beans>
这篇博客只是简单的对 SpringMVC 做一个简单的了解,在了解过程中我们主要注意两个点,第一个是 Controller 类和 SpringMVC的配置文件。只是在开发中重点需要编写的。