当前位置: 首页 > news >正文

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 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>
http://www.lryc.cn/news/359130.html

相关文章:

  • Artifactory清理二进制文件丢失的制品
  • C#中的数组探索
  • 身份认证与口令攻击
  • 卷积网络迁移学习:实现思想与TensorFlow实践
  • Ansible04-Ansible Vars变量详解
  • Flutter 中的 SliverCrossAxisGroup 小部件:全面指南
  • 开源还是闭源这是一个问题
  • 数据结构与算法笔记:基础篇 - 栈:如何实现浏览器的前进和后退功能?
  • 【AIGC】大型语言模型在人工智能规划领域模型生成中的探索
  • 从零开始学习Slam-旋转矩阵旋转向量四元组(二)
  • 基于Spring Security添加流控
  • Python | Leetcode Python题解之第119题杨辉三角II
  • 物联网应用系统与网关
  • 系统稳定性概览
  • Redis-Cluster模式基操篇
  • Golang | Leetcode Golang题解之第113题路径总和II
  • 云计算与 openstack
  • golang语言的gofly快速开发框架如何设置多样的主题说明
  • lynis安全漏洞扫描工具
  • C++ 多重继承的内存布局和指针偏移
  • centos时间不对
  • 通过Redis实现防止接口重复提交功能
  • 如何构建最小堆?
  • 基于Netty实现安全认证的WebSocket(wss)客户端
  • 代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集
  • redis常见使用场景
  • 模糊C均值(FCM)算法更新公式推导
  • 金融创新浪潮下的拆分盘投资探索
  • 一份不知道哪里来的第十五届国赛模拟题
  • 机器人动力学模型与MATLAB仿真