转发和重定向的本质区别

本质区别:

一句话概括:重定向(Redict)是客户端行为,转发(forward)是服务器行为.

1.请求次数:

重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致request对象信息丢失。

请求转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址。转发是服务器内部request/response控制权的移交。

2.请求资源地址:

重定向:web组件可以将请求重定向到任意一个url,而不仅仅是同一个应用。

重定向的源组件与目标组件不共用同一个HttpServletRequest对象,因此不能在request范围内共享数据。

请求转发:转发的源组件与目标组件必须在同一个应用中,两者可以在request范围内共享数据。

工作流程:

1.重定向

浏览器发出http请求  >> 服务器接受请求并发送302状态码和新的对应的url到浏览器  >>

浏览器接收响应并自动请求新的url  >> 服务器接收请求并寻找客户所需的资源响应到浏览器

2.转发

浏览器发出http请求  >> 服务器接收请求  >> 服务器调用内部的一个方法在容器内完成请求处理和转发动作  >>

将客户所需资源发送到浏览器

调用方式:

1.重定向:

1).response.sendRedict(url);

2).response.setState(302);

response.setHeader("location",url);

2.转发:

1).request.getRequestDispatcher(url).forward(request,response);

2).request.getRequestDispatcher(url).include(request,response);

3).<jsp:forward page=url />

本文来之网络

时间: 2024-07-31 13:53:50

转发和重定向的本质区别的相关文章

Servlet转发和重定向response.sendRedirecte()区别 (转)

转发(forward):IE浏览器地址不会改变,始终是同一个请求.重定向(sendRedirect): IE浏览器地址会改变,用两个请求.1)转发a)地址栏不会改变b)转发只能转发到当前web应用内的资源 c)可以在转发过程中,可以把数据保存到request域对象中 //Servlet转发 request.getRequestDispatcher("/list.jsp").forward(request,response); 转发过程 客户首先发送一个请求到服务器端,服务器端发现匹配的

学习笔记(三)GenericServlet HttpServlet 转发和重定向 JSP及隐含对象 域对象

7. MVC 设计模式. 6. 和属性相关的方法: 1). 方法 void setAttribute(String name, Object o): 设置属性  Object getAttribute(String name): 获取指定的属性 Enumeration getAttributeNames(): 获取所有的属性的名字组成的 Enumeration 对象removeAttribute(String name): 移除指定的属性 2). pageContext, request, se

Servlet中的请求转发和重定向

跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外一个Servlet处理,是内部之间的转发.而重定向是告诉客户端去别的地方请求资源.举个例子,某人需要去找人事部门打印收入证明,而收入证明需要去财务部盖章.跳转的处理方式是:人事部门的人告诉你,你等一下,我去把收入证明打印出来,然后我再去找财务部盖章,所有资料准备好后,我再全部交给你.重定向的处理方式

HttpServlet的转发和重定向

一:重定向 1.HTTP协议规定了一种重定向的机制,重定向的运作流程如下 1.1 用户在浏览器输入特定的URL,请求访问服务端的某个组件. 1.2 服务端的组件返回一个状态码为302的响应结果.该响应结果的含义为:让浏览器在请求访问另一个Web组件.在响应结果中 提供了另一个组件的URL. 1.3 当浏览器端接收到这种响应结果后,再立即自动请求访问另一个Web组件 1.4 浏览器接收到来自另一个Web组件的响应结果 2. 在JAVA Servlet API中 用于重定向的HttpServletR

Servlet &amp; JSP - 转发与重定向的区别

本文转载自:http://blog.csdn.net/kobejayandy/article/details/13762043 转发 转发的原理,可以通过下图展示: 浏览器的请求发送给组件 1,组件 1 经过一些处理之后,将 request 和 response 对象 “传递” 给组件 2,由组件 2 继续处理,然后输出响应(当然,也可以继续向其他组件 “传递”),这个传递的过程称之为 “转发”.整个过程只涉及一次浏览器和服务器之间的 “请求-响应” ,转发过程中的组件共享同一个请求 (requ

http页面转发和重定向的区别

一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jspresponse.sendRedirect("new.jsp");//重定向到new.jsp 在jsp页面中你也会看到通过下面的方式实现转发:<jsp:forward page="apage.jsp" /> 当

转发与重定向的区别总结

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用. 怎么选择是重定向还是转

jsp中转发和重定向的区别!

请求是单向的,如果A请求B,之后A请求C的时候 A到B的请求断开! 转发和重定向的区别! 01.转发 request 001.转发是服务器端的行为 002.数据不会丢失 003.url不会发生变化,永远是第一次请求的url 004.每转发一次,作用域延迟一次请求! 02.重定向 response 001.转发是客户端的行为 002.数据会丢失 003.url会发生变化,永远是最后一次请求的url 004.至少两次访问服务器

HttpServletRequest对象请求转发和HttpServletResponse对象请求重定向之间的区别

HttpServletRequest对象request代表浏览器请求对象,HttpServletResponse对象代表服务器响应对象,当用浏览器访问web服务器,发出请求时,Servlet调用service方法并传入该两个对象,然后通过请求转发或者重定向到下一个jsp页面或者Servlet,下面是request对象请求转发和response对象请求重定向的区别: 区别一.RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件:而HttpServletRe