1、在一个web站点中资源之间的跳转可以采用转发和重定向。
2、转发forward
我(浏览器)最近做营养项目急需要一笔钱,与张三(SevletA)关系特别好,去与张三借钱;张三最近炒股赔了很多,但是张三很讲意气,张三去找李四(SevletB)借了一笔钱把钱给我。
3、重定向redirect
我(浏览器)最近做营养项目急需要一笔钱,与张三(SevletA)关系特别好,去与张三借钱;张三最近炒股赔了很多,张三说李四很有钱,李四的地址是哪个区哪个街哪个门,你去找李四借钱吧,我(浏览器)拿着地址找李四(SevletA)借了一笔钱。
4、转发和重定向有什么区别?
* 转发代码怎么实现?
request.getRequestDispatcher("/success.html").forward(request, response);
转发是由request对象触发的
* 转发是一次请求
浏览器地址栏上输入的地址是:http://localhost:8080/httpServlet/index.html
到最终请求结束之后,浏览器上的地址还是这个地址:http://localhost:8080/httpServlet/index.html
整个过程中只有一个url发送了请求,浏览器只发送了一次请求
* 转发的时候,下一个资源的路径在编写的时候不需要添加项目名。
* 转发是项目内部资源的跳转。
* 重定向怎么实现?
response.sendRedirect(request.getContextPath() + "/success.html");
重定向由response对象触发
* 重定向是两次请求
浏览器地址栏上输入的地址是:http://localhost:8080/httpServlet/index.html
底层执行AServlet中的重定向代码:response.sendRedirect("/httpServlet/success.html");
将/httpServlet/success.html响应给浏览器,浏览器自发的自动的又向服务器发送了一个全新的请求:http://localhost:8080/httpServlet/success.html
所以最终浏览器地址栏上的地址发生了改变,从http://localhost:8080/httpServlet/index.html变成了http://localhost:8080/httpServlet/success.html
整个过程中有两个url发送了请求。
* 重定向的下一个资源的名称中需要添加项目名。
* 重定向除了可以完成项目内部资源的跳转之外,还可以完成跨项目资源跳转。
5、转发和重定向怎么选择使用?
* 在上一个资源中向request范围当中绑定了数据,希望在下一个资源中把request范围中的数据取出,这个时候必须使用转发。
* 跨项目跳转使用重定向
* 重定向可以解决浏览器刷新问题ÿ