转发:RequestDispatcher rd = request.getRequestDispatcher(“XXX”);
rd.forward(request,response);
XXX是从应用程序的目录开始的路径
重定向:response.sendRedirect(“XXX”);
XXX是从服务器根路径开始的
例子:
有一个文件路径是http://localhost:8080/myapplication/servlet/success.jsp
转发到该路径下的文件的XXX是/servlet/success.jsp
重定向到该页面的XXX是request.getContextPath()+"/servlet/success.jsp"
ps:说明一下几个路径问题(转自几个关于路径的解析)
out.println("getContextPath: "+request.getContextPath()+"<br/>");
out.println("getServletPath: "+request.getServletPath()+"<br/>");
out.println("getRealPath: "+request.getRealPath("/")+"<br/>");
out.println("getRequestURL: "+request.getRequestURL()+"<br/>");
out.println("getRequestURI: "+request.getRequestURI()+"<br/>");
getContextPath: /ckswzl
getServletPath: /admin/login.jsp
getRealPath: D:\document\EclipseWorkSpace2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ckswzl\
getRequestURL: http://localhost:8080/ckswzl/admin/login.jsp
getRequestURI: /ckswzl/admin/login.jsp
getContextPath是返回的项目上下文的名字(其实也就是项目名);
getServletPath是返回的是项目名到当前jsp文件的路径(意思就是在这个项目首页到文件的路径)
getRequestURI是返回的是项目名到整个文件的请求路径
getRealPath是返回的文件所在的绝对路劲。相对于当前计算机的真实路径
getRequestURL是返回的整个URL的路径请求(意思就是返回的浏览器地址栏的整个地址)
request.getPathInfo();这个方法返回请求的实际URL相对于请求的serlvet的url的路径。