关键字:页面重定向(跳转,page redirection)、实现方式
写完标题,我突然想到了孔乙己,鲁迅先生嘲笑他以知道茴香豆的茴字有四种写法而感到自豪。不过我想我和孔乙己还是不同的,因为茴香豆的茴字会写一种即可,但本文总结的四种页面重定向的方式应用的场景不尽相同,产生的页面效果也不同。是有必要加以理解并选择合适的方式处理不同的场景的。
四种方式:
在Server端sendRedirect
在Server端使用jsp或RequestDispatcher进行forward
在Browser端使用Javascript进行重定向
在Browser端使用html标签进行重定向
以下是对四种方式进行的详解。
在Server端sendRedirect
示例代码
//HttpServletResponse response
response.sendRedirect("some url");
特点
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码(第二个请求和第一个请求方法相同)。Eric Law在他的博文