`
yinlongfei
  • 浏览: 153527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于serveletContext.getRealPath()获得应用绝对路径的问题

    博客分类:
  • java
阅读更多

request.getRealPath用于获取应用的绝对路径,但现在已经建议不要使用了。

由于在servlet中使用getServletContext.getRealPath()方法受到war 和non-war的影响,以及不同app server实现的影响,莫名地常常会得到null。

原因在于:对一个打包的应用来说,是没有RealPath的概念的,调用getRealPath只会简单地返回null。其实,也很好理解,一个文件被打包入了.war文件,就不存在目录结构了(虽然包中仍然存在目录结构,但这不等同于文件系统中的目录结构)。所以,对war包中的资源是无法得到RealPath的。这样也就无从通过文件IO进行读取了。
解决的方法如下:
使用servletContext.getResourceAsStream():

如获取war中的资源路径 servletContext.getResourceAsStream("/WEB-INF/resource/test.config")方法。

 

原则:基本上就是尽量使用j2ee规范中的各层次classloader来获取资源,而不是试图去找文件的绝对路

方法:调用this.getClass().getClassLoader().getResource("/").getPath(); 获取到classes目录的全路径

使用:在得到classes目录的全路径后再根据字符串的截取与拼装达到你的要求即可。

 

绝对不要使用ServletContext的getRealPath方法获取Web应用的路径!应该使用ServletContext的getResource()方法,直接使用相对于Web应用根目录的相对路径来获取资源。
 

 

 

分享到:
评论

相关推荐

    Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别.doc

    Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别

    struts2+spring2+ibates

    5、JSP/Servlet中获得当前应用的相对路径和绝对路径 JSP中获得当前应用的相对路径和绝对路径 根目录所对应的绝对路径:request.getRequestURI() 文件的绝对路径:application.getRealPath(request.getRequestURI...

    Struts Updownload 源码

    String realPath=ServletActionContext.getServletContext().getRealPath("/"+this.getPath()+"/"+fileName); System.out.println(realPath); return ServletActionContext.getServletContext()....

    Java获取*路径实现探讨

    //不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath...

    javaweb 做图片水印,水印图片到目录图片上去

    //获取目标图片的路径String targetPic = request.getSession().getServletContext().getRealPath("/image").replace("\\", "/")+"/"+ad.getId()+"."+ad.getExttype(); //给目标图片加水印,name为水印图片,targetPic...

    GetRealPath.java

    用于添加其他应用列表打开文件获取微信QQ 分享过来的文件真实路径,并替换路径中存在的编码格式问题,解决文件上传媒体库找不到传输的文件,可以在微信,QQ中直接选择自己的应用打开,并获取到文件的路径!

    getServletContext()空指针异常的原因

    getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因getServletContext()空指针异常的原因

    JS取得绝对路径的实现代码

    在项目中,我们经常要得到项目的绝对路径,方便我们上传下载文件,JS为我们提供了方法,虽说要迂回一下。代码如下: function getRealPath(){ //获取当前网址,如: http://localhost:8083/myproj/view/my.jsp ...

    jsp 对文件的操作

    String path=request.getRealPath(""); path=path + "\Sub";//将要建立的目录路径 File d=new File(path);//建立代表Sub目录的File对象,并得到它的一个引用 if(d.exists()){//检查Sub目录是否存在

    fileutil工具类 处理文件流工具

    fileutil工具类 处理文件流工具 private static File file; /** * 判断文件是否存在 * * @param path * 文件路径 * @return boolean ... public static ....getRealPath(path)); return file.exists(); }

    struts1.2 上传和下载

    struts1.2 的上传和下载, 如果需要得到相对路径, 加一个 String path=request.getSession().getServletContext().getRealPath(); 就行了 ,这个就是comcat下的项目路径。

    图片上传filemover.jar,uploadbean.jar,cos.jar

    String sWebRootPath = request.getRealPath("/"); String sPath=sWebRootPath+"file"; String sLocalFileName = ""; int iFileCount = 0; if ( (files != null) || (!files.isEmpty()) ) { UploadFile file = ...

    JSF文件下载实现

    // 取得文件的绝对路径 String realName = servletContext.getRealPath(path) + "/" + fileName; HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext .getCurrentInstance()....

    java结合jsp写的上传文件代码

    // 得到去除路径的文件名 String t_name = path.substring(path.lastIndexOf("\\") + 1); System.out.println(t_name); // 得到文件的扩展名(无扩展名时将得到全名) String t_ext = t_name.substring(t_name....

    java完整实现各种类型的文件上传和下载

    String path = this.getServletContext().getRealPath("/WEB-INF/upload"); 二、文件下载部分 1.访问地址一 http://localhost/UploadAndDownload/download.jsp 该地址实现的是通过超链接下载。 2.访问地址二 ...

    多附件上传与下载

    au.setSaveDir(this.servlet.getServletContext().getRealPath("/loadImage/"));//将图片放入存储文件路径 fileName=au.randomFileName(file.getFileName()); au.upload(au.getSaveDir()+File.separator+ ...

    struts2文件上传,与struts2-xml校验

    //获取跟文件夹的绝对路径,"/"代表获取跟路径 String path=ServletActionContext .getServletContext() .getRealPath("/"); System.out.print("path="+path); //定义一个日期格式作为自己的文件名 ...

    Servlet实现文件下载

    Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) ... String str = this.getServletContext().getRealPath("/download/隐形的翅膀 - 张韶涵正版.mp3");

    在JSP中处理虚拟路径

    在一个web服务器上,虚拟路径将物理上分离的各文件组合在一起,放在同一个站点路径上,在应用服务器上,每个应用定位于其自己的虚拟路径上,实际上相互之间有着完美地分离。getRealPath()方法JSP servlet API提供...

Global site tag (gtag.js) - Google Analytics