<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.powernode</groupId><artifactId>SpringMVC</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>springMVC-001</module><module>springmvc-hellomvc</module><module>springmvc-002</module><module>springMVC-003</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.7</version></dependency><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring6</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.1.0</version><!--指定servlet-api有tomcat容器提供,打包时将不会将servlet-api包加入打包中--><scope>provided</scope></dependency><!--过时了 <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency>--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.3</version></dependency></dependencies></project>
- 新建maven模块springmvc-002
在springmvc-002模块中的pom.xml中新增打包方式为war
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringMVC</artifactId><groupId>com.powernode</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>springmvc-002</artifactId><packaging>war</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties></project>
- 在springmvc-002模块上右击,新增框架支持,如图所示:
![](https://img2024.cnblogs.com/blog/2246787/202406/2246787-20240629182037529-1254259971.png)
- 补充:从Java EE 8开始,Servlet API的维护权转交给了Eclipse Foundation的Jakarta EE社区。因此,在最新的Jakarta EE版本中,Servlet API的包名已经从javax.servlet更改为了jakarta.servlet。这意味着jakarta.servlet-api是Servlet API在Jakarta EE 9(以及后续版本)中的新命名形式。
- 添加完web框架后会自动生成web目录,如图所示
![](https://img2024.cnblogs.com/blog/2246787/202406/2246787-20240629222121048-2081879739.png)
- 编辑web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"version="5.0"><!--前端控制器--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--Servlet初始化参数,指定springmvc配置文件和位置--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--在web服务器启动时,就启动DispatcherServlet,优化--><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--组件扫描--><context:component-scan base-package="com.powernode.springmvc.controller"/><!--配置视图解析器--><bean id="viewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver"><!--作用于视图渲染过程中,设置视图渲染后输出时采用的编码字符集--><property name="characterEncoding" value="utf-8"/><!--若存在多个视图解析器,配置优先级,值越小优先级越高--><property name="order" value="1"/><property name="templateEngine"><bean class="org.thymeleaf.spring6.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver"><!--设置模板文件的位置--><property name="prefix" value="/WEB-INF/templates/"/><!--设置模板文件后缀--><property name="suffix" value=".html"/><!--设置模板类型--><property name="templateMode" value="HTML"/><!--设置模板文件在读取和解析过程中采用的编码字符集--><property name="characterEncoding" value="utf-8"/></bean></property></bean></property></bean></beans>
- 在com.powernode.springmvc.controller新增IndexController类
package com.powernode.springmvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexController {@RequestMapping("/")public String index(){return "index";}@RequestMapping("/first")public String first(){System.out.println("业务逻辑");return "first";}
}
- 在WEB-INF目录下新增templates目录,并在此目录下新增firstm.html文件和index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>First HTML PAGE</h1>
</body>
</html>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/first}">First Spring MVC Code!</a>
</body>
</html>
- 启动tomcat10,访问http://localhost:8080/ 效果图
![](https://img2024.cnblogs.com/blog/2246787/202406/2246787-20240629222731869-1974943767.png)
单击First Spring MVC Code!后打开下图
![](https://img2024.cnblogs.com/blog/2246787/202406/2246787-20240629222751340-1217055188.png)