RequestDispatcher
时间:2020-01-09 10:36:22 来源:igfitidea点击:
通过RequestDispatcher类,servlet可以从另一个servlet内部"调用"另一个servlet。调用另一个servlet就像浏览器已向其发送HTTP请求一样。
我们可以从HttpServletRequest
对象获得RequestDispatcher
,如下所示:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher requestDispatcher = request.getRequestDispatcher("/anotherURL.simple"); }
上面的代码获得了一个" RequestDispatcher",它针对映射到URL/ anotherUrl.simple
的任何Servlet(或者JSP)。
我们可以使用include()
或者forward()
方法调用RequestDispatcher
:
requestDispatcher.forward(request, response); requestDispatcher.include(request, response);
通过调用" include()"或者" forward()"方法,Servlet容器将激活任何映射到" RequestDispatcher" URL的Servlet。
激活的servlet可以访问与调用它的servlet相同的请求,并且将写入与当前servlet相同的响应。这样,我们就可以将servlet的输出合并到单个repsonse中。
调用forward()
和include()
方法之间有一点区别。
专用于转发请求的forward()
方法,意味着在调用servlet的响应已提交之后。我们不能使用此方法合并响应输出。
" include()"方法合并了由调用servlet和激活的servlet编写的响应。这样,我们可以使用include()实现"服务器端包含"。