请求转发和重定向区别

原创 2016年08月28日 22:26:13

请求转发和重定向区别

标签 : servlet


对于初学者来说,什么时候该用请求转发什么时候该用重定向,是比较容易搞混的一些知识点,下面就详细的来区分一下,两者的区别。

1、请求转发

①请求转发的介绍

请求转发的固定代码:
request.getRequestDispatcher("/s3").forward(request, response);
请求转发的路径是由服务器内部发起的,所以服务器路径

②请求转发的注意事项

 1、请求转发 不会改变地址栏的路径
 2、请求转发 代码执行完毕后,会接着回来执行转发后的代码

    业务会出错例如:
    发现注册失败了,
        请求转发到失败页面,然后显示失败信息
        请求转发后面的代码是注册成功的代码
    建议:
        请求转发代码后面尽量直接加return。特殊业务除外【过滤器再详细介绍】

 3、请求转发N次,响应1次。由最后的Servlet生成响应
 4、请求转发只能跳转本项目内部资源,不能跳转其他项目甚至外网
 5、执行请求转发代码的Servlet,不要执行任何写流操作,因为执行请求转 发代码会清除缓冲区。不要自己flush(),否则后面的请求转发失败抛异常。
 6、请求转发中存在request作用域
 7、请求转发可以 转发到受保护目录 的资源
 8、请求转发中,get的请求转发还是是get请求,post请求转发还是post请求。
 9、请求转发的效率高,因为①服务器内部跳转,没有网速因素②没有主动写响应信息

③请求转发的本质

1、共享request作用域的属性,共享request的参数信息,同时还可以转发时候讲参数改变,代码如下所示:

request.getRequestDispatcher("/sc?username=xiaohong").forward(request, response);

2、在请求转发中,request对象并不是同一个,旧的request数据复制给了新的request对象response对象请求转发中,都是同一个

2、重定向

    重定向固定代码:`response.sendRedirect(path);`  //客户端的路径为绝对路径。
     1、重定向会改变地址的;
     2、重定向N次,响应/请求 N+1次
     3、重定向可以定位到任意资源,包括外网资源
     4、重定向代码尽量不要写 写流【响应体】操作。因为网速快的时候,自动请求会极快得到响应,覆盖之前的响应内容。 只有网速极差的时候,才能看到响应体一次。即:写了也白写。
     5、重定向不存在request作用域
     6、重定向无法访问受保护目录资源 (eg:WEB-INF中的)
     7、重定向get请求重定向后还是get;而post重定向是get请求,相当于在浏览器上写了地址直接回车进入
     8、重定向效率不高。①受网速限制 ②每次重定向都要生成对应的响应信息

什么时候用重定向,什么时候使用请求转发

     ① 是否需要修改地址。,如果需要修改地址,用重定向,如果不需要修改地址
     ② 效率高 ,用请求转发
     ③ 是否需要定位外网资源。 如果需要定位外网---重定向; 如果是内网本项目---建议用请求转发
     ④ 如果需要使用request作用域 。使用请求转发
     ⑤ 如果需要访问受保护目录资源。 使用请求转发。
版权声明:本文为博主原创文章,未经博主允许不得转载。

请求转发与请求重定向的区别

请求转发: 请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址...
  • u012877472
  • u012877472
  • 2016年03月04日 18:48
  • 22176

深入浅出Java 重定向和请求转发的区别

客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的stude...
  • lishehe
  • lishehe
  • 2014年04月08日 07:58
  • 53944

java中请求转发和重定向的区别

对于初学者来说,可能一开始并不太关注这个问题。最近刷笔试题时,我又复习了一遍。今天在这里稍做总结,希望能帮助到大家。 请求转发: request.getRequestDispatcher().fo...
  • bingogirl
  • bingogirl
  • 2016年08月11日 21:28
  • 2689

重定向和转发的区别

  • 2014年09月04日 16:55
  • 685B
  • 下载

jsp 转发和重定向的区别(forward sendRedicreat)

  • 2009年04月09日 23:48
  • 40KB
  • 下载

重定向和转发的区别

  • 2014年04月02日 23:13
  • 970B
  • 下载

转发与重定向的区别

  • 2016年01月07日 20:24
  • 907B
  • 下载

转发与重定向区别

  • 2015年09月14日 16:59
  • 16KB
  • 下载

重定向和转发的区别

  • 2012年05月11日 08:19
  • 67KB
  • 下载

USerLogin servlet 登录实例探究转发与重定向本质区别

  • 2016年06月23日 17:33
  • 364KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:请求转发和重定向区别
举报原因:
原因补充:

(最多只允许输入30个字)