除首页外Servlet无法运行,点击按钮触发Tomcat 404错误求助
解决Servlet点击按钮出现Tomcat 404资源找不到的问题
嘿,这个Tomcat返回的404资源找不到问题我太熟悉了!首页能访问说明项目部署没问题,但点击「添加新书」「列出所有书籍」就报错,基本是Servlet映射或者前端请求路径没对上,咱们来逐一排查:
1. 先检查Servlet的映射配置
不管你是用web.xml还是注解@WebServlet,都得确保映射的路径和前端请求的路径完全匹配:
- 如果是
web.xml配置,要确认<servlet-mapping>里的<url-pattern>和按钮请求的路径一致(比如请求的是/new,配置就得对应上):<servlet> <servlet-name>AddBookServlet</servlet-name> <servlet-class>com.yourpackage.AddBookServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddBookServlet</servlet-name> <url-pattern>/new</url-pattern> </servlet-mapping> - 如果是用注解,直接在Servlet类上标注正确的路径:
@WebServlet("/new") public class AddBookServlet extends HttpServlet { // 你的业务逻辑代码 }
2. 确认前端按钮的请求路径没写错
很多时候问题出在前端的请求路径上,尤其是项目有上下文路径的时候,别直接写绝对路径:
- 如果是表单提交,记得用
${pageContext.request.contextPath}获取项目上下文路径,避免路径错误:<form action="${pageContext.request.contextPath}/new" method="post"> <!-- 表单输入项 --> <button type="submit">添加新书</button> </form> - 如果是a标签跳转,同样要加上上下文路径:
要是你直接写<a href="${pageContext.request.contextPath}/list">列出所有书籍</a>/new,当项目不是部署在Tomcat的ROOT路径下时,就会找不到资源。
3. 检查Servlet类的基础结构
确保你的Servlet类正确继承了HttpServlet,并且重写了对应请求方法(比如前端是POST请求就重写doPost,GET就重写doGet):
public class AddBookServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理添加新书的逻辑 } }
要是没重写对应方法,Tomcat没法正确处理请求,也可能导致404或者错误跳转。
4. 确认项目部署状态
最后再检查下项目是不是正确部署到Tomcat了,上下文路径和你配置的一致。可以去Tomcat的管理页面看看已部署的应用,或者在IDE的部署配置里确认上下文路径没写错。
内容的提问来源于stack exchange,提问作者user6223373
相关产品推荐
相关产品推荐

