- 在Server端sendRedirect
- 在Server端使用jsp或RequestDispatcher进行forward
- 在Browser端使用Javascript进行重定向
- 在Browser端使用html标签进行重定向
1. 执行该语句后server会发送一个没有body的http response。状态码(Status Code)为302,在response header中有Location属性,值为:some url。浏览器接到该response后会自动读取Location的信息,并向指向的URL发出请求,所以你可以在地址栏看到some url了。
值得一提的是,如果第一个请求为Post请求时,现在很多浏览器会在第二个请求中转换为Get请求,这种处理方式并没有严格遵守HTTP协议。HTTP协议对重定向的状态码作了细分,增加了303(第二个请求转换为Get请求)和307码(第二个请求和第一个请求方法相同)。
2. 由于浏览器发出的第二个请求,因此Location中的some url可以跨域(Cross domain),为任意URL。
3. 由于是两次独立的请求,所以两次请求不能共享request里面的数据。
4. 为访问目的资源,事实上浏览器发出了两个请求,效率较低:
区别:1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2.
Server.Transfer可以将页面参数方便传递到指定页面;
3.
使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4.
Server.Transfer可以减少客户端对服务器的请求;
(2)不会,学的不是很精。等在学一学
(3)不会!
(4)。。。。。。