服务器转发机制java_【Java学习笔记】—— Servlet的转发与重定向 - 博客频道 - CSDN.NET...

重定向和转发的区别【转】            我们知道,在servlet中调用转发、重定向的语句如下: Java代码 request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp request.getRequestDispatcher("new.jsp").forward(request, resp

转发和重定向都能让浏览器获得另外一个URL所指向的资源,但是两者的内部运行机制有着很大的区别。

转发

5c61b13000535397e5c61c584ee73506.png

客户端(浏览器)首先发送一个请求到服务器端,服务器端发现匹配的Servlet(组件1),并指定它去执行。当Servlet执行完之后,将request和response对象传递给组件2,由组件2继续处理,然后输出响应。整个流程都是在服务器端完成的,而且是在同一个请求里面完成的。这个传递的过程,称为“转发”。

转发的意义在于可以实现组件的“分工”。在基于MVC的多层结构的Web应用中,经常需要多个组件协同完成一次“请求-响应”工作,例如:用户需要获取考试信息,提交请求至控制器组件(Servlet),该Servlet调用适当的JavaBean获取“考试信息表”的数据,在转发到JSP页面显示信息。

RequestDispatcher对象封装了转发的操作。通过request的getRequestDispatcher(String path)方法获得转发对象,其中path是需要转发的地址。调用Dispatcher对象的forward对象(request,response)方法实现转发

//转发到Demo.jsp页面

request.getRequestDispatcher (“Demo.jsp"). forward(request, response);

关于转发的具体操作,需要注意:

1、转发只能在同一个应用的组件之间进行,不可以转发给其他应用的地址。

2、转发的地址可以用”相对地址“的方式,也可以用”绝对地址“的方式。

3、组件之间通过转发来分工协作,势必会涉及到数据的传递,可以通过Request对象传递数据。

一、入门 《Java 2从入门到精通》- 推荐 《Thinking in Java》- 强烈推荐* O’reilly的Java编程基础系列 - 参考* 二、进阶 《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅) 《O’reilly-Java IO》- 推荐* (包含Java IO编

重定向

61dbeba7d1571f0583875dc3acbd687b.png       客户端(浏览器)向服务器端发送请求信息,组件1向浏览器发回一个重定向的响应信息,该信息中不包含具体的数据内容,只包含了需要重定向到的地址信息,该地址可以是任何有效的URL。浏览器收到该重定向响应后会自动响应信息中所指示的地址然后发出请求。整个重定向的过程涉及两次”请求-响应“。

重定向可以通过response中的sendRedirect(String path)方法来实现,这里的path表示需要重定向到的地址。

两者之间的区别

转发是服务器端的行为,重定向是客户端的行为。

转发过程:客户端浏览器发送HTTP请求——>Web服务器接受此请求——>调用内部的方法完成请求处理和转发动作——>将信息返回给客户端。

在这里,转发的路径必须是在同一个Web容器下的URL,不能转向到其他的Web路径上去。浏览器不知道中间的转发动作,它只知道发送了一个请求,然后得到了一个响应。浏览器的URL地址栏不变!

重定向过程:客户端浏览器发送HTTP请求——>Web服务器接受此请求——>发送新的URL地址给客户端浏览器——>客户端浏览器进行响应,并请求新的URL地址——>Web服务器根据请求返回相应的信息。

在这里,Web服务器可以重定向到任意的URL。返回新的URL地址后,客户端浏览器需要重新进行请求,所以客户端浏览器URL地址栏的地址是变化的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值