java项目根目录

本文介绍了在不同场景下如何获取Java项目的根目录。在Web程序中,通过`getServletContext().getRealPath("/")`可获取Tomcat下的项目根路径;在Java桌面程序中,使用`(new File("")).getAbsolutePath()`获取项目根目录。而在Tomcat环境下, `(new File("")).getAbsolutePath()`会返回Tomcat的bin目录,需要进一步处理。总结了在不同情况下的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在jsp文件或Servlet中,可以通过getServletContext().getRealPath("/")来获取项目根目录的绝对路径。


1 <body>
2     <h1>jsp文件中获得项目根目录绝对路径</h1>
3     <%
4     String realPath=getServletContext().getRealPath("/");//项目绝对路径
5      %>
6      项目根目录的绝对路径为:<%=realPath %>
7 </body>
8 </html>

  访问结果:

项目根目录的绝对路径为:D:\Program Files\Java\tomcat6.0.1\webapps\tests\

     在Servlet中可以使用同样的方法,得到同样的结果,毕竟jsp文件中的内容在本质上跟Servlet是一回事。getServletContext().getRealPath("/")很好用,但仅仅适用于jsp文件和Servlet中,因为这是一个Servlet API。

2. Java桌面程序中,可以通过(new File("")).getAbsolutePath()获取项目根目录(非Tomcat下)。


 1 package chloe.aboutpath;
 2 
 3 import java.io.File;
 4 public class PathTest 
 5 {
 6     static String abspath;
 7    static public String getPath()
 8    {
 9        
10        File file=new File("");
11        abspath=file.getAbsolutePath();
12        return abspath;
13    }
14    public static void main(String args[])throws Exception
15    {
16        System.out.println(getPath());
17    }
18 }

  运行结果为:

 D:\CHLOE\IT\java\eclipse_workspace\tests

3. 在Tomcat下运行的类中,(new File("")).getAbsolutePath()获得的路径是Tomcat安装路径下的bin文件夹下,将获得的路径字符串去掉最后的"bin"再添上"webapps\\项目文件夹名"即可。

  经过测试代码的运行,我发现只要是在Tomcat环境中运行的代码,如Jsp、Servlet、Servlet调用的Java类、Servlet调用的Java类所调用的Java类等等,由(new File("")).getAbsolutePath()获得路径均为Tomcat根目录下的bin文件夹下,测试代码与PathTest.java中的基本一样,这里不再赘述。

总结:   

 在大多数情况下,我们都是用Java开发Web程序。根据我个人习惯,如果在jsp文件或者Servlet中需要用到项目的根目录,则采用getServletContext().getRealPath("/"),因为这个最方便,不需要进一步处理,如果在Servlet调用的其他普通类中需要获得项目根目录,则使用(new File("")).getAbsolutePath(),再稍作处理。另外,jsp文件中资源的相对路径在没有特别声明的情况下是相对于本文件所在的位置,可以通过在路径字符串的前端加上".."进入上一级文件夹后继续定位,如"../ckeditor/ckeditor.js";默认情况下,指定form的action为某Servlet时,应该使用"/servlet/Servletname",因为默认生成Servlet时,在web.xml的servlet-mapping项中均是这种形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值