当一个 Web资源 收到客户端的请求后,如果希望服务器通知另一个web资源处理请求,那么这时可以通过 RequestDispatcher 接口的实例对象实现。
web资源分为静态和动态
- 静态资源
静态web资源是浏览器能够直接打开的。如:html、css、 js等- 动态资源
动态web资源是经过翻译之后浏览器能够打开的。如:jsp、servlet、php、ASP等
RequestDispatcher对象
RequestDispatcher getRequestDispatcher (String path)
-
参数:
path必须以/开头,用于表示当前 Web 应用的根目录web应用的根目录在idea中是
web;在eclipse中是webcontent需要注意的是,
WEB-INF目录中的内容对RequestDispatcher对象也是可见的。因此,传递给getRequestDispatcher(String path)方法的资源可以是WEB-INF目录中的文件 -
返回值:某条路径所指定资源的
RequestDispatcher对象
获取到 RequestDispatcher对象后,便是通知其他 Web 资源处理当前的 Servlet 请求,为此,RequestDispatcher 接口定义了两个相关方法:forward()、include()
forward()与include()
| 方法声明 | 功能描述 |
|---|---|
| forward(ServletRequest request, ServletResponse response) | 第一个web资源对请求做一个初步处理,然后通过调用这个方法,将请求传递给其他资源进行响应。需要注意的是,该方法必须在响应提交给客户端之前被调用,否则将抛出 IllegalStateException 异常 |
| include(ServletRequest request, ervletResponse response) | 该方法用于将其他的资源作为当前响应内容包含进来 |


| 比较内容 | forward() | Include() |
|---|---|---|
| 使用场合不同 | 将控制权转移到其它组件 | 须由另一组件执行部分处理,一旦执行完毕,当前组件将收回控制权 |
| 输出结果不同 | 在请求转发之前,web组件不应使用输出流向客户端发送消息 | 所有web组件共享同一个输出流与客户机进行通信 |
| 相同点 | 均是在服务器端完成的,因此地址栏中只显示原URL,不显示跳转后的URL | 均是在服务器端完成的,因此地址栏中只显示原URL,不显示跳转后的URL |
动手练一下吧!
关于requset的forward()、include()跳转的实例代码
参考文章:
本文详细介绍了RequestDispatcher接口在Web开发中的作用及其实现方式。重点讲解了如何利用RequestDispatcher对象实现请求转发和资源包含,并对比了forward与include方法的区别。
703

被折叠的 条评论
为什么被折叠?



