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

java web应用访问tomcat目录外文件的路径映射问题 - CSDN博客
java web应用访问tomcat目录外文件的路径映射问题
只需要编辑%tomcathome%\conf\server.xml文件,在标签中增加如何代码即可:
&Context docBase="D:/autotest_file/local/report" path="/report" debug="0" reloadable="true" /&
其中docBase属性指定的为文件实际存储路径,path属性指定的为文件访问路径;如在浏览器中访问/report/report.html实际指向的文件地址为D:/autotest_file/local/report/report.html
1. 路径最后面不要再添加/,否则报错。
2. 调试时如果在eclipse中,需在eclipse中的Servers/tomcat/server.xml中添加配置代码,eclipse会自动添加至tomcat实际所在路径配置文件中,上线时直接在线上%tomcathome%\conf\server.xml中添加即可。
本文已收录于以下专栏:
相关文章推荐
绝对路径这个只是需要在conf/server.xml文件中的Host标签中添加,这个不需要发布!
\conf\server.xml
Context path=&虚拟目录& docBase=&文件目录& /&
注:需重启Tomcat
 
...
先说第一个问题,怎么样直接通过IP地址访问项目?
web项目正常访问都是http://192.168.1.1:8080/demo ,包括ip,端口和项目名称。直接通过ip访问,不需要输入端口和项目...
tomcat中的目录映射
       最近的一个项目中开发将上传的图片放置在tomcat下的webapps目录的项目中了,正式环境的发布以前都是开发去做的,测试环境也是我去部署更新的,...
在项目开发中,单个工程中,为了以后软件版本升级的方便,经常将网站运行中某些上传的静态资源,如图片、视频等放置在服务器tomcat目录外面,如E盘的pic文件夹放置图片、video文件夹放置视频,那么等...
Tomcat虚拟目录映射两种方法和用途
(1)将web应用映射到tomcat中:如一个test的web应用,可以通过虚拟目录映射将其映射到tomcat(webapps)中。
(2)将外部资源映射...
目标:把web项目的目录映射到tomcat中。这样项目不需要再放到tomcat的webapp下,启动tomcat可以自己去找对应的路径启动项目,可自己建一个自己的目录把项目放里面管理
方法如下: 
遇到问题介绍:项目中上传文件到服务器。如果使用tomcat下的目录作为上传图片的路径,则每次重启服务器图片将消失。【因为开发工具的项目中没有该图片,每次重启服务器重新部署的时候将会删除开发工具的项目中...
本文主要介绍web虚拟目录映射的两种常用方法及配置 默认web应用的方法
一、在Server.xml中进行配置
在元素中添加子元素 并重启服务器即可;
path表示虚拟目录,docB...
//注:$CATALINA_BASE表示Tomcat安装的目录,后面你会看到
//前半部分为分析,后半部分为实战
//CATALINA --&一个好听的名字:卡特琳娜
什么是web应用的部署和网...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)java类中相对路径与绝对路径讲解
File类或者一些IO流中,在其构造函数中要求传入String类型的参数,用于指示文件所在的路径。使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?
按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。当前用户目录由系统属性user.dir 指定,通常是Java 虚拟机的调用目录.
相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白。按照上面jdk文档上讲的这个路径是“当前用户目录”也就是“java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径(我们在哪启动jvm的路径).
举个例子: 假设有一java源文件Example.java在d盘根目录下,该文件不含package信息. 我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后用”javac Example.java”来编译此文件, 编译无错后,会在d盘根目录下自动生成”Example.class”文件. 我们在调用”java Example”来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的, 所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即d盘根目录:D:\ 同时“当前用户目录”也是D:\ 在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.
搞清了这些,我们可以使用相对路径来创建文件,例如: File file = new File(“a.txt”); file.createNewFile(); 假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.
此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径 所以如下代码能得到当前目录完整路径: File f = new File("."); String absolutePath = f.getAbsolutePath(); System.out.println(absolutePath);//D:\
再说说在eclipse中的情况:Eclipse中启动jvm都是在项目根路径上启动的. 比如该类所在的项目为coreJava,其完整路径为:D:\myEclipse_workspace\coreJava\. 那么这个路径就是jvm的启动路径了.所以以上代码如果在eclipse里运行 则输出结果为D:\myEclipse_workspace\coreJava\.
说说在服务器中的Java类获得当前路径 1、 在Tomcat中的情况. 如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码: File f = new File(".");
//或者:File f = new File(System.getProperty("user.dir")); String absolutePath = f.getAbsolutePath(); System.out.println(absolutePath); 那么输出的将是tomcat下的bin目录,即%Tomcat_Home%/bin 我的机器就是D:\myEclipsetomcat6\bin\.
,由此可以看出tomcat服务器是在bin目录下启动jvm的. 其实是在bin目录下的” catalina.bat”文件中启动jvm的.
2、在weblogic中的情况
WebApplication的系统文件根目录是你的weblogic安装所在根目录。例如:如果你的weblogic安装在c:/weblogic10.....那么,你的文件根路径就是c:.所以,有两种方式能够让你访问你的服务器端的文件:a.使用绝对路径:比如将你的参数文件放在c:/yourconfig/yourconf.properties,直接使用 new FileInputStream("yourconfig/yourconf.properties");b.使用相对路径:相对路径,是相对于你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放在yourwebapp/yourconfig/yourconf.properties,这样使用:new FileInputStream("../yourconfig/yourconf.properties");这两种方式均可,自己选择。
关于在web应用中的路径
Java EE里的Web项目有个相对独立的最高目录WebRoot,我们估且认为它是根目录/。Web项目成品中的其它目录都是相对与此目录的子目录。在开发时, 我们可能会用到一些框架,比如struts,spring等。使用这些框架,我们需要配制相应的xml文件,至少也会配制web.xml文件。比如使用struts2时,在struts.xml中映射Action是最常见的配制,所有的映射,都以“/”开头,那么这里的“/”指的是那个目录呢?那就是不可见相对独立的WebRoot,应用中“/action”就相当于是系统目录中的”WebRoot/action", 知道这一点,就不会在为Action映射老是不可用发愁了。
关于JSP/Servlet中的相对路径和绝对路径
在jsp/servlet中,服务器端的地址和客户端的地址表示有区别
1、服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http: //127.0.0.1/webapp/的。
其用到的地方有:forward:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forward到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/ 相对于当前的web应用webapp,其绝对地址就是:。 sendRedirect:在jsp中&%response.sendRedirect("/rtccp/user/a.jsp");%&
2、客户端的地址
所有的html页面中的相对地址都是相对于服务器根目录()的,而不是(跟目录下的该Web应用的目录) 的。 Html中的form表单的action属性的地址应该是相对于服务器根目录()的
所以,如果提交到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中获得当前应用的相对路径和绝对路径
随便在应用webroot下新建一个jsp文件,启动tomcat,测试一下便知:
System.out.println(request.getRequestURI()); //相对地址 /ebpp/test/MyJsp.jsp System.out.println(request.getRequestURL());
//得到该文件的IE地址栏访问地址 System.out.println(application.getRealPath("/")); //当前web应用的绝对路径
4、Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的路径:request.getServletPath();文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
浏览: 418300 次
来自: 上海
请问这样做的意义何在?
学习了哦!!!
学习了,感谢分享
哥们,给了思路,赞一个。
public static boolean isVa ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
String path = Struts2Util.getServletContext().getRealPath("/");
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
一、方法一
(1)、request.getRealPath("/");//不推荐使用获取工程的根路径
(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用
(4)、类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
this.getClass().getClassLoader().getResource("").getPath();//获取工程classes下的路径,这个方法可以在任意jsp,servlet,java文件中使用,因为不管是jsp,servlet其实都是java程序,都是一个class。所以它应该是一个通用的方法。
(5)、tomcat下获得绝对路径
private String projectName="sz_pro"; //你项目的名称(File.separator)
//获取当前项目的绝对路径(Linux不适用)
public String getPorjectPath(){
S //当前tomcat的bin目录的路径 如 D:\java\software\apache-tomcat-6.0.14\bin
nowpath=System.getProperty("user.dir");
tempdir=nowpath.replace("bin", "webapps"); //把bin 文件夹变到 webapps文件里面
tempdir+= "\\" + projectN
//判断是否有后缀
if(!"/".equals(tempdir.substring(tempdir.length()))){
tempdir += File.
//另外还有一个方法可以用来获取类的绝对路径(当前的classpath)windows,linux都可以
String classesPath = this.getClass().getClassLoader().getResource("").getPath();
("=============Constant.getPorjectPath()="+classesPath);
String photoPath = Constant.getPorjectPath(classesPath) + "virtualdir/upload/data/photo/fmcg/";
("=============photoPath="+photoPath);
//获取当前项目的绝对路径
public static String getPorjectPath(String classesPath){
String classPath[] = classesPath.split("webapps");
tempdir=classPath[0];
if(!"/".equals(tempdir.substring(tempdir.length()))){
tempdir += File.
(6)struts获得路径(struts2-core-2.0.11.2.jar)
fileName = request.getParameter("FILENAME");
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMddHHmmss");
//获得项目中的根路径。如果项目删除照片也会失去
File folder = new File(ServletActionContext.getServletContext().getRealPath("/")+"UploadImages/"+df.format(new Date()));
if (!folder.exists()) {
folder.mkdirs();
public String getPath(String uploadType,String loginId)
ActionContext ac = ActionContext.getContext();
ServletContext sc = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);
String savePath = sc.getRealPath("/");
String realPath = "webapps" + sc.getContextPath().replace("/", "\\");
String path = "virtualdir\\upload\\data\\filezip\\"+loginId+"\\";
if ("1".equals(uploadType)) {
path = "virtualdir\\upload\\data\\photozip\\"+loginId+"\\";
savePath = savePath.substring(0, savePath.length() - realPath.length() - 1) +
return saveP
二、方法二
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。
另:在Jsp,Servlet,Java中详细获得路径的方法!
1.jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:"resin"webapps"TEST"test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:"resin"webapps"TEST
2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty("user.dir")
结果:D:"TEST
3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:"Tomcat"webapps"TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test
1.基本观点的理会
对路径:绝对路径就是你的主页上的文件或目录在硬盘上真实的路径,(URL和物理路径)比方:
  C:xyz est.txt 代表了test.txt文件的绝对路径。/index.htm也代表了一个URL绝对路径。
  相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),比方:在
  Servlet中,"/"代表Web使用的跟目录。和物理路径的相对示意。比方:"./" 代表当前目录,"../"代表上级目录。这种类似的示意,也是属于相对路径。
  另外关于URI,URL,URN等内容,请参考RFC有关文档规则。
  RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
  (/ArtImage//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.2、客户端的地址
  所有的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.
  import java.io.F
  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:eaweblogic700.....
  那么,你的文件根路径就是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.等内容明白透彻
  对其他方面的理会能够更加深入和透彻。
5.
在.properties中指定路径
如common.properties中
UPLOAD_PATH=../../virtualdir/upload
LOCATION_ALARM_IMAGE=./../../resource/images/locationImage.gif
LOCATION_LAST_ALARM_IMAGE=./../../resource/images/locationImage2.gif
String thisUserpath = ""+ File.separator + "";
浏览 11718
浏览: 442320 次
来自: 南京
看了楼主写的用jxl生成excel。有地方用到了流,还特别强调 ...
查看Apache的并发请求数及其TCP连接状态netstat
非常感谢哈,刚好在学webservice编程,很有用呢。
encrypt2()和encrypt()有什么区别
ireport的操作还是相对比较复杂的,帆软报表会相对简单一点 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'01:23 提问
tomcat如何配置域名,使得可以直接通过域名访问自己的web项目
tomcat如何配置域名,使得可以通过域名直接访问自己的web项目。我的java web项目不在tomcat默认目录下,配置之后还是不行,通过远程的IP+/项目名字 可以访问,通过www.***.com/项目名字也可以访问, 但是通过www.***.com就是不行。现在很急,哪位大神可以给个方法。网上的我都试过了,都不好使。。
按赞数排序
Tomcat域名或IP地址访问方式配置方法
1、配置www.***.com域名方式访问
在Tomcat下面配置域名(如:www.***.com)的时候,同时又不希望客户通过我们网站的IP或者域名访问到Tomcat默认的ROOT,配制方法如下:
  1、打开Tomcat安装目录下的/conf/server.xml文件
  2、在server.xml中将原有的修改为
  3、在/conf/Catalina目录下建立目录“&您要配置的域名的名称&”,然后建立ROOT.xml文件,其格式和/conf/localhost目录下的ROOT.xml一致,但是内容如下:
   &?xml version='1.0' encoding='utf-8'?&
  其中docBase中的内容就是你希望的打开您的域名(www.***.com) 的时候映射到的目录和默认的网页(如:index.jsp)
  4、启动Tomcat服务器,就可以直接敲入域名访问你要访问的地址了。
2、配置ip地址方式访问(不需要项目名)
最近遇到一个朋友,他提出配置在tomcat下的项目不要用以往的访问方式”
于是到网上查资料,找到了解决的办法,就是更改tomcat的server.xml文件中的中的内容,具体修改如下所述:(使用的是Tomcat6.0)
【原tomcat的server.xml文件中的Host部分内容】
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&
【修改后的server.xml文件中的Host部分】
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"&
name后面可以填IP也可以是域名,如,这样修改以后,可以实现直接用
备注:以上方法,在Tomcat6.0测试通过,如果是tomcat5.x,在按照上述方法配置后不成功的话,可能 这里要改成
其他相关推荐}

我要回帖

更多关于 获取tomcat服务器路径 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信