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()实现"服务器端包含"。

