RequestDispatcher 的使用总结
来源:互联网 发布:relex软件 代理 编辑:程序博客网 时间:2024/05/22 12:15
RequestDispatcher requestDispatcher1 = request.getRequestDispatcher("/logout_sso.jsp");
requestDispatcher1.forward(request, response);
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward
由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。我们需要把<jsp:include>翻译为Java code – RequestDispatcher.include();
用法:
<% request.getRequestDispatcher(filename).include(request, response); />
服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.
HttpServletResponse.sendRedirect()方法将 响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如 response.sendRedirect("http://java.sun.com")也可以使用相对的URL。如果location以“/”开 头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器 中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
RequestDispatcher.forward()方法将 当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要 跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样 看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另 外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。
注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
RequestDispatcher接口所定义的forward()方法可以将HTTP请求转送给其他Web资源(例如Servlet、JSP或HTML)进行处理,并产生HTTP回应。
调用forward()方法时必须注意下列两点:
1. 在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端),否则将拋出IllegalStateException异常。
2. 调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除.
RequestDispatcher 接口的include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet 后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何 HTTP回应,将会并入原来的HttpResponse对象。
RequestDisPatcher dispatcher=requset.getRequestDisPatcher("/uservlet2)"
这句代码就是说将当前servlet的数据转发到uservlet2这个servlet里
它是服务器端转发
一般还要把request和response传过去
完整用法:
RequestDisPatcher dispatcher=requset.getRequestDisPatcher(""/uservlet2)";
dispatcher.forward(request, response);
还有一个response.sendRedirect("a.jsp")是不传送数据的浏览器端转发
- RequestDispatcher 的使用总结
- RequestDispatcher 的使用总结
- RequestDispatcher 的使用总结
- RequestDispatcher的使用
- RequestDispatcher的使用
- RequestDispatcher的使用
- RequestDispatcher的使用
- requestdispatcher对象、sendRedirect的使用和路径问题
- RequestDisPatcher的用法
- RequestDispatcher的用法
- RequestDispatcher的forward方法
- RequestDispatcher
- RequestDispatcher
- RequestDispatcher
- RequestDispatcher
- RequestDispatcher
- RequestDispatcher
- RequestDispatcher
- 十、centos设置软件开机自动启动
- Bootstrap popover移动到内容上时不关闭
- 拓扑排序——用C++中STL实现
- lintCode Intersection of Two Arrays II
- iOS如何获得手机ip地址
- RequestDispatcher 的使用总结
- 如何判断一个实例或者一个类实现某接口呢?
- 让UIViewController中的viewDidLoad和viewWillAppear各司其责
- SELECT p.product_name,COUNT(*) FROM `pro_order` p GROUP BY p.product_name HAVING COUNT(*)>10;
- 文章标题C语言实现单链表之基础操作
- 浅析HashMap与ConcurrentHashMap的线程安全性
- 各种移动GPU压缩纹理的使用方法
- springmvc 过滤 不返回值为NULL的数据
- 乱码以及restful风格