最近在读struts的原程序,摘录一些代码。以下是将一个请求forward到其他资源的代码
RequestDispatcher是分派处理request的资源。
在网上查了下资料,getServletContext().getRequestDispacher(uri)和request.getRequestDispatcher(uri)有所区别,如下:
[quote] 1、ServletRequest.getRequestDispatcher(String path)
path可是绝对路径也可以是相对路径
2、ServletContext.getRequestDispatcher(String path)
path必须以"/"开头,代表context root
3、另一个方法 ServletContext.getNameDispatcher(String name)
参数并不是路径,而是其名称,如果有多个Servlet名称一样的,在web.xml进行配置区别
4、以上方法回传一个RequestDispatcher对象,接着forward()或include()
5、forward()和include()区别在于include()方法将HTTP请求转送给其他Servlet或jsp后,这个Servlet或 jsp虽然可以处理请求,但是主导权还是原来的Servlet或jsp,就是被调用的Servlet或jsp如果产生任何HTTP回应,将会并入原来的 HttpResponse对象[/quote]
RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
rd.forward(request, response);
RequestDispatcher是分派处理request的资源。
在网上查了下资料,getServletContext().getRequestDispacher(uri)和request.getRequestDispatcher(uri)有所区别,如下:
[quote] 1、ServletRequest.getRequestDispatcher(String path)
path可是绝对路径也可以是相对路径
2、ServletContext.getRequestDispatcher(String path)
path必须以"/"开头,代表context root
3、另一个方法 ServletContext.getNameDispatcher(String name)
参数并不是路径,而是其名称,如果有多个Servlet名称一样的,在web.xml进行配置区别
4、以上方法回传一个RequestDispatcher对象,接着forward()或include()
5、forward()和include()区别在于include()方法将HTTP请求转送给其他Servlet或jsp后,这个Servlet或 jsp虽然可以处理请求,但是主导权还是原来的Servlet或jsp,就是被调用的Servlet或jsp如果产生任何HTTP回应,将会并入原来的 HttpResponse对象[/quote]