获取一个web资源的方式

本文探讨了在Web开发中如何正确获取应用内的资源文件路径,分析了相对路径、绝对路径及固定盘符路径的局限性,并介绍了利用ServletContext的getRealPath方法及类加载器getResource方法动态获取资源绝对路径的解决方案。

 

     在web开发中, 如果要在程序中获取web应用的资源文件, 需要写一个路径时:

 (1) 如果写一个相对路径 File file  = new File("conf.properties"); 这时会到程序启动的目录下去寻找这个资源, 对于web应用来说, web应用是在容器中运行的, 这时候就会到tomcat/bin目录下去找这个文件, 找不到!!

 (2) 如果写一个绝对路径, 则会到程序启动目录的硬盘根目录去找这个资源文件, 也找不到!!

 (3) 写一个盘符开始的硬盘路径, 可以解决这个问题, 但是这种写法一旦换一个发布环境, 路径很可能是错误的. 这种写法也不可取!!

         可以通过ServletContext提供的方法来解决这个路径问题:

         sc.getRealPath("xxx"); 传入一个相对于web应用根目录的资源文件的路径, 这个方法会在传入的路径的前面动态的拼接上当前web应用根目录的硬盘路径, 从而拼接出当前资源文件的硬盘路径, 由于web应用的根目录的硬盘路径是动态获取的. 没有写死, 即使换一个发布环境, 也能获取到正确的路径

         WEB应用在开发和部署时使用的是不同的路径,开发是在workspace里面,部署是在WEB服务器上,在开发时很可能不知道未来应用部署的绝对路径.在读取一些资源时,需要指定该资源的绝对路径,就需要通过方法来动态获取当前应用所在的绝对路径.解决方案就是通过调用ServletContext对象的getRealPath(path)方法,其中path指定的是相对于Web应用的路径,该方法会返回该资源的绝对路径.

          当没有ServletContext对象可以使用时, 可以通过类加载器来加载资源, 类加载器提供了方法来加载资源, 但是要求传入的文件路径必须是相对于类加载器加载类的路径:

                   getResource(xxx)

                   getResourceAsStream(xxx)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值