request请求转发,页面没有跳转的原因

时间:2024-03-26 11:16:09

问题:点击搜索按钮后,跳转到指定的servlet从数据库中取数据,然后通过request请求转发,将数据返回到页面刷新

req.getRequestDispatcher(“RentSearch.jsp”).forward(req,resp);

分析:测试许久,都没有效果!后来才发现,如果表单是用ajax提交的,那么servlet内部无论是使用response.sendRedirect 或者 request.getRequestDispather() 都是无效的,这是为什么呢?

原因:因为servlet拿到的是ajax发送过来的request,而不是浏览器发送的请求的,所以servlet对request进行请求转发和重定向对浏览器都不能影响浏览器的跳转,这就是请求转发和重定向失效的原因。

解决方案

方案一:

要想让 response.sendRedirect() 生效,一定不能使用 ajax,只能使用同步的 form 表单提交;像这样
request请求转发,页面没有跳转的原因

方案二:

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

获取input text 的值作为a标签的参数值
前台
request请求转发,页面没有跳转的原因

<a href="" οnclick=“getkey(this)” style=“text-decoration: none; color: #FFFFFF”>搜索

接受页面后台

string key = Request.QueryString[“Key”];