`

重定向和内部转发的区别

    博客分类:
  • jsp
阅读更多
一、调用方式
我们知道,在servlet中调用转发、重定向的语句如下:
request.getRequestDispatcher("new.jsp").forward(request, response);   //转发到new.jsp
response.sendRedirect("new.jsp");   //重定向到new.jsp
在jsp页面中你也会看到通过下面的方式实现转发:
<jsp:forward page="apage.jsp" />
当然也可以在jsp页面中实现重定向:
<%response.sendRedirect("new.jsp"); %> //重定向到new.jsp
二、本质区别
解释一
一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器——》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
解释二
重定向,其实是两次request
第一次,客户端request   A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
例子:
response.sendRedirect("loginsuccess.jsp");
请求转发是服务器内部把对一个request/response的处理权,移交给另外一个
对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。传输的信息不会丢失。
例子:
       RequestDispatcher dis=request.getRequestDispatcher(“loginsuccess.jsp”);
       Dis.forward(request,response);
解释三
假设你去办理某个执照
重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。
分享到:
评论

相关推荐

    转发与重定向区别

    尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。下面是HttpServletResponse.sendRedirect方法实现的...

    java 转发和重定向区别及实例代码

    主要介绍了java 转发和重定向区别及实例代码的相关资料,需要的朋友可以参考下

    nginx目录路径重定向的方法

    修改root映射,通过Nginx rewrite内部跳转,设置别名alias映射实现,通过nginx的permanent 301绝对跳转实现. 1 nginx修改root映射 修改root映射实现nginx目录访问重定向是最简单的方式, 推荐采用这一种. location /...

    2022轻量级端口转发rinetd.tar.gz

    Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上。如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一个应用层端口转发程序rinetd,...

    C-ATM.zip jsp+servlet 项目【练手/总结/巩固】

    1. 在JavaWeb中,页面跳转有两种方式:重定向和转发。 2. 重定向是通过发送特定的HTTP响应码告知浏览器请求的资源已被移到新的URL上,浏览器接收到响应后会重新发送请求到新的URL地址,因此URL路径会改变。 3. 转发...

    getAttribute和getParameter区别.

    request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。即request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取...

    内部办公网络设计方案

    3.1.1 内部局域网设计 5 3.1.2 网络边界设计 6 3.1.3 无线网络的设计 7 3.2 未来扩展设计 8 3.2.1 智能网络管理 8 3.2.2 整网网络安全联动设计 8 3.3 IP地址及VLAN规划 9 3.3.1 IP地址分配基本原则 10 3.3.2 IP地址...

    利用virtualbox虚拟机实现端口转发

    突破上网限制(如在公司内部限制访问外部网络,但是开放了某些端口,可以利用开放的某些端口实现端口重定向) 远程桌面重定向 NC重定向获得Shell 2.实验环境 virtualbox虚拟机 Windows XP(作为防火墙子网客户机...

    java中dispcter和forward的区别

    dispcter和forward的区别 RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()...2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect

    no.php:用PHP编写的透明反向代理

    如果您被迫托管在完全由第三方... 支持: 常规和XMLHttpRequests(AJAX) 所有HTTP标头无差别GET和POST动词内容类型(HTTP有效负载)无差别重定向(内部重定向被重写为相对URI) 多部分内容类型Cookies(将后端域转换

    普通门票:Audius前端网关,用于代理流量

    被转发到处理OG标签的内部节点服务器或嵌入式播放器 (当前)作为应用程序辅助端点的宿主/来源(嵌入式播放器,OG元标记等) 客户端使用Lambda @ Edge of CloudFlare Workers之类的东西向CDN发送请求 CDN识别User-...

    RakLib:RakLib代理服务器,用于数据包路由

    RakLib RakLib代理服务器的实现,用于...服务器端有2个ip地址:外部和内部。 客户端和代理之间的通信需要外部地址 内部-用于服务器和代理之间的通信 服务器可以向代理注册 您也可以将客户端重定向到另一台服务器。

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【WEB】转发(forward)和重定向(redirect)的区别 38 forward(转发): 38 redirect(重定向): 39 区别: 39 【WEB】实现会话跟踪的技术有哪些? 40 【WEB】什么是ORM 42 【反射】反射中,Class.forName和...

    XML Oracle Servlet 复习汇总(S2)

    7 Servlet:转发和重定向 8分 8 Servlet:连接池 5分 9 Servlet:servlet(代码题目) 6分 10 Servlet:jspuserbean 5分 11 Servlet:servlet(代码题目) 10分 12 Servlet:jstl标签(代码题目) 8分 13 Servlet:...

    web下载文件和跳转的方法

    如果不通过JSP和servlet直接下载文件的话,可以通过web.xml文件来识别文件类型来进行下载。如果要通过servlet来下载的话,可以如下所示来进行下载: 但是这样下载的话有两个缺点:一...转发: 服务器内部跳转 request

    autopunch:无需转发端口即可玩P2P游戏! 向下滚动以获取说明

    此程序使您可以托管并连接到朋友,以玩对等游戏,而无需打开或重定向任何端口。 与手动重定向端口相比,这不会给连接增加任何延迟。 您可以与不使用自动打Kong而没有兼容性问题的用户一起玩,并且可以始终将其保持...

    深入解析Windows操作系统中文.part2.rar

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对Windows Server 2003、Windows XP...

    redirect4ward:Contao-扩展

    重定向 redirect4ward 提供了转发不存在的 URL 的可能性。 提供内部、外部和多语言重定向。 依赖扩展 redirect4ward 也在官方 Contao

    基于Linux 的防火墙技术研究

    就是内部网和外部网的主机之间不能建立直接的连接,而是要通过代理服务进行转发。代理服务器 具有用户级的身份验证,完备的日志记录和帐号管理等较包过滤器更加安全的功能。然而,许多代理机 制需要客户端修改软件或...

    3GPP-23501-g10(中文版).pdf

    5.9.7 内部组标识符 165 5.9.8 通用公共订阅标识符 166 5.9.9 AMF UE NGAP 编号 166 5.9.10 UE 无线电能力 ID 166 5.10 安全方面 166 5.10.1 概述 166 5.10.2 非 3gpp 接入安全模型 167 5.10.2.1 信号安全 167 ...

Global site tag (gtag.js) - Google Analytics