文档章节

关于Java和web工程项目中各种路径的获取总结

风中帆
 风中帆
发布于 2017/03/25 11:25
字数 1160
阅读 102
收藏 4

     关于Java和web工程项目中各种路径的获取总结

 
 
1.  获取web服务器项目的真实物理路径 
    request.getSession().getServletContext().getRealPath("/");  

2.  相对路径的获得 
    String relativelyPath=System.getProperty("user.dir");  

    上述相对路径中,java项目中的文件是相对于项目的根目录 
    web项目中的文件路径视不同的web服务器不同而不同 
    (tomcat是相对于tomcat安装目录\bin) 

3.  类加载目录的获得 (即当运行时某一类时获得其装载目录) 
   3.1. 通用的方法一 (不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)
     InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");  
      (test.txt文件的路径为项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)  
      上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可 

   3.2. 通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头) 
   InputStream is=Test1.class.getResourceAsStream("/test.txt"); 
   (test.txt文件的路径为项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)  

4.  web项目根目录的获得(发布之后) 
    4.1. 从servlet出发 ,可建立一个servlet在其的init方法中写入如下语句 
        ServletContext s1=this.getServletContext();  
        String temp=s1.getRealPath("/");   
      结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字) 
      如果是调用了s1.getRealPath("")则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个"\") 

    4.2. 从httpServletRequest出发 
        String cp11111=request.getSession().getServletContext().getRealPath("/"); 
      结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ 

5. classpath的获取 (在Eclipse中为获得src或者classes目录的路径) 
    5.1. 方法一
        Thread.currentThread().getContextClassLoader().getResource("").getPath();   
        String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();  
        System.out.println("t---"+t); 
        输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/  

    5.2. 方法二 
        JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同)    
        String p1=JdomParse.class.getClassLoader().getResource("").getPath();  
        System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);  
        输出: 
        JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/ 
        另外,如果想把文件放在某一包中,则可以通过以下方式获得到文件(先定位到该包的最后一级目录) 

        String p2=JdomParse.class.getResource("").getPath();  
        System.out.println("JdomParse.class.getResource---"+p2);  
            
        输出: 
        JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ 
        (JdomParse为src目录下jdom包中的类) 
        在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes

       当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。 

6.  在Jsp,Servlet,Java中详细获得路径的方法 
        6.1. jsp中取得路径: 
            以工程名为TEST为例: 
            (1)得到包含工程名的当前页面全路径:
                request.getRequestURI()  
                结果:/TEST/test.jsp 
                
            (2)得到工程名:
                request.getContextPath() 
                结果:/TEST 
                
            (3)得到当前页面所在目录下全名称:
                request.getServletPath() 
                结果:如果页面在jsp目录下 /TEST/jsp/test.jsp 

            (4)得到页面所在服务器的全路径:
                application.getRealPath("页面.jsp") 
                结果:D:\resin\webapps\TEST\test.jsp 

            (5)得到页面所在服务器的绝对路径:
                absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); 
            结果:D:\resin\webapps\TEST 


        6.2. 在类中取得路径: 
            (1)类的绝对路径:Class.class.getClass().getResource("/").getPath() 
                结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ 
            (2)得到工程的路径:
                System.getProperty("user.dir") 
                结果:D:\TEST 

        6.3. 在Servlet中取得路径: 
            (1)得到工程目录:
                request.getSession().getServletContext().getRealPath("") ;  

                参数可具体到包名。 
                结果:E:\Tomcat\webapps\TEST 

            (2)得到IE地址栏地址:
                request.getRequestURL()  
                结果:http://localhost:8080/TEST/test 

            (3)得到相对地址:
                request.getRequestURI()  
                结果:/TEST/test

 

示例:

以工程名为/DemoWeb为例: 
访问的jsp为:http://localhost:8080/DemoWeb/test/index.jsp 

    1 JSP中获得当前应用的相对路径和绝对路径 
    (1)得到工程名:request.getContextPath() 
        结果:/DemoWeb 

    (2)得到包含工程名的当前页面全路径:request.getRequestURI() 
        结果:/DemoWeb/test/testpath.jsp 

    (3)得到IE地址栏地址:request.getRequestURL() 
        结果:http://localhost:8080/DemoWeb/test/testpath.jsp 


    (4)得到当前页面所在目录下全名称:request.getServletPath() 
        结果:/test/testpath.jsp 

    (5)得到页面所在服务器的全路径(实际的路径):application.getRealPath("testpath.jsp") 
        结果:D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15\webapps\DemoWeb\testpath.jsp 
        D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15为tomcat的安装路径 
    
    (6)得到访问url后面的参数串
        String queryString = request.getQueryString();
        结果:name=zhangsan&age=10

    2.java 的Class中获得相对路径,绝对路径的方法 

    (1)类的绝对路径: 
        System.out.println(TestPath.class.getResource("/").getPath()); 
        结果:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/ 

        System.out.println(TestPath.class.getResource("")); 
        结果:file:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/demo1/ 

     (2)得到工程的路径:System.getProperty("user.dir")

本文转载自:http://blog.csdn.net/quincuntial/article/details/50249453

风中帆
粉丝 14
博文 198
码字总数 17695
作品 0
青岛
私信 提问
获取绝对路径 去除路径的% 空格问题

class 类: public static String getBasePath() { String savaPath = ""; savaPath = 类.class.getRecource("").getPath(); int i = savaPath.lastIndexOf("WEB-INF"); savaPath = savaPat......

Mr&Cheng
2013/01/20
258
0
JavaEE细节问题02——加载资源文件的三种方式

加载资源文件的三种方式 1.getRealPath 支持的工程类型:Web工程 能获取到什么:String类型的绝对路径 最初获取到的路径: Webroot目录下 2.类加载器 this.getClass.getClassLoader.getReso...

Lunqi
2015/08/14
69
0
使用Eclipse-Maven-git做Java开发(9)--eclipse新建maven结构工程

上一篇博客讲了如何使用eclipse的maven工程新建向导新建maven工程,但是发现新建出来的工程并不可用,经过探索,使用eclipse的普通向导新建符合maven结构的工程并且转换为maven工程,这个方法...

阿信sxq
2015/11/04
651
0
玩转阿里云函数计算(一)----Java Http 触发器极速迁移传统 Spring 应用

前言 阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台...

santihyt
05/21
0
0
关于Java对相对目录的文件读写和调用方法的一些总结

关于Java对相对目录的文件读写和调用方法的一些总结 首先要讲Java路径 Java中使用的路径,分为两种:绝对路径和相对路径。具体而言,又分为四种: 1.本地系统的绝对路径: 如: windows: C:a...

蔡熙伟
2011/09/22
7.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部