重定向 写法
旧写法
response.setStatus(302);
response.setHeader("Location", "login_success.html");
//login_success.html 是我们新的页面
新型写法
response.sendRedirect("login_success.html");//返回的是全路径
服务器给了我们一段location 地址 ,浏览器得到后再次重新访问服务端新给的页面
请求转发
request.requestgetRequestDispatcher("login_success.html").forward(request, response);
服务器帮我们跳转到了另外一个界面(都是由服务端做的)
二者的不同
重定向 | 请求转发 | |
---|---|---|
转化后的地址显示不同 | 显示最后的那个资源的路径地址 | 显示的是servlet请求的地址 |
– | – | – |
请求次数不同 | 请求最少两次,服务器在第一次请求后返回的是302 以及一个地址,浏览器根据这个地址,执行第二次访问 | 请求只有一次,服务器帮客户端执行后续工作 |
-效率- | -效率较低 ,跳转了两次- | -效率较高,跳转了一次- |
能否任意跳转 | 可以任意跳转,不是自己的工程也可以跳 | 自能跳转到自己的项目下的资源 |
-其他- | -后续的请求,没法使用上一次的request存储的数据,或者 没法使用上一次的request对象,因为这是两次不同的请求- | -可以使用上一次的request对象- |