java web怎么获取class类的编译路径

java web怎么获取class类的编译路径,第1张

javaweb中的java文件会在服务器中生成class文件,比如tomcat目录下的webapps目录下,放你的javaweb项目,在项目中有个WEB-INF目录,里面有一个classes文件夹,里面放的都是对源码进行编译后生成的class文件

读取配置文件 , xxxproperties放在webroot/WEB-INF/classes/目录下

首先将配置文件转换成InputStream,有两种方式,原理一样,都是通过类加载器得到资源:

(1)InputStream inputStream = ThreadcurrentThread()getContextClassLoader()getResourceAsStream("xxproperties");

(2) InputStream inputStream =

thisgetClass() getClassLoader()getResourceAsStream( "xxproperties" );

调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,

而后在类类型上调用 getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父 子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就 是保证是和类类型同一个加载器加载的。

最后调用了类加载器的getResourceAsStream()方法来加载资源。

(3) 然后加载配置文件,读取属性值

Properties prop = new Properties();

propload(input);

String value = propgetProperty("PropertyName");

inputclose();

如果通过servelet来读取上传文件路径,则代码如下,我已经在项目中用过了:

DiskFileItemFactory difif = new DiskFileItemFactory();

dififsetSizeThreshold(321024);dififsetRepository(new File(tmpDir));        //

用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(difif);

sfusetSizeMax(MAX_SIZE);

List fileList = sfuparseRequest(request);

if ( fileList == null || fileListsize() == 0) {                throw new Exception("

导入文件不存在,请检

查");} else {                File upLoadFile = null;                Iterator fileIterator = fileListiterator();

//得到所有上传的文

件                while (fileIteratorhasNext()) {                    FileItem fileItem = (FileItem)fileIteratornext();                    //

取得上传文件

名                    if (fileItemgetContentType() == null) {                    } else {

                        //

此为路

径                        String path = fileItemgetName();                        String t_ext = pathsubstring(pathlastIndexOf("") + 1);                                                //

根据系统时间生成上传后保存的文件

名                        String prefix = StringvalueOf(SystemcurrentTimeMillis());                        //

保存最终的文件完整路径,保存在工程根目录下的Upload目录

下                        String u_name = tmpDir + Fileseparator + prefix + "" + t_ext;                                                //

开始保存文

件                        upLoadFile = new File(u_name);                        fileItemwrite(upLoadFile);                    }                }            }

public class $ {

    public static void main(String[] args) {

        String path = SystemgetProperty("userdir") + "/src/html/emailhtml";

        Systemoutprintln(path);

    }

}

动态获取路径

以上就是关于java web怎么获取class类的编译路径全部的内容,包括:java web怎么获取class类的编译路径、java web工程,读取配置文件路径问题、java web项目java后台获取前台js上传文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10040231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存