req.getRequestDispatcher("jsp/viewArticles.jsp").forward(req, resp);
所以我们得到了Request的Dispatcher,并提供了路径。好到目前为止。现在我们转发req
和resp
。
现在我迷路了:我们从RequestDispatcher
获得了req
,因此RequestDispatcher
是req
的成员方法。那么为什么我们需要forward
req
本身呢RequestDispatcher
呢?此方法只能使用this
来访问req
吗?
我发现了一个与我相同的问题,但它不理解解释,这就是为什么我再次要求作为一个绝对的servlet初学者。
How do the getRequestDispatcher() and forward() methods work?
为了澄清,req
和resp
分别属于HttpServletRequest
和HttpServletResponse
类型。
答案 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请求它,在这种情况下,您可以使用相对于该请求路径的路径。