如何通过Java代码获取tomcat服务器的绝对路径

如何通过Java代码获取tomcat服务器的绝对路径,第1张

//也许有你想要的,前提是在项目布署运行起来后,在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等内容了解透彻

对其他方面的理解可以更加深入和透彻。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何通过Java代码获取tomcat服务器的绝对路径

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情