您当前的位: 首页 > 宏观 > > 内容页

Servlet 重定向Redirect与转发Forward分析 聚焦

来源:哔哩哔哩 2023-05-22 19:57:49


【资料图】

一、重定向

浏览器向某组件1发出请求信息,组件1向浏览器发回一个重定向响应信息,该响应信息不包含具体的数据内容,只是在响应头信息中包含需要重定向到的地址信息,该地址可以是任何有效的URL。浏览器收到该重定向响应后会自动的向响应信息头中所指示的地址发出请求。整个重定向的过程涉及两次“请求-响应”。

二、Forward转发

浏览器的请求发送给组件1,组件1经过一些处理之后,将request和response对象“传递”给组件2,由组件2继续处理,然后输出响应(当然,也可以继续向其他组件“传递”),这个传递的过程称之为“转发”。整个过程只涉及一次浏览器和服务器之间的“请求-响应”,转发过程中的组件共享同一个请求(request)和响应(response)对象。

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

关于转发的具体操作,有如下几点需要注意:

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

2、转发的地址可以用“相对地址”方式,也可以用“绝对地址”方式。但需要注意的是:用绝对地址方式时,应从应用名后(Context path)开始。例如,要转发到的地址为: http://192.168.1.10/tst/jsp/somewhere.jsp (其中tst为应用名),对应的绝对地址为:“/jsp/somewhere.jsp”。这是很好理解的,因为转发只能转到本应用内的地址,所以绝对地址没有必要包含应用名。

3、组件之间通过转发来分工协作,势必涉及数据的传递,可以通过request对象传递数据。request对象的setAttribute和getAttribute分别用于以“名称-对象对”的形式存取数据。

关键词:

Copyright ©  2015-2022 海峡数据网版权所有  备案号:皖ICP备2022009963号-10   联系邮箱:396 029 142 @qq.com