解决使用Tomcat10导致的DispatcherServlet不可调用firstController问题,springMVC入门程序,Tomcat10
一、 tomcat与jdk版本
Tomcat与JDK版本对应关系(Tomcat官方地址):Apache Tomcat® - Which Version Do I Want?

由官方文档得知 Tomcat10 springboot6版本对应最低 JDK17 及以上版本
二、完成一个入门程序(通过DispatcherServlet访问firstControll)
- JDK版本:Java22
- Maven版本:3.9.6
- Tomcat版本:10
- Spring版本:6.1.4
- SpringMVC版本:6.1.4
- IDEA版本:2024.1
- Thymeleaf版本:3.1.2
2.1 创建Maven模块
2.1.1.新建一个名为springmvctest的maven项目
2.1.2.将pom.xml文件中的打包方式修改为war
<groupId>com.powernode</groupId>
<artifactId>springmvctest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
2.1.3.向pom.xml文件中添加以下依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.4</version>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring6</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
</dependencies>
2.2 添加web支持
2.2.1 打开项目模块设置

2.2.2 添加web.xml配置文件

点击那个 笔 图标 才能修改

注意 web.xml 文件的位置:D:\Program Files\JavaEEProject\springmvctest\src\main\webapp\WEB-INF\web.xml
注意版本选择:6.0
点击应用(Apply)

点击应用(Apply),然后点击 OK
添加web支持后的目录结构:

2.3 配置web.xml文件
Spring MVC是一个web框架,在javaweb中谁来负责接收请求,处理请求,以及响应呢?当然是Servlet。在SpringMVC框架中已经为我们写好了一个Servlet,它的名字叫做:DispatcherServlet,我们称其为前端控制器。既然是Servlet,那么它就需要在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_6_0.xsd"
version="6.0">
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
DispatcherServlet是SpringMVC框架为我们提供的最核心的类,它是整个SpringMVC框架的前端控制器,负责接收HTTP请求、将请求路由到处理程序、处理响应信息,最终将响应返回给客户端。DispatcherServlet是Web应用程序的主要入口点之一,它的职责包括:
- 接收客户端的HTTP请求:DispatcherServlet监听来自Web浏览器的HTTP请求,然后根据请求的URL将请求数据解析为Request对象。
- 处理请求的URL:DispatcherServlet将请求的URL(Uniform Resource Locator)与处理程序进行匹配,确定要调用哪个控制器(Controller)来处理此请求。
- 调用相应的控制器:DispatcherServlet将请求发送给找到的控制器处理,控制器将执行业务逻辑,然后返回一个模型对象(Model)。
- 渲染视图:DispatcherServlet将调用视图引擎,将模型对象呈现为用户可以查看的HTML页面。
- 返回响应给客户端:DispatcherServlet将为用户生成的响应发送回浏览器,响应可以包括表单、JSON、XML、HTML以及其它类型的数据
2.4. 编写控制器FirstController
DispatcherServlet接收到请求之后,会根据请求路径分发到对应的Controller,Controller来负责处理请求的核心业务。在SpringMVC框架中Controller是一个普通的Java类(一个普通的POJO类,不需要继承任何类或实现任何接口),需要注意的是:POJO类要纳入IoC容器来管理,POJO类的生命周期由Spring来管理,因此要使用注解标注:

package com.my.springMVC.controller;
public class firstController {
}
2.5. 配置spring-mvc.xml文件
在resources文件夹下建一个 spring-mvc.xml
<?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.my.springMVC.controller"/>
<!-- 配置JSP视图解析器 -->
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
2.6. 提供视图
在WEB-INF目录下新建pages目录,在pages目录中新建.jsp文件,例如:succcess.jsp,并提供以下代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>FirstController页面</h2>
</body>
</html>
2.7. 控制器firstController处理请求返回逻辑视图名称
package com.my.springMVC.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class firstController {
@RequestMapping("/firstController")
public String sayHello(){
return "success";
}
}
三、测试
3.1 配置Tomcat服务器



然后 OK + Apply
3.2 部署web模块到Tomcat服务器




3.3 启动Tomcat服务器。
部署到web服务器,启动web服务器,打开浏览器,在地址栏上输入:
http://localhost:8080/firstController

项目部署成功,日志信息显示:01-May-2024 23:34:49.254 信息 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\Program Files\java\apache-tomcat-10.0.2\webapps\manager]的部署已在[41]毫秒内完成

「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐



所有评论(0)