使用axios发送请求,servlet验证验证数据后无法转发或重定向


问题

前端发送一个axios的请求验证,想要验证成功后跳转页面

axios.post('http://localhost:8080/javaWeb/RegisController', params)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //...
    this.getServletContext().getRequestDispatcher("/home.html").forward(req, resp);
}

可以看到请求标头和响应体都已经返回,但是页面就是没有跳转,还是停留在原来的页面

原因

原因其实也不难,主要是servlet拿到的是ajax发送过来的request,也就是说这个请求不是浏览器请求的,而是ajax请求的,所以,servlet对request进行请求转发或重定向都不能影响浏览器的跳转…..也就出现了我们遇到的请求转发和重定向失效的问题.

解决问题

不管正确还是错误,都应该返回一个值给ajax,让ajax去跳转或干其他的事.使用ajax本来就是为了局部刷新网页,而不是跳转

axios.post('http://localhost:8080/javaWeb/RegisController', params)
    .then(response => {
        //成功则改变路径
        location.href = "./home.html"
    }, reason => {
        alert('验证码错误,请重试!');
        //验证码
        addData();
    })
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    if (判断条件){
        //响应状态码
        resp.setStatus(200);
    }else{
        resp.setStatus(404);
    }
}

参考文档:(11条消息) servlet的后台页面跳转和ajax的页面跳转_tao911110的博客-CSDN博客


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM