关于req.getRequestDispatcher(path).forward(req, resp)转发问题

当使用`req.getRequestDispatcher(path).forward(req, resp)`时,如果`path`指定的资源不存在,请求会回退到原始Servlet并重新执行,可能导致错误。例如,regist路径错误未包含前缀"/",应为"/pages/forward.jsp"。在这种情况下,由于状态变为forward.jsp,导致错误处理逻辑触发,转向错误页面`/pages/errors.jsp`。" 105346503,1240307,Windows 10与VS2017 SNMP开发实战,"['后端开发', 'C/C++', '协议开发', 'Windows开发', 'VS2017']
摘要由CSDN通过智能技术生成

req.getRequestDispatcher(path).forward(req, resp)当path找不到正确路径时,会自动返回原来的servlet,再次执行该servlet,导致出现出现问题

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String path = "/pages/errors.jsp";
        String status = req.getRequestURI().substring(req.getRequestURI().lastIndexOf("/")+1);
        System.out.println(status);
        if(status!=null){
            if("regist".equals(status)){
                path = this.regist(req);
            }
        }
        System.out.println(path);
        req.getRequestDispatcher(path).forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);

    }

    public String regist(HttpServletRequest request){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值