1.5.3 基于Java配置方式使用Spring MVC

本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式,Java配置方式提供了一种更为简洁和灵活的配置方法。

  1. 项目创建与配置

    • 创建一个Jakarta EE项目,并设置项目名称和位置。
    • 选择Jakarta EE 10版本,不添加依赖,并创建Maven项目框架。
  2. 项目依赖添加

    • 修改pom.xml文件,添加Spring MVC相关的依赖,包括Spring核心模块、Web功能、MVC框架等。
    • 添加JSTL、Servlet API、日志框架、单元测试和JSON/XML处理库等依赖。
  3. 视图层页面创建

    • resources/templates/views目录下创建登录页面login.jsp、登录成功页面success.jsp和登录失败页面failure.jsp
  4. 控制器编写

    • 创建LoginController类,使用@Controller注解标注,并编写登录处理方法。
  5. Spring MVC配置类

    • 创建SpringMvcConfig类,使用@Configuration@EnableWebMvc@ComponentScan注解,并定义视图解析器和视图控制器。
  6. Web应用初始化配置

    • 实现WebApplicationInitializer接口,创建MyWebAppInitializer类,用于替代传统的web.xml配置。
  7. 部署Web应用项目

    • 配置服务器,添加Tomcat本地服务器,并设置项目artifacts。
  8. 功能测试

    • 启动服务器,访问登录页面,并测试登录成功与失败的页面跳转。
  9. 实战练习

    • 完成多个任务,包括创建首页、首页跳转到登录页面、正确处理静态资源、获取服务器端返回的简单字符串和JSON/XML数据。
  10. 控制器扩展

    • 创建GetStringControllerGetJsonController类,用于返回HTML字符串和JSON数据。
    • 创建GetXmlController类,用于返回XML数据,并解决消息转换问题。
  11. 静态资源处理

    • 配置静态资源处理器,添加图片、CSS样式表和JavaScript脚本,并在首页中使用。
  12. 消息转换器配置

    • 在Spring MVC配置类中添加MappingJackson2HttpMessageConverterMappingJackson2XmlHttpMessageConverter,以支持JSON和XML数据的转换。

通过本教程,学习者将能够掌握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>
相关推荐
暗黑起源喵3 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong8 分钟前
Java反射
java·开发语言·反射
九圣残炎41 分钟前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge43 分钟前
Netty篇(入门编程)
java·linux·服务器
成富1 小时前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
雷神乐乐1 小时前
Maven学习——创建Maven的Java和Web工程,并运行在Tomcat上
java·maven
码农派大星。1 小时前
Spring Boot 配置文件
java·spring boot·后端
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
江深竹静,一苇以航1 小时前
springboot3项目整合Mybatis-plus启动项目报错:Invalid bean definition with name ‘xxxMapper‘
java·spring boot