Glassfish下Servlet单独运行正常但网页请求报404问题求助
问题修复方案
- Servlet POST方法缺失
你当前表单提交用的是post请求,你的代码中只实现了processRequest业务逻辑,但没有重写父类HttpServlet的doPost方法,导致POST请求无法被处理返回404。
解决方法:在ThatWas类中添加如下代码:
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); }
如果你的Servlet单独访问用的是GET请求,你也可以同步添加doGet方法调用processRequest,保证两种请求方式都能正常处理。
- 表单action路径匹配错误
你当前表单action填的是相对路径ThatWas,如果网页所在目录和Servlet映射路径不在同一层级,会导致请求路径拼接错误。
解决方法:将表单的action属性修改为带项目上下文的绝对路径:
<form name ="wow" method="post" action="${pageContext.request.contextPath}/ThatWas">
Servlet映射配置错误
检查你的项目中Servlet的映射配置是否正确:- 如果用web.xml配置,确保
<url-pattern>的值为/ThatWas,示例配置如下:
<servlet> <servlet-name>ThatWas</servlet-name> <servlet-class>你的完整包名.ThatWas</servlet-class> </servlet> <servlet-mapping> <servlet-name>ThatWas</servlet-name> <url-pattern>/ThatWas</url-pattern> </servlet-mapping>- 如果用注解配置,确保
ThatWas类上的注解为@WebServlet("/ThatWas")
- 如果用web.xml配置,确保
Glassfish部署缓存问题
如果修改完代码还是404,清空Glassfish的工作目录缓存,重新部署项目后再测试即可。
内容的提问来源于stack exchange,提问作者four systems
相关产品推荐
相关产品推荐

