java(JSP)中几种获取项目路径方式

摘要:
jsp和类文件中调用的相对路径不同。在jsp中,根目录是类文件中的WebRoot,而根目录是WebRoot/WEB-INF/class。当然,您也可以使用System。getProperty获取项目的绝对路径。
  1. 在jsp和class文件中调用的相对路径不同。在jsp里,根目录是WebRoot在class文件中,根目录是WebRoot/WEB-INF/classes当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。
  2. 另:在Jsp,Servlet,Java中详细获得路径的方法!
  3. 1.jsp中取得路径:
  4. 以工程名为TEST为例:
  5. (1)得到包含工程名的当前页面全路径:request.getRequestURI()
  6. 结果:/TEST/test.jsp
  7. (2)得到工程名:request.getContextPath()
  8. 结果:/TEST
  9. (3)得到当前页面所在目录下全名称:request.getServletPath()
  10. 结果:如果页面在jsp目录下/TEST/jsp/test.jsp
  11. (4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
  12. 结果:D: esinwebappsTEST est.jsp
  13. (5)得到页面所在服务器的绝对路径:absPath=newjava.io.File(application.getRealPath(request.getRequestURI())).getParent();
  14. 结果:D: esinwebappsTEST
  15. 2.在类中取得路径:
  16. (1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
  17. 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
  18. (2)得到工程的路径:System.getProperty("user.dir")
  19. 结果:D:TEST
  20. 3.在Servlet中取得路径:
  21. (1)得到工程目录:request.getSession().getServletContext().getRealPath("")参数可具体到包名。
  22. 结果:E:TomcatwebappsTEST
  23. (2)得到IE地址栏地址:request.getRequestURL()
  24. 结果:http://localhost:8080/TEST/test
  25. (3)得到相对地址:request.getRequestURI()
  26. 结果:/TEST/test

struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题,

最好不要设置,使用struts默认

需要使用路径时,用下面的方法取得项目根目录的绝对路径(Tools为方法类)

public static String getRootPath() {
String classPath = Tools.class.getClassLoader().getResource("/").getPath();
String rootPath = "";
//windows下
if("\".equals(File.separator)){
rootPath = classPath.substring(1,classPath.indexOf("/WEB-INF/classes"));
rootPath = rootPath.replace("/", "\");
}
//linux下
if("/".equals(File.separator)){
rootPath = classPath.substring(0,classPath.indexOf("/WEB-INF/classes"));
rootPath = rootPath.replace("\", "/");
}
return rootPath;
}

免责声明:文章转载自《java(JSP)中几种获取项目路径方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在Ubuntu 20.04 / 18.04或更老版本中安装ifconfigAndroid中SD卡内容读取和简易FTP文件上传(番外)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity Job System

  参考链接 :    http://esprog.hatenablog.com/entry/2018/05/19/150313   https://blogs.unity3d.com/2018/10/22/what-is-a-job-system/   Job系统作为一个多线程系统, 它因为跟ECS有天生的融合关系所以比较重要的样子, 我也按照使用类型的...

IntelliJ IDEA安装及jsp开发环境搭建

一、前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目,一直想吐槽为嘛java项目只能import。昨天一路踩坑,花了一整天的时间搭建好jsp的开发环境,特此记录下安装过程中一些注意的问题以及解决方案。整个过程槽点...

numpy随机索引(不重复)和打乱元素

def getRandomIndex(n, x): # 索引范围为[0, n),随机选x个不重复,注意replace=False才是不重复,replace=True则有可能重复 index = np.random.choice(np.arange(n), size=x, replace=False) return index getRa...

Hive函数:SUM,AVG,MIN,MAX

转自:http://lxw1234.com/archives/2015/04/176.htm,Hive分析窗口函数(一) SUM,AVG,MIN,MAX 之前看到大数据田地有关于max()over(partition by)的用法,今天恰好工作中用到了它,但是使用中遇到了一个问题:在max(rsrp)over(partition by buildingid...

Groovy动态添加方法和属性及Spock单测

在最近的一边学习一边复习的过程中,发现了很多有意思的事情。今天就分享一个groovy.lang.MetaClass应用:如何运行中,动态给类和对象增加属性和添加方法。 对于Java、Groovy来讲,如果用到一个类,那么这个类的属性和方法已经是固定的,可是随着我的学习,发现这个常识并不靠谱。下面开始我的表演。 添加对象方法 下面是简化的语法object.m...

【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数

前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志、命令行参数。 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备。ns-3并非一个专门的因特网模拟器,而是一个网络模拟器。为此不采用术语“主机”,因为这个词太容易让人联想到因特网以及相关协议。因此,选用其他术语:节点。 可以将节点理...