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

Servlet重定向异常:302/301跳转后目标Servlet doGet未执行

排查Servlet重定向后doGet未执行的问题

哎,这种情况我之前踩过好几次坑,咱们从几个最常见的点一步步排查:

  • 检查Servlet映射配置是否匹配
    先确认BServlet的映射路径和你重定向的URL完全一致:

    • 如果是用@WebServlet注解,看看是不是写成了@WebServlet("/BServlet"),和重定向的http://localhost:8080/App/BServlet的路径部分对应;
    • 如果是web.xml配置,检查<url-pattern>是不是正确,有没有大小写错误(比如把BServlet写成bServlet)。路径不匹配的话,浏览器发起的GET请求会返回404,自然不会触发doGet。
  • 确认doGet方法正确重写
    检查BServlet的doGet方法有没有符合规范:

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 加个打印语句快速测试
        System.out.println("BServlet doGet 被执行了!");
        // 你的业务逻辑代码
    }
    

    注意:必须是protected修饰,参数类型要完全匹配,而且一定要加@Override注解(避免手滑把方法名写成doget小写这类错误)。如果方法签名不对,Tomcat会认为你只是定义了一个自定义方法,而非重写父类的doGet,自然不会被调用。

  • 查看服务器日志定位问题
    打开Tomcat的localhost_access_log.*.txt和localhost.log,看看请求BServlet时的状态码:

    • 如果是404:说明路径不匹配,回到第一步重新核对映射配置;
    • 如果是500:说明doGet里抛出了未捕获的异常,需要查看日志里的异常栈信息,修复代码中的问题;
    • 如果是200但控制台没打印测试语句:那大概率是请求被拦截了。
  • 排查是否有过滤器拦截请求
    项目里如果配置了Filter,检查过滤器的映射路径是不是包含了BServlet的路径,有没有在过滤器里直接返回响应、没有把请求传递给后续的Servlet。可以暂时注释掉过滤器的配置,再测试重定向是否正常。

  • 检查重定向URL的拼写
    你给出的代码里,手动设置Location时URL末尾有省略号,确认实际代码里的URL没有多余字符(比如多了斜杠、空格,或者拼写错误),正确的地址应该是http://localhost:8080/App/BServlet,不要有额外的符号干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:06:34