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

在Eclipse中使用Tomcat运行JSP页面出现404错误,问题出在哪里?

问题根因及修复方案

根因说明

  • 按照Servlet规范要求,WEB-INF 属于Web应用的受保护目录,该目录下的所有文件(包括JSP、配置文件、静态资源等)都不允许被客户端直接通过URL访问,所以你访问带/WEB-INF/login.jsp的路径必然返回404,属于正常的安全限制。
  • 移除/WEB-INF后返回LoginServlet的输出内容,说明LoginServlet的URL映射规则刚好匹配到了你当前的访问路径,常见的配置错误包括:
    • Servlet映射配置了/login.jsp,和你访问的JSP路径完全重合
    • Servlet映射配置了/*全局通配规则,拦截了所有应用内请求
    • Servlet映射配置了/,覆盖了Tomcat默认的静态资源/JSP处理规则

修复步骤

  1. 调整资源存放路径:如果需要让login.jsp可被直接访问,不要将其放在WEB-INF目录下,移动到Eclipse动态Web项目的根资源目录(默认是WebContent,部分新版本为WebApp)的根目录或其他非WEB-INF的公开目录即可。
  2. 修正Servlet映射配置:
    • 若使用web.xml配置,找到<servlet-mapping>标签下的<url-pattern>配置,避免设置为和JSP路径重合的规则,也不要使用/*全匹配规则,建议调整为功能匹配的路径,例如/login
    • 若使用@WebServlet注解配置,修改注解的urlPatterns属性即可,示例:
    @WebServlet(urlPatterns = "/login")
    public class LoginServlet extends HttpServlet {
        // 业务逻辑
    }
    
  3. 可选安全方案:如果不希望login.jsp被直接访问,可以保留其在WEB-INF目录下,在LoginServlet中通过请求转发的方式返回页面,示例代码:
    request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
    
    该场景下直接访问http://<host>:<port>/FirstDynamicWebProject/login即可正常加载登录页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:09:02