java 高手:res.sendRedirect()和req.getRequestDispatcher().forward(req,res)的区别

来源:百度知道 编辑:UC知道 时间:2024/06/02 15:47:26

res.sendRedirect(),是重定向,相当于两次请求,两次相应,地址栏会发生变化。

在实际使用中,重定向不能传指。也就是在requset中储存的值在跳转到另外一个页面后,在目标页面提取不出来。

req.getRequestDispatcher().forward(req,res)是跳转,转发,前后页面共同使用一个request,地址栏没变化,等于一次请求两次相应,

实际应用中你在上一个页面储存在request中的值在跳转到目标页面后在目标页面仍然可以request.getAttribute();这个方法取出来。

sendRedirect()是向浏览器发送一个重定向信息,http代号好像是302.
而req.getRequestDispatcher()是在服务器内部进行处理,再返回到客户端

第一个是绝对跳转,地址栏相应变化,相当于重启ie到新的地址
第二个是相对跳转,保留了一下信息,而且地址栏里边的地址不变

res.sendRedirect();两次请求 两次响应 通俗一点就是 地址栏变化
request.getRequestDispatcher()是请求转发,前后页面共享一个request ;
forward(req,res);一次请求 两次响应 地址栏不变化

不带参数与带参数跳转

1)他们的路径写法不同 sendRedirect(/工程名/xx.jsp)
req.getRequestDispatcher().forward(req,res) 是/xx.jsp

2)后者可以绑定requeset的属性,前者不能

3)剩下的他们说的都对