当前位置: 首页 > news >正文

web项目中各种路径的获取

1.可以在servlet的init方法里

String path = getServletContext().getRealPath("/");
这将获取web项目的全路径
例如 :E:\eclipseM9\workspace\tree\
tree是我web项目的根目录
2.你也可以随时在任意的class里调用
this.getClass().getClassLoader().getResource("/").getPath();
这将获取 到classes目录的全路径
例如 : E:\eclipseM9/workspace/tree/WEB-INF/classes/
这个方法也可以不在web环境里确定路径,比较好用
3.request.getContextPath();
获得web根的上下文环境
如 /tree www.2cto.com
tree是我的web项目的root context
/*jsp 取得当前目录的路径
path=request.getRealPath("");
/*得到jbossWEB发布临时目录 warUrl=.../tmp/deploy/tmp14544test-exp.war/
path=C:\jboss-4.0.5.GA\server\default\tmp\deploy\tmp14544test-exp.war\
String path = (String)request.getContextPath();
/*得到项目(test)应用所在的真实的路径 path=/test 
String path = request.getRequestURI();
/*得到应用所在的真实的路径 path=/test/admin/admindex.jsp
String savePath=request.getRealPath(request.getServletPath());
/*得到当前文件的磁盘绝对路径
//JAVA 取得当前目录的路径
File file=new File("."); 
String path=file.getAbsolutePath();
path=file.getPath();
/*得到jboss运行目录 path=C:\jboss-4.0.5.GA\bin\
---------------------------------------------
Java相对路径/绝对路径总结
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。
另外关于URI,URL,URN等内容,请参考RFC相关文档标准。
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)
 
2.关于JSP/Servlet中的相对路径和绝对路径。
2.1服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端 浏览器解析的)也就是说这时候在 jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http: //192.168.0.1/webapp/的。
其用到的地方有:
forward:servlet中的request.getRequestDispatcher(address);这个address是在服 务器端解析的,所以,你要forward到a.jsp应该这么写:request.getRequestDispatcher(“/user /a.jsp”)这个/ 相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。 sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2.22、客户端的地址
所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的,而不是(跟目录下的该Web应用的目 录) http://192.168.0.1/webapp/的。 Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,所以,如果提交到a.jsp 为:action="/webapp/user/a.jsp"或action="<%=request.getContextPath()% >"/user/a.jsp;
提交到servlet为actiom="/webapp/handleservlet" Javascript也是在客户端解析的,所以其相对路径和form表单一样。
 
因此,一般情况下,在JSP/HTML页面等引用的 CSS,Javascript.Action等属性前面最好都加上
<%=request.getContextPath()%>,以确保所引用的文件都属于Web应用中的目录。另外,应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径,这样当文件移动时,很容易出问题。
 
3. JSP/Servlet中获得当前应用的相对路径和绝对路径
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径  :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
4.java 的Class中获得相对路径,绝对路径的方法
4.1单独的Java类中获得绝对路径
根据java.io.File的Doc文挡,可知:
默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
一下程序获得执行类的当前路径
package org.cheng.file; 
 
import java.io.File; 
 
public class FileTest ...{ 
public static void main(String[] args) throws Exception ...{ 
System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); 
 
System.out.println(FileTest.class.getClassLoader().getResource("")); 
 
System.out.println(ClassLoader.getSystemResource("")); 
System.out.println(FileTest.class.getResource("")); 
System.out.println(FileTest.class.getResource("/")); 
//Class文件所在路径 
System.out.println(new File("/").getAbsolutePath()); 
System.out.println(System.getProperty("user.dir")); 
} 
}
4.2服务器中的Java类获得当前路径
(1).Weblogic
WebApplication的 系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:beaweblogic700.....
那么,你的文件根路径就是c:.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:yourconfigyourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放
在yourwebappyourconfigyourconf.properties,
这样使用:
new FileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。
(2).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下
(4).如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web
发布根路径下WEB-INF/classes
默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。
总结:
通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻
对其他方面的理解可以更加深入和透彻。
这是在Java中去当前项目的根目录的方法
java 代码
/** *//** 
* TODO 取得当前项目的根目录 
* @author PHeH
*/ 
public class Application ...{ 
 
/** *//** 
* TODO 获取根目录 
* @return 
* @author PHeH
*/ 
public static String getRootPath()...{ 
//因为类名为"Application",因此" Application.class"一定能找到 
String result = Application.class.getResource("Application.class").toString(); 
int index = result.indexOf("WEB-INF"); 
if(index == -1)...{ 
index = result.indexOf("bin"); 
} 
result = result.substring(0,index); 
if(result.startsWith("jar"))...{ 
// 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径 
result = result.substring(10); 
}else if(result.startsWith("file"))...{ 
// 当class文件在class文件中时,返回"file:/F:/ ..."样的路径 
result = result.substring(6); 
} 
if(result.endsWith("/"))result = result.substring(0,result.length()-1);//不包含最后的"/" 
return result; 
} 
}

 

转载于:https://www.cnblogs.com/liaojie970/p/5226800.html

相关文章:

  • hdu 1081 dp问题:最大子矩阵和
  • ssh 命令
  • 0302思考并回答一些问题
  • html怎么添加背景图片
  • python的种类
  • 中国人民大学2016年硕士研究生复试基本要求
  • 韩顺平循序渐进学java 第08讲 this.类变量.类方法
  • 【Git】webstorm设置git
  • 尝试编辑java程序
  • JAVA经验技巧
  • 人生苦短,何必在乎太多
  • ruby简单的基础 5
  • 【Xamarin挖墙脚系列:打造独特的Xamarin.IOS开发环境】
  • 记考研高数第一课
  • C++ Primer Plus学习:第二章
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • Android交互
  • Flex布局到底解决了什么问题
  • git 常用命令
  • Git学习与使用心得(1)—— 初始化
  • JavaScript学习总结——原型
  • JAVA并发编程--1.基础概念
  • js
  • Js基础知识(四) - js运行原理与机制
  • JS专题之继承
  • PhantomJS 安装
  • python学习笔记-类对象的信息
  • 读懂package.json -- 依赖管理
  • 王永庆:技术创新改变教育未来
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • linux 淘宝开源监控工具tsar
  • 进程与线程(三)——进程/线程间通信
  • ​520就是要宠粉,你的心头书我买单
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (C语言)字符分类函数
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)项目管理杂谈-我所期望的新人
  • .net Application的目录
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net framework profiles /.net framework 配置
  • .Net6使用WebSocket与前端进行通信
  • .Net程序帮助文档制作
  • .net生成的类,跨工程调用显示注释
  • .NET学习教程二——.net基础定义+VS常用设置
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [bzoj2957]楼房重建
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C#]winform部署yolov9的onnx模型
  • [C++参考]拷贝构造函数的参数必须是引用类型