Java Web类路径,项目路径的获取问题
//类加载根路径 String classPath = this.getClass().getResource("/").getPath(); //类加载根路径 URL xmlPath = this.getClass().getClassLoader().getResource(""); //类所在工程根路径 String proClassPath = this.getClass().getResource("").getPath(); //项目服务器脚本文件路径 File directory = new File("");// 参数为空 String proRootPath = directory.getCanonicalPath(); //项目服务器脚本文件路径 String proPath = System.getProperty("user.dir"); // 获取所有的类路径 包括jar包的路径 String allClassPath = System.getProperty("java.class.path"); //项目部署的路径 String path = request.getSession().getServletContext().getRealPath("/"); System.out.println("类加载根路径:" + classPath); System.out.println("类加载根路径:" + xmlPath); System.out.println("类所在工程路径:" + proClassPath); System.out.println("项目服务器脚本文件路径:" + proRootPath); System.out.println("项目服务器脚本文件路径:" + proPath); System.out.println("项目部署的路径:" + allClassPath ); System.out.println("获取所有的类路径:" + path );
结果如下:
类加载根路径:/D:/workspace/Training2016/04-PG/0401-Source/base2016/base_web/target/base_web-1.0-SNAPSHOT/WEB-INF/classes/ 类加载根路径:file:/D:/workspace/Training2016/04-PG/0401-Source/base2016/base_web/target/base_web-1.0-SNAPSHOT/WEB-INF/classes/ 类所在工程路径:/D:/workspace/Training2016/04-PG/0401-Source/base2016/base_web/target/base_web-1.0-SNAPSHOT/WEB-INF/classes/com/study/mvc/ 项目服务器脚本文件路径:D:apache-tomcat-8.0.361in 项目服务器脚本文件路径:D:apache-tomcat-8.0.361in 项目部署的路径:D:workspaceTraining2016 4-PG 401-Sourcease2016ase_web argetase_web-1.0-SNAPSHOT 获取所有的类路径:D:apache-tomcat-8.0.361inootstrap.jar;D:apache-tomcat-8.0.361in omcat-juli.jar
项目路径如图所示,target为部署的位置
注意此处可能request获取不到,获取request的方法有很多:
1.通过注解获取(推荐): public class Hello { @Autowired HttpServletRequest request; //这里可以获取到request } 2.在web.xml中配置一个监听: <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> java代码: HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 3.直接在参数中传递: public String hello(HttpServletRequest request) 4.如果有Struts: HttpServletRequest request = ServletActionContext.getRequest();
有时request.getSession().getServletContext().getRealPath(“/”);获取到的路径不是tomcat的路径
D:workspace.metadata.pluginsorg.eclipse.wst.server.core mp0wtpwebapps....
这个的原因其实 D:workspace.metadata.pluginsorg.eclipse.wst.server.core mp0 这个目录就是eclipse的对 D:Tomcat 7.0 目录的一个克隆,从而使 D:workspace.metadata.pluginsorg.eclipse.wst.server.core mp0 也能够具备源服务器的功能。