You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过HTML传值到Servlet时出现404错误,请求资源未找到原因?

HTTP 404错误:请求资源[/ExampleLearning/Example.java]不可用的解决方法

问题根源

表单提交目标路径错误:HTML表单的action属性被设置为Example.java,但web.xml中为Servlet配置的映射路径是/Example。服务器无法找到名为Example.java的资源,因此返回404错误。

修复步骤

1. 修正HTML表单提交路径

将HTML中表单的action属性值改为Servlet的映射路径Example(若HTML与Servlet处于同一上下文路径,使用相对路径即可):

<!DOCTYPE html>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Html.html to edit this template
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>TODO write content</div>
        <form action="Example" method="get">
            num1:<input type="text" name="num1">
            <input type="submit" value="go">
        </form>
    </body>
</html>

2. 验证核心配置一致性

  • 确认Servlet类的包名Pack与web.xml中servlet-class的Pack.Example完全匹配(含大小写):
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>Example</servlet-name>
        <servlet-class>Pack.Example</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Example</servlet-name>
        <url-pattern>/Example</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
  • 确保项目部署时,Servlet已被正确编译至WEB-INF/classes/Pack/目录下。

3. 额外健壮性优化

Servlet的doGet方法直接使用Integer.parseInt可能抛出NumberFormatException,建议添加参数校验与异常处理:

package Pack;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class Example extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    
        PrintWriter pw = response.getWriter();
        response.setContentType("text/html;charset=UTF-8"); // 设置响应编码,避免乱码
        String numStr = request.getParameter("num1");
        
        if (numStr == null || numStr.trim().isEmpty()) {
            pw.print("请输入有效的数字!");
            return;
        }
        
        try {
            int num1 = Integer.parseInt(numStr);
            pw.print(num1*num1 + " 是 " + num1 + " 的平方!");
            System.out.println(num1);
        } catch (NumberFormatException e) {
            pw.print("输入的不是有效数字,请重新输入!");
        }
    }
}

内容的提问来源于stack exchange,提问作者mMadeInHeaven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:55:17