本实战教程主要介绍了如何使用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 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.0https://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>