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