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