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


因此,我们获得了请求的分派器,并提供了路径。好的,到目前为止。现在,我们将其转发给reqresp

现在我迷路了:我们从此RequestDispatcher获得req,所以RequestDispatcherreq的成员方法。那么为什么我们仍然需要为此forward req RequestDispatcher本身呢?这种方法不能仅使用this访问req吗?

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

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

为了澄清起见,reqresp分别是HttpServletRequestHttpServletResponse类型。

最佳答案

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

getRequestDispatcher()方法可从当前请求对象或当前Servlet上下文对象获得。将req.getRequestDispatcher(path)用于同一上下文中的相对路径,而将ServletContext.getRequestDispatcher(path)用作绝对路径。

在转发之前,您可以使用req.setAttribute(“ key”,valueObject)方法将参数Object作为属性添加到服务器参数。 Request处理来自客户端的数据,您可以完成它,然后Response将处理页面,标头,Cookie等到客户端。

希望这可以帮助

09-10 23:08