Servlet请求转发 RequestDispatcher接口( 转载)
2010-02-02 10:44
603 查看
Servlet请求转发 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()方法只能在应用程序内部转发。
相关文章推荐
- Servlet请求转发 RequestDispatcher接口知识点
- Servlet请求转发:RequestDispatcher接口
- Servlet请求转发 RequestDispatcher接口
- java学习之Servlet请求转发之RequestDispatcher
- Servlet请求转发 RequestDispatcher与sendRedirect
- javaweb-day06-4&5&6 (Servlet-Request-方法、表单获取客户端中文信息、URL编码、Request容器和请求转发、RequestDispatcher.include()
- Servlet ---- RequestDispatcher请求转发
- Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法
- Servlet------RequestDispatcher请求转发
- 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)
- 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)
- Servlet请求转发之RequestDispatcher
- Servlet请求转发之RequestDispatcher
- HttpServletResponse.sendRedirect方法实现的请求重定向与RequestDispatcher.forward方法实现的请求转发的总结比较
- Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
- Servlet请求转发 RequestDispatcher与sendRedirect -
- servlet的转发(request.getRequestDispatcher().forward())
- 内部跳转(请求转发)request.getRequsetDispatcher()和外部跳转(重定向)response.sendRedirect()的区别
- 使用request.getRequestDispatcher请求转发到一个页面中文乱码解决
- 使用request.getRequestDispatcher请求转发到一个页面中文乱码解决 【转】