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

Servlet项目部署Tomcat后,JSP文件无法访问及跳转问题咨询

解决Servlet项目中JSP无法访问的问题

嘿,刚接触Web开发遇到这种路径问题太正常了,我来帮你一步步理清楚:

核心问题所在

你的index.html和second.jsp放在了resources目录下,这个目录编译后会被打包到WEB-INF/classes里——而Tomcat的WEB-INF目录是受保护的,不允许浏览器直接访问的,同时JSP需要Tomcat的JSP引擎来解析处理,放在这个目录下既没法直接访问,也得不到正确解析。另外,你的Servlet只映射了/myFirstServlet路径,所以/myFirstServlet/second.jsp这种路径也不会被你的Servlet处理,自然返回404。

解决方案步骤

1. 调整资源文件的存放位置

把index.html和second.jsp移动到Web项目的根目录:

  • 如果你是普通Web项目(非Maven),放到WebContent目录下;
  • 如果你是Maven项目,放到src/main/webapp目录下。
    这个目录是Tomcat默认的Web资源根目录,里面的文件可以被直接访问或正确解析。

2. 修改Servlet读取index.html的方式

原来的代码是从类路径读取resources下的文件,现在要改成从Web根目录读取,用ServletContext来获取资源更合适:

@WebServlet(name = "myFirstServlet", urlPatterns = "/myFirstServlet")
public class MyFirstServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException, ServletException {
        // 从Web根目录读取index.html
        InputStream resource = getServletContext().getResourceAsStream("/index.html");
        String result = new BufferedReader(new InputStreamReader(resource))
                .lines()
                .collect(Collectors.joining("\n"));
        servletResponse.setContentType("text/html");
        PrintWriter pwriter = servletResponse.getWriter();
        pwriter.println(result);
    }
}

(注:你不需要手动实现javax.servlet.Servlet接口,因为GenericServlet已经实现了它)

3. 正确设置index.html中的超链接

因为你的Servlet访问路径是http://localhost:8080/你的项目名/myFirstServlet,当前页面的上下文路径是/你的项目名/myFirstServlet,所以超链接要注意相对路径:

  • 用绝对路径(推荐,避免路径混乱):
    <a href="/你的项目名/second.jsp">跳转到second.jsp</a>
    
    把你的项目名换成你实际的项目名称(比如你部署后访问的路径是http://localhost:8080/MyWebApp/myFirstServlet,那项目名就是MyWebApp)
  • 用相对路径:
    <a href="../second.jsp">跳转到second.jsp</a>
    
    ../表示回到上一级目录,也就是Web根目录,这样就能找到second.jsp了。

4. 验证访问路径

现在你可以:

  • 通过http://localhost:8080/你的项目名/myFirstServlet访问Servlet输出的index.html,点击链接就能跳转到second.jsp;
  • 也可以直接访问http://localhost:8080/你的项目名/second.jsp来验证JSP是否能正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:29:45