RequestDispatcher
从ServletRequest得到RequestDispatcher:
RequestDispatcher rd = request.getRequestDispatcher("result.jsp");
ServletRequest中的getRequestDispatcher()方法需要一个String路径作为参数,你要把请求转发到哪个资源,就要在这里指定这个资源的路径。
如果路径最前面有一个斜线(“/”),容器就会把这看做是“要从这个Web应用的根开始”。如果路径不是以斜线开头,则认为路径相对于原来的请求。
从ServletContext得到RequestDispatcher
RequestDispatcher rd = getServletContext().getRequestDispatcher("/result.jsp");
与ServletRequest中的相应方法一样,这个getRequestDispatcher()方法也取一个String路径作为参数,要把请求转发到哪个资源,就要在这里指定资源的路径,但是不能指定相对于当前资源(也就是接受此请求的资源)的路径。
这说明,路径必须以斜线开始!
RequestDispatcher只有两个方法:forward() 和 include()
但是常用的都是forward()方法来传递请求,servlet控制器很少调用include方法。 不过在jsp中会在<jsp:include>标准动作调用include方法