使用getRequestDispatcher了解JSP代码行

时间:2017-06-20 15:01:31

标签: java jsp servlets

req.getRequestDispatcher("jsp/viewArticles.jsp").forward(req, resp);

所以我们得到了Request的Dispatcher,并提供了路径。好到目前为止。现在我们转发reqresp

现在我迷路了:我们从RequestDispatcher获得了req,因此RequestDispatcherreq的成员方法。那么为什么我们需要forward req本身呢RequestDispatcher呢?此方法只能使用this来访问req吗?

我发现了一个与我相同的问题,但它不理解解释,这就是为什么我再次要求作为一个绝对的servlet初学者。

How do the getRequestDispatcher() and forward() methods work?

为了澄清,reqresp分别属于HttpServletRequestHttpServletResponse类型。

2 个答案:

答案 0 :(得分:0)

从API开发,RequestDispatcher是一个对象,它接收来自客户端的请求并将它们发送到服务器上的任何资源(例如servlet,HTML文件或JSP文件)。 servlet容器(又名Tomcatt)创建RequestDispatcher对象,该对象用作位于特定路径或由特定名称给出的服务器资源的包装器

getRequestDispatcher()方法可从当前的Request Object或当前的Servlet Context Object获得。在相同的上下文中使用req.getRequestDispatcher(path)作为相对路径,并且更喜欢ServletContext.getRequestDispatcher(path)作为绝对路径。

在转发之前,您可以使用req.setAttribute(" key",valueObject)方法将参数Object作为属性添加到服务器端的参数。请求处理来自客户端的数据,您可以完成它,响应将处理页面,标题,cookie等等到客户端。

希望这可以提供帮助

答案 1 :(得分:0)

RequestDispatcher的JavaDoc中有一个提示:

var func = {
  temp: function(arg1, func_obj) {
    // do something with arg1
    if (trigger1) {
      func_obj.in_func(/* get params */);
    }
    else (trigger2) {
      func_obj.in_func2(/* get params */);
    }
  }
}

基本上,您可以通过ServletContext请求RequestDispatcher,在这种情况下,您只能使用绝对路径,或者您可以通过ServletRequest请求它,在这种情况下,您可以使用相对于该请求路径的路径。