标签:功能 HTTP RequestDispatcher URL Servlet 具有 forward 方法
转自:
http://www.java265.com/Servlet/202206/266.html
下文笔者讲述RequestDispatcher的功能简介说明,如下所示:
RequestDispatcher的功能简介
RequestDispatcher是一个Web资源的包装器 可以用来把当前request传递到该资源 或把新的资源包括到当前响应中 RequestDispatcher接口中定义了两个方法: include/forward
例:
由<jsp:include>只能指定固定的jsp文件名 不能动态指定jsp文件名 我们需要把<jsp:include>翻译为Java code – RequestDispatcher.include(); 例: <% request.getRequestDispatcher(filename).include(request, response); />
服务器端的重定向可以有两种方式: 1.使用HttpServletResponse的sendRedirect()方法 2.使用RequestDispatcher的forward()方法. HttpServletResponse.sendRedirect()方法: 将响应定向到参数location指定的、新的URL location可以是一个绝对的URL 如 response.sendRedirect("http://java265.com")也可以使用相对的URL 如果location以“/”开 头,则容器认为相对于当前Web应用的根 否则,容器将解析为相对于当前请求的URL 这种重定向的方法,将导致客户端浏览器的请求URL跳转 从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现 RequestDispatcher.forward()方法: 将当前的request和response重定向到该RequestDispacher指定的资源 使用这种操作方式,可避免一个业务操作在后台直接进行操作
注意: 只有在尚未向客户端输出响应时才可以调用forward()方法 如果页面缓存不为空,在重定向前将自动清除缓存 否则将抛出一个IllegalStateException异常。 RequestDispatcher接口所定义的forward()方法 可以将HTTP请求转送给其他Web资源(如Servlet、JSP或HTML)进行处理 并产生HTTP回应。 调用forward()方法时必须注意下列两点 1.在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端, 否则将拋出IllegalStateException异常。 2.调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除 include()方法将把Request Dispatcher资源的输出包含到当前输出中 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);
标签:功能,HTTP,RequestDispatcher,URL,Servlet,具有,forward,方法 来源: https://www.cnblogs.com/java265/p/16334387.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。