getContextPath返回的是相對路徑,工程的項目的相對路徑;
getRealPath返回的絕對路徑,就是在文件系統的實際路徑;
下面是我自己做的實驗,在SpringMvc+Spring+Hibernate的項目中做的實驗
@Controller
public class IndexController {
@RequestMapping("/")
public String index(HttpServletRequest request){
System.out.println(request.getContextPath());
System.out.println(request.getSession().getServletContext().getContextPath());
System.out.println(request.getServletContext().getContextPath());
System.out.println(request.getServletContext().getRealPath("/"));
System.out.println(request.getSession().getServletContext().getContextPath());
System.out.println(request.getSession().getServletContext().getRealPath("/"));
return "index";
}
}
上面的打印結果如下:
/cn.test
/cn.test
/cn.test
E:\StudyResource\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\cn.test\
/cn.test
E:\StudyResource\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\cn.test\
其實request、session、ServletContext調用getContextPath返回的結果是相同的