RequestDispatcher接口

在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外

一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应。

一,RequestDispatcher接口方法简介

1,RequestDispatcher对象由Servlet容器来创建,封装一个

由路径所标识的服务器资源。

2,RequestDispatcher接口中定义了二种方法用于请求转发:

forward(ServletRequest,ServletResponse)方法

将请求转发给服务器上另外一个Servlet,JSP

页面,或者HTML文件 这个方法必须在响应被提交给客户端之前

调用,否则抛出异常。

方法调用后在响应中的没有提交的内容被自动消

除。

include(ServletRequest,ServletResponse)方法

用于在响应中包含其他资源(Servlet,JSP页面或

HTML文件)的内容。

即请求转发后,原先的Servlet还可以继续输出响

应信息,转发到的Servlet对请求做出的响应将并入原先Servlet的响

应对象中。

3,forward方法和include方法的区别:

forward方法调用后在响应中的没有提交的内容

被自动消除。 include方法使原先的Servlet和转发到的Servlet都

可以输出响应信息。

二,得到RequestDispatcher对象

三种方法可以得到RequestDispatcher对象:

1,利用ServletRequest接口中的

getRequestDispatcher(String path)方法。

2,ServletContext接口中getNamedDispatcher

(String path)和getRequestDispatcher(String path)方法

ServletRequest接口和ServletContext接口中

getRequestDispatcher方法区别:

1,参数的区别

参数虽然都是资源路径名,

ServletContext接口的中参数路径必须以“/”开始,是相对于当前

Servlet上下文根, ServletRequest接口中的参数路径不仅可以

相对于当前Servlet上下文根,还可以相对与当前Servlet路径

2,跨WEB应用程序访问资源

通过ServletContext.getContext()方

法获取另个WEB应用程序的上下文环境对象来 调用

getRequestDispatcher(String path)方法 将请求转发到另个

WEB应用程序的资源。

还需要在当前WEB应用程序配置中设置

<context>元素,指定crossContext属性值为true。

三,ServletResqonse接口中的sendReadirect()方法和forward()方

法的区别

二个方法都是用于请求转发的方法,转发给另外的资源为客户

端服务。但二者有本质的区别

sendReadirect()方法原理:

1,客户端发送请求,Servlet1做出处理。

2,Servlet1调用sendReadirect()方法,将客户端

的请求 重新定位 到Servlet2。

3,客户端浏览器访问Servlet2.

4,Servlet2对客户端浏览器做出响应。

forward()方法原理:

1,客户端发送请求,Servlet1做出处理。

2,Servlet1调用sendReadirect()方法,将请求转发

给Servlet2来处理请求,为客户端服务。

3,Servlet2对客户端浏览器做出响应。

区别:

1,定位与转发

sendReadirect()方法是重新定位到另外一个

资源来处理请求,URL会重新定位,让客户端重新访问另外一个资源。

forward()方法是转发到另外一个资源来处理请求。URL不会变化。

隐藏了处理对象的变化。

2,处理请求的资源的范围

sendReadirect()方法可以跨WEB应用程序和服

务器重新定位资源来处理请求。 forward()方法只能在应用程序内

部转发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值