Java Web 开发遇到的坑和注意点 涉及Jquery,Servlet等等

本文介绍了前端使用Ajax与后端Servlet交互时如何正确处理页面跳转的问题。详细解释了为何在Ajax请求响应后不能直接使用RequestDispatcher.forward()或Response.sendRedirect()进行页面跳转,并给出了正确的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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代码是否是最新的代码。

断点调试示例:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值