java中获取各种上下文路径的方法小结
一、获得都是当前运行文件在服务器上的绝对路径
在servlet里用:
this.getServletContext().getRealPath();
在struts用:
this.getServlet().getServletContext().getRealPath();
在Action里用:
ServletActionContext.getRequest().getRealPath();
以上三个获得都是当前运行文件在服务器上的绝对路径
其实:
request.getRealPath("url"); // 虚拟目录映射为实际目录
request.getRealPath() 这个方法已经不推荐使用了,代替方法是:
request.getSession().getServletContext().getRealPath();
二、request获取各种路径总结
request.getRealPath("url"); // 虚拟目录映射为实际目录
request.getRealPath("./"); // 网页所在的目录
request.getRealPath("../"); // 网页所在目录的上一层目录
request.getContextPath(); // 应用的web目录的名称
如http://localhost:7001/bookStore/
/bookStore/ => [contextPath] (request.getContextPath())
获取Web项目的全路径
String strDirPath =request.getSession().getServletContext().getRealPath("/");
以工程名为news为例: http://localhost:8080/news/main/list.jsp
(1) 得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/news/main/list.jsp
(2) 得到工程名:request.getContextPath()
结果:/news
(3) 得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /main/list.jsp
(4) 得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/news/main/list.jsp
(5) 得到相对地址:request.getRequestURI()
结果:/news/main/list.jsp
(6) 得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:\resin\webapps\news\main\list.jsp
(7) 得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:\resin\webapps\news
三、在类中取得路径
(1) 类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
例如:
String path=this.getClass().getResource("/").getPath();//得到d:/tomcat/webapps/工程名WEB-INF/classes/路径
path=path.substring(, path.indexOf("WEB-INF/classes"));//从路径字符串中取出工程路径
(2) 得到工程的路径:System.getProperty("user.dir")
结果:D:\TEST
四、在Servlet中取得路径
(1) 得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:\Tomcat\webapps\news
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(Test.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(Test.class.getResource(""));
System.out.println(Test.class.getResource("/")); //Class文件所在路径
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
五、系统路径说明:
System.getProperty("user.dir")
如果是.bat或者.sh文件的话,那么该语句输出的时候.bat或者.sh所在的文件路径;
如果是weblogic服务器且由类输出的话,该语句输出的路径是./startWebLogic.sh文件所在的路径

String osName = System.getProperties().getProperty("os.name");
if(osName.equals("Linux")){
System.setProperty("CPATH",System.getProperty("user.dir")+"/cssconfig.properties");
}else{
System.setProperty("CPATH",System.getProperty("user.dir")+"\\cssconfig.properties");
}
根据操作系统设定不同路径。
java中获取各种上下文路径的方法小结的更多相关文章
- Java中获取项目根路径和类加载路径的7种方法
引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...
- java中获取日期和时间的方法总结
1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下: 要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...
- 干货 | Java中获取类名的3种方法!
获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...
- JAVA中获取文件MD5值的方法
1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获 ...
- JAVA中获取当前系统时间及格式转换
JAVA中获取当前系统时间 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...
- JAVA中获取当前系统时间
一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...
- java中获取系统的当前时间
转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输出: import java ...
- JAVA中获取项目文件路径
在java中获得文件的路径在我们做上传文件操作时是不可避免的. web 上运行 1:this.getClass().getClassLoader().getResource("/" ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
随机推荐
- Linux Shell基础 Shell的输入重定向和输出重定向
概述 在 Linux 中输入设备指的是键盘,输出设备指的是显示器.在 Linux 中,所有的内容都是文件,计算机硬件也是文件,标准输入设备(键盘)和标准输出设备(显示器)也是文件.这些设备的设备文件名 ...
- VoLTE的前世今生...说清楚VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事...
转:https://mp.weixin.qq.com/s?__biz=MzA3MTA3OTIwMw==&mid=401344844&idx=1&sn=497b351f524af ...
- Struts2笔记01——基础MVC架构(转)
原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Apache Struts 2是用来创建企业级Java ...
- python中编写带参数decorator
考察上一节的 @log 装饰器: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 发 ...
- Java Collection API
在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结 ...
- 20145230java实验报告二
20145230实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 ...
- docker calico安装
第一步,安装etcd: 请参考以前的文章: http://www.cnblogs.com/vincenshen/articles/8637949.html 第二步,下载calico: sudo ...
- windows10添加电源计划修改的快捷方案
转自:http://news.mydrivers.com/1/431/431346.htm 由于目前的Windows 10预览版在UI方面还未优化到位,所以某些设置选项要想找出来是很难的,这时候如果能 ...
- DESeq2 install --- 如何安装R包("RcppArmadillo")?
安装R包("RcppArmadillo")失败,导致依赖该包的DESeq2 无法使用: 首先对gcc,g++升级至4.7, 但依然报错,还是安装不了RcppArmadillo: 报 ...
- linux jdk安装。
我使用的centos 7: 安转sun公司的jdk要先检查系统中是否安装jdk,一般来说Centos系统会默认会安装OpenJDK,但是openJDK部分内容 与SUN JDK不兼容,因此下面进行重新 ...