Tomcat 10中Servlet加法程序请求方法不支持问题排查求助
两数加法Servlet程序错误排查及修复方案
错误原因分析
你遇到的错误“The method received in the request-line is known by the origin server but not supported by the target resource”,核心触发原因有两个:
- Servlet的
service方法参数顺序不符合规范 - web.xml配置与Tomcat 10的Jakarta EE规范不兼容
具体修复步骤
1. 修正Add.java中service方法的参数顺序
HttpServlet的service方法标准参数顺序是HttpServletRequest在前,HttpServletResponse在后,你写反了参数顺序,导致Tomcat无法识别正确的请求处理方法。修改后的代码如下:
package com.ali; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class Add extends HttpServlet { // 修正参数顺序:req在前,res在后 public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { int i, j, k; i = Integer.parseInt(req.getParameter("n1")); j = Integer.parseInt(req.getParameter("n2")); k = i + j; PrintWriter out = res.getWriter(); out.println("result: " + k); } }
2. 更新web.xml适配Tomcat 10规范
Tomcat 10基于Jakarta EE 9规范,不再使用旧的Java EE命名空间,需要将web.xml版本升级到4.0,并替换为Jakarta官方命名空间。修改后的配置如下:
<?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_4_0.xsd" version="4.0"> <servlet> <servlet-name>ac</servlet-name> <servlet-class>com.ali.Add</servlet-class> </servlet> <servlet-mapping> <servlet-name>ac</servlet-name> <url-pattern>/add</url-pattern> </servlet-mapping> </web-app>
3. (可选)修正HTML表单显示文字
你的index.html中输入框前的标注文字写成了ne1/ne2,可以修正为n1/n2让显示更准确(不影响功能,但更规范):
<!DOCTYPE html> <html> <body> <form action="add"> n1 : <input type="number" name="n1"><br> n2 : <input type="number" name="n2"><br> <input type="submit"> </form> </body> </html>
验证流程
- 重新编译Add.java,确保生成的class文件放置在
WEB-INF/classes/com/ali目录下 - 重启Tomcat服务器
- 访问index.html页面,输入两个数字后提交,即可正常显示计算结果
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

