本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式,Java配置方式提供了一种更为简洁和灵活的配置方法。
-
项目创建与配置
- 创建一个Jakarta EE项目,并设置项目名称和位置。
- 选择Jakarta EE 10版本,不添加依赖,并创建Maven项目框架。
-
项目依赖添加
- 修改
pom.xml
文件,添加Spring MVC相关的依赖,包括Spring核心模块、Web功能、MVC框架等。 - 添加JSTL、Servlet API、日志框架、单元测试和JSON/XML处理库等依赖。
- 修改
-
视图层页面创建
- 在
resources/templates/views
目录下创建登录页面login.jsp
、登录成功页面success.jsp
和登录失败页面failure.jsp
。
- 在
-
控制器编写
- 创建
LoginController
类,使用@Controller
注解标注,并编写登录处理方法。
- 创建
-
Spring MVC配置类
- 创建
SpringMvcConfig
类,使用@Configuration
、@EnableWebMvc
和@ComponentScan
注解,并定义视图解析器和视图控制器。
- 创建
-
Web应用初始化配置
- 实现
WebApplicationInitializer
接口,创建MyWebAppInitializer
类,用于替代传统的web.xml
配置。
- 实现
-
部署Web应用项目
- 配置服务器,添加Tomcat本地服务器,并设置项目artifacts。
-
功能测试
- 启动服务器,访问登录页面,并测试登录成功与失败的页面跳转。
-
实战练习
- 完成多个任务,包括创建首页、首页跳转到登录页面、正确处理静态资源、获取服务器端返回的简单字符串和JSON/XML数据。
-
控制器扩展
- 创建
GetStringController
和GetJsonController
类,用于返回HTML字符串和JSON数据。 - 创建
GetXmlController
类,用于返回XML数据,并解决消息转换问题。
- 创建
-
静态资源处理
- 配置静态资源处理器,添加图片、CSS样式表和JavaScript脚本,并在首页中使用。
-
消息转换器配置
- 在Spring MVC配置类中添加
MappingJackson2HttpMessageConverter
和MappingJackson2XmlHttpMessageConverter
,以支持JSON和XML数据的转换。
- 在Spring MVC配置类中添加
通过本教程,学习者将能够掌握Spring MVC的Java配置方式,并能够创建一个具有用户登录功能、静态资源处理、以及能够返回JSON和XML数据的Web应用。
pom.xml
内容
xml
<?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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.huawei.spring</groupId>
<artifactId>SpringMvcDemo02</artifactId>
<version>1.0-SNAPSHOT</version>
<name>SpringMvcDemo02</name>
<properties>
<!-- spring.version -->
<spring.version>6.1.5</spring.version>
</properties>
<dependencies>
<!--Spring核心-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring Bean实体-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring容器-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring测试-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring Web功能-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring MVC框架-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--JSP标准标签库-->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<!--日志框架-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!--对json的支持-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.14.0</version>
</dependency>
<!--对xml的支持-->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.14.0</version>
</dependency>
</dependencies>
</project>