如何通过Java代码获取tomcat服务器的绝对路径
//也许有你想要的,前提是在项目布署运行起来后,在servlet中或controller中运行以下代码即可。
Systemoutprintln(thisgetClass()getResource("/"));//结果:file:/E:/work/service/tomcat7065/webapps/mvc_adminlte/WEB-INF/classes/
Systemoutprintln(SystemgetProperty("catalinahome"));//结果:E:\work\service\tomcat7065
SystemgetProperty("userdir");//结果:E:\work\service\tomcat7065\bin
Systemoutprintln(requestgetSession()getServletContext()getRealPath("/"));//结果:E:\work\service\tomcat7065\webapps\你的项目名称\
希望能帮到你!
区别是目录所在层级不一样。
1、相对路径代表目前所在的目录。
2、绝对路径代表上一层目录。
绝对路径的优点 :
1、防止网站被恶意抄袭,使用绝对路径,如果有人抄袭采集你的内容,里面的链接还会指向你的网站。有些抄袭的比较懒,连里面的链接一起抄了过去。
2、如果站长不能做301转向,因而有网址规范化的问题,使用绝对路径有助于链接指向选定的URL版本。
3、就算网页被移动位置,里面的链接还是指向正确的URL。
绝对路径的缺点:
1、除非链接是动态插入的,不然没办法在测试服务器上进行测试。因为里面的链接将直接指向真正的域名URL,而不是测试服务器中的URL。
2、除非链接是动态插入的,不然移动内容页面将很困难。因为内容页面位置发生变化,在其他页面上的链接却可能无法跟着变化,还指向原来的已经硬编码的绝对路径。
绝对路径:一般是指文件在所在盘符的位置,而且是从盘符开始算起,如某文件位于“C:\Program Files\JiangMin”下面,那么这个路径就是它的绝对路径。
相对路径:可以理解为绝对路径的部分,且是后半部分,这是从当前所处位置而定的,如当前位置是在“C:\Program Files\”,那就可以说某文件处于“JiangMin”这个文件夹下。
用一个生活中的例子来说明一下,大家在写信时要写收信人的地址,如果你在国外的话,那地址那里你就应该写上国家,然后再写省份,再写详细的地址,这就是绝对路径,但如果都是在国内的话,那写上省份和详细的地址就行了,那这个地址你就可以理解为相对路径。
绝对路径是指目录下的绝对位置,直接到的目标位置。
相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。
HTML相对路径(Relative Path)和绝对路径(Absolute Path)。HTML初学者会经常遇到这样一个问题,如何正确引用一个文件。如果你在引用文件时(如加入超链接,或者插入等),使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的等)。为了避免这些错误,正确地引用文件,我们需要学习一下HTML路径。
网络应用中绝对路径的优点:
1、防止网站被恶意抄袭,使用绝对路径,如果有人抄袭采集你的内容,里面的链接还会指向你的网站。有些抄袭的比较懒,连里面的链接一起抄了过去。
2、如果站长不能做301转向,因而有网址规范化的问题,使用绝对路径有助于链接指向选定的URL版本。
3、就算网页被移动位置,里面的链接还是指向正确的URL。
绝对路径的缺点:
1、除非链接是动态插入的,不然没办法在测试服务器上进行测试。因为里面的链接将直接指向真正的域名URL,而不是测试服务器中的URL。
2、除非链接是动态插入的,不然移动内容页面将很困难。因为内容页面位置发生变化,在其他页面上的链接却可能无法跟着变化,还指向原来的已经硬编码的绝对路径。
一般在处理Web应用下的文件创建与移动等时,会涉及到很多关于java
中相对路径,绝对路径等问题。以下是一些总结。希望大家遇到类似的问题,可以更有效的解决。
=================================================================================
1基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\testtxt 代表了testtxt文件的绝对路径。http://wwwsuncom/indexhtm也代表了一个
URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的根目录。和物理路径的相对表示,例如:"/" 代表当前目录,
"/"代表上级目录。这种类似的表示,也是属于相对路径。
2关于JSP/Servlet中的相对路径和绝对路径。
21服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的
(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://127001/webapp/的。
其用到的地方有:
forward:servlet中的requestgetRequestDispatcher(address);这个address是
在服务器端解析的,所以,你要forward到ajsp应该这么写:
requestgetRequestDispatcher(“/user/ajsp”)这个/相对于当前的web应用webapp,
其绝对地址就是:http://19216801/webapp/user/ajsp。
sendRedirect:在jsp中<%responsesendRedirect("/rtccp/user/ajsp");%>
222、客户端的地址
所有的html页面中的相对地址都是相对于服务器根目录(http://127001/)的,
而不是(根目录下的该Web应用的目录)http://127001/webapp/的。
Html中的form表单的action属性的地址应该是相对于服务器根目录(http://127001/)的,
所以,如果提交到ajsp为:action="/webapp/user/ajsp"或action="<%=requestgetContextPath()%>"/user/ajsp;
提交到servlet为actiom="/webapp/handleservlet"
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
因此,一般情况下,在JSP/HTML页面等引用的CSS,JavascriptAction等属性前面最好都加上
<%=requestgetContextPath()%>,以确保所引用的文件都属于Web应用中的目录。
另外,应该尽量避免使用类似"","/","//"等类似的相对该文件位置的相对路径,这样
当文件移动时,很容易出问题。
3 JSP/Servlet中获得当前应用的相对路径和绝对路径
31 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:requestgetRequestURI()
文件的绝对路径:applicationgetRealPath(requestgetRequestURI());
当前web应用的绝对路径 :applicationgetRealPath("/");
取得请求文件的上层目录:new File(applicationgetRealPath(requestgetRequestURI()))getParent()
32 Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:requestgetServletPath();
文件的绝对路径 :requestgetSession()getServletContext()getRealPath
(requestgetRequestURI())
当前web应用的绝对路径 :servletConfiggetServletContext()getRealPath("/");
(ServletContext对象获得几种方式:
javaxservlethttpHttpSessiongetServletContext()
javaxservletjspPageContextgetServletContext()
javaxservletServletConfiggetServletContext()
)
4java 的Class中获得相对路径,绝对路径的方法
41单独的Java类中获得绝对路径
根据javaioFile的Doc文挡,可知:
默认情况下new File("/")代表的目录为:SystemgetProperty("userdir")。
一下程序获得执行类的当前路径
package orgchengfile;import javaioFile;
public class FileTest {
public static void main(String[] args) throws Exception {
Systemoutprintln(ThreadcurrentThread()getContextClassLoader()getResource(""));
Systemoutprintln(FileTestclassgetClassLoader()getResource(""));
Systemoutprintln(ClassLoadergetSystemResource(""));
Systemoutprintln(FileTestclassgetResource(""));
Systemoutprintln(FileTestclassgetResource("/")); //Class文件所在路径
Systemoutprintln(new File("/")getAbsolutePath());
Systemoutprintln(SystemgetProperty("userdir"));
}
}
42服务器中的Java类获得当前路径(来自网络)
(1)Weblogic
WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:\bea\weblogic700
那么,你的文件根路径就是c:\
所以,有两种方式能够让你访问你的服务器端的文件:
a使用绝对路径:
比如将你的参数文件放在c:\yourconfig\yourconfproperties,
直接使用 new FileInputStream("yourconfig/yourconfproperties");
b使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放
在yourwebapp\yourconfig\yourconfproperties,
这样使用:
new FileInputStream("/yourconfig/yourconfproperties");
这两种方式均可,自己选择。
(2)Tomcat
在类中输出SystemgetProperty("userdir");显示的是%Tomcat_Home%/bin
(3)Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根比如用新建文件法测试File f = new File("ahtm");
这个ahtm在resin的安装目录下
(4)如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass()getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web
发布根路径下WEB-INF/classes
默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。
5读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)
51 采用Spring的DI机制获得文件,避免硬编码。
参考下面的连接内容:
http://wwwjavajianet/viewtopicphpp=90213&
52 配置文件的读取
参考下面的连接内容:
http://devcsdnnet/develop/article/39/39681shtm
53 通过虚拟路径或相对路径读取一个xml文件,避免硬编码
参考下面的连接内容:
http://clubgamvancom/club/clubPagejspiPage=1&tID=10708&ccID=8
6Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
常用 java File 操作类
http://wwweasydonecn/014/200604022353065155htm
Java文件操作大全(JSP中)
http://wwwpconlinecomcn/pcedu/empolder/gj/java/0502/559401html
java文件操作详解(Java中文网)
http://www51ctocom/html/2005/1108/10947htm
JAVA 如何创建\删除\修改\复制目录及文件
http://wwwgamvancom/developer/java/2005/2/264html
总结:
通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对JavaioFile JavanetURI等内容了解透彻
对其他方面的理解可以更加深入和透彻。
0条评论