req.getRequestDispatcher("jsp/viewArticles.jsp").forward(req, resp);
因此我们获得了请求的调度程序,并提供了路径。到目前为止还好。现在我们将 req
和 resp
转发给它。
现在我迷路了:我们从这个 req
中获取 RequestDispatcher
,所以 RequestDispatcher
是 req
的成员方法。那么为什么我们还需要forward
req
本身到这个RequestDispatcher
呢?这个方法不能只使用 this
来访问 req
吗?
我发现了一个与我相同的问题,但它不理解解释,这就是为什么我作为一个绝对的 servlet 初学者再次询问。
How do the getRequestDispatcher() and forward() methods work?
为了澄清,req
和 resp
分别是 HttpServletRequest
和 HttpServletResponse
类型。
最佳答案
从 API 开始,RequestDispatcher 是一个对象,它接收来自客户端的请求并将它们发送到服务器上的任何资源(例如 servlet、HTML 文件或 JSP 文件)。 Servlet 容器(又名 Tomcatt)创建 RequestDispatcher 对象,该对象用作位于特定路径或由特定名称指定的服务器资源的包装器
getRequestDispatcher() 方法可从当前 Request 对象或当前 Servlet Context 对象获取。在同一上下文中使用 req.getRequestDispatcher(path) 作为相对路径,并且更喜欢使用 ServletContext.getRequestDispatcher(path) 作为绝对路径。
在转发之前,您可以使用 req.setAttribute("key", valueObject ) 方法将参数对象添加为属性,以将参数转发到服务器端。 Request处理来自客户端的数据,你可以完成它,Response将处理页面、headers、cookie等给客户端。
希望这能有所帮助
关于java - 使用 getRequestDispatcher 了解 JSP 代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44656645/