1.如果前端页面中使用表单<form>的action和method的方式提交请求到后台的servlet,则在servlet处理完请求后,使用RequestDiapatcher.forward()或则Response.sendRediret()方法都可以实现跳转页面。但是请注意,如果前端页面中使用ajax的方式提交请求,则在servlet处理完请求后,使用RequestDiapatcher.forward()或则Response.sendRediret()方法是无法实现页面跳转的。此时必须在ajax的回调函数中实现页面的跳转。此时,在servlet的doPost()或者doGet()方法中,直接将必要的数据返回给浏览器。而不是自己来调用forward()或者sendRedirect()来实现跳转。然后在ajax的success或者error方法中处理页面的跳转。
例子:
1.Servlet部分示例代码:
下图中的注释部分是无法完成页面跳转的,除非不使用ajax方式提交
2.前端页面中的ajax示例代码:
2.1 html页面部分:(调用js中的checkLogin()函数):
2.2 js部分:
参考:
1.http://stackoverflow.com/questions/8720961/jsp-requestdispatcher-forward-not-forwarding-when-servlet-called-via-ajax-pos
2.http://lovezehui.iteye.com/blog/2065179
3.http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/wabiaozia/article/details/50602672
4.http://stackoverflow.com/questions/29504929/how-to-get-data-from-servlet-to-ajax-success
2.js代码部分可以利用Chrome的调试工具进行断点调试,比如ajax的代码的断点调试。注意,如果改了js代码,记得刷新页面,让浏览器获取最新的js代码。可以在Chrome的调试工具中查看当前浏览器中的js代码是否是最新的代码。
断点调试示例: