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

Heroku部署Java Web应用后无法找到Servlet问题求助

问题排查与解决步骤

1. 修正重定向路径的写法

本地Tomcat默认使用根上下文路径(/),但Heroku部署环境中应用的上下文路径可能存在差异。避免硬编码绝对路径,改用动态上下文路径拼接:

// 获取当前应用的上下文路径,再拼接目标页面路径
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/example.jsp");

如果Servlet与example.jsp处于同一层级,也可以直接使用相对路径:

response.sendRedirect("example.jsp");

2. 修正表单的action路径

表单提交路径要基于当前应用上下文动态生成,避免硬编码绝对路径:

<form action="${pageContext.request.contextPath}/YourServlet" method="post">

这种写法会自动适配本地和Heroku的上下文路径,确保请求能正确到达Servlet。

3. 检查web.xml的Servlet映射配置

确保Servlet的URL映射规则正确,避免干扰静态资源或JSP的访问:

<servlet>
    <servlet-name>YourServlet</servlet-name>
    <servlet-class>com.yourpackage.YourServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>YourServlet</servlet-name>
    <url-pattern>/YourServlet</url-pattern>
</servlet-mapping>

4. 确认Heroku部署配置(Procfile)

确保Procfile中的启动命令正确指向war包,若需要强制根上下文路径,可添加对应参数:

web: java -jar target/dependency/webapp-runner.jar target/*.war --server.servlet.context-path=/

5. 验证应用上下文路径

在index.jsp中添加以下代码,部署后访问页面查看当前上下文路径:

当前上下文路径:${pageContext.request.contextPath}

如果返回值不是/,所有请求路径都需要基于该值拼接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:25:21