`

java web项目中路径问题的解决方案

阅读更多

javaweb项目中添加配置文件,满足连接数据库配置参数以及其他自定义参数存放,可自 己写一个配置文件**.properties,把项目所需的自定义配置信息以名值对的形式写入文件。在项目工程目录下的WebRoot\WEB-INF \classes目录下新建一个conf文件夹专门存放配置文件,然后把**.properties配置文件放到conf中,部署时IDE会自动将其复制 到相应路径。

 

java web项目未开启服务(有没有部署到tomcat中一样)使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/myEclipseWorkspace/
你的项目工程名/WebRoot/WEB-INF/classes/

此路径为java web项目源路径。

部署到tomcat中的java web项目开启服务后使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/program/apache-tomcat-6.0.14/webapps/
你的项目工程名/WEB-INF/classes/

然后调用toString().substring(6)获得绝对路径的前半部分,加上相对路径,如
conf/jdbc.properties

拼接成配置文件的绝对路径:(这个路径最前面的“/“本人也不清楚是什么意思,但是测试发现有没有那个”/“都能成功)
/F:/D:/program/apache-tomcat-6.0.14/webapps/
你的项目工程名/WEB-INF/classes/conf/send.properties


java application
项目使用this.getClass().getResource("/")得到Url对象,打印如下:
file:/D:/myEclipseWorkspace/
你的项目工程名/bin/

此路径为java application项目的class文件的根路径。


注意:未开启tomcat web服务时打印的不是上面的路径,是你的项目源文件的classes路径。

上面的是本人最近在学习javaWeb时候遇到路径问题的解决方法,以下的是网上搜集到的资料共享一下,未测试
  Java中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!

  在开发Web方面的应用时, 经常需要获取服务器中当前WebRoot的物理路径。

  如果是Servlet , Action , Controller, 或者Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址。

  如果在类中取不到ServletContext时,有两种方式可以做到:

  1)利用Java的类加载机制:调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录。
  这种方式只能是该classWebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中, 则该方法失效。这时就应该用下面一种方式。

  2spring框架的思路,在WEB-INF/web.xml中,创建一个webAppRootKeyparam,指定一个值(默认为 webapp.root)作为键值,然后通过Listener 或者Filter,或者Servlet 执行String webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为KeyValue写到System Properties系统属性中。之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路 径。

  根据第二种的思路,我们还可以再扩展一下。不过对于在部署在一台服务器中的应用来说,若还不是你所需请再往下看。

  下面是一些得到classpath和当前类的绝对路径的一些方法。你可使用其中的一些方法来得到你需要的资源的绝对路径:

  1.DebitNoteAction.class.getResource("")
  得到的是当前类FileTest.class文件的URI目录。不包括自己!
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  atacarnet/src/com/evi/modules/atacarnet/action/

  2.DebitNoteAction.class.getResource("/")
  得到的是当前的classpath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

  3.Thread.currentThread().getContextClassLoader().getResource("")
  得到的也是当前ClassPath的绝对URI路径
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  推荐使用该方法获取。

  4.DebitNoteAction.class.getClassLoader().getResource("") ClassLoader.getSystemResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

  5.取得服务器相对路径
  System.getProperty("user.dir")
  例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin

  6.取得项目中的绝对路径
  一般用request.getRealPath("/")request.getRealPath("/config/")

  但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

  要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得srccom目录的test.java文件,你只需要这样就够了
  File f = new File(com/test.java);

  但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧。
  我的硬方法是这样实现的:
  String path = this.getServletContext().getRealPath("/");
  Properties p = new Properties();
  p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
  System.out.println(p.getProperty("driverName"));
-------------------------------
另:RequestgetContextPathgetServletPathgetRequestURIgetRequestURLgetRealPath的区别

  假定你的web application 名称为news,你在浏览器中输入请求路径:http://localhost:8080/news/main/list.jsp

  则执行下面向行代码后打印出如下结果:

1
System.out.println(request.getContextPath());
  打印结果:/news

2
System.out.println(request.getServletPath());
  打印结果:/main/list.jsp

3
System.out.println(request.getRequestURI());
  打印结果:/news/main/list.jsp

4
System.out.println(request.getRequestURL());
  打印结果:http://localhost:8080/news/main/list.jsp

5
System.out.println(request.getRealPath("/"));
  打印结果:F:\Tomcat 6.0\webapps\news\tes

分享到:
评论

相关推荐

    WEB 项目中JAVA取得WEBROOT物理路径

    获取Java Web项目中的WEBROOT或WEB-INF物理路径,是开发过程中的常见操作,通常通过Servlet API的`ServletContext`接口实现。理解Web应用的部署结构和正确使用`getRealPath()`方法,对于解决与文件操作相关的问题至...

    Java或web中解决所有路径问题

    本文将深入解析Java Web中所有路径问题的解决方法,涵盖Servlet、Action、Controller、Filter、Listener等关键组件的路径获取技巧,以及Spring框架下Web应用根目录的获取策略。 ### 一、理解Java Web中的路径类型 ...

    tomcat部署java web项目遇到的问题及解决方法

    本文主要介绍了 Tomcat 部署 Java Web 项目遇到的问题及解决方法,并提供了详细的示例代码和解决方案,对大家的学习和工作具有一定的参考价值。 一、Tomcat 部署 Java Web 项目遇到的问题 在部署 Java Web 项目到 ...

    java项目问题解决方案

    在Java项目开发中,尤其是基于Struts框架的应用,可能会遇到服务器启动时的异常问题,比如在本案例中遇到的“ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource”。这个问题通常出现在尝试加载...

    java或wed解决路径问题

    在Java和Web开发中,路径问题常常困扰开发者,因为它们涉及到资源的定位和访问。本文主要探讨如何在Java和Web环境中有效地解决路径问题。 首先,Java中的路径分为绝对路径和相对路径。绝对路径是从根目录开始的完整...

    《Java Web开发实践教程》案例项目-实现2.rar

    《Java Web开发实践教程》案例项目-实现2.rar是一个压缩包,其中包含了使用Java Web技术进行实际开发的案例项目。这个项目可能涵盖了多个关键知识点,包括但...实践中遇到的问题和解决方案将是学习过程中最宝贵的财富。

    Java web项目启动Tomcat报错解决方案

    Java web项目启动Tomcat报错解决...Java web项目启动Tomcat报错解决方案是一个常见的问题,但通过添加 bootstrap.jar 文件到 Java 库路径中,可以快速解决该问题。hope 对大家的学习有所帮助,也希望大家多多支持我们。

    亮剑 Java Web 项目开发案例导航

    总之,《亮剑 Java Web 项目开发案例导航》为你提供了一个全面的学习路径,从基础的Java编程到复杂的Web应用程序设计,你都将有实践经验。通过这个项目,你不仅可以掌握Java Web开发的关键技术,还能培养解决问题和...

    Java开发绝对和相对路径问题

    本文总结了Java 开发中的路径问题,帮助开发朋友方便解决路径问题,让你节省大量的时间。 1. 基本概念的理解 绝对路径是指文件或目录在硬盘上的真正路径,例如C:\xyz\test.txt 代表了 test.txt 文件的绝对路径,...

    Java Web中解决路径(绝对路径与相对路径)问题

    3. **Spring框架的解决方案**:Spring提供了一种在`web.xml`中设置`webAppRootKey`参数的方法,然后在Servlet、Filter或Listener中获取并将其作为系统属性写入。这样,通过`System.getProperty("webapp.root")`可以...

    Java Web项目开发案例精粹--Velocity简单实例

    在实际开发中,结合Spring MVC或其他框架,Velocity能更好地服务于Web应用程序,提供灵活且高性能的模板渲染解决方案。如果你想要进一步学习和实践,可以从提供的"example"压缩包中查看具体的代码示例,这将有助于...

    java程序开发中路径的问题

    **Web应用路径** 在Java Web应用中,路径问题更为复杂。`JavaWebPath`可能指的是在Web应用上下文中的路径。Web应用的根目录通常由`ServletContext`的`getRealPath()`方法提供,这个方法可以将相对于Web应用的虚拟...

    Java路径问题

    本文将详细解析Java中的路径问题,并提供相应的解决策略。 首先,Servlet的访问路径是通过`web.xml`文件配置的。配置示例为`<url-pattern>Servlet访问路径</url-pattern>`。Servlet的路径有两种基本形式:以"/"开头...

    总结一下java获取路径几种途径

    以下是对Java中获取路径几种常见途径的详细解析,包括了从Web应用环境到普通Java应用程序中路径获取的方法,旨在为开发者提供全面的指导。 ### 1. Web应用中的路径获取 #### a. Servlet上下文路径 在Servlet环境中...

    深入体验Java_Web开发内幕—核心基础 完整版 pdf

    《深入体验Java_Web开发内幕—核心基础》是一本针对Java Web开发的深度解析书籍,旨在帮助读者全面理解和掌握Java Web开发的核心技术...实际书籍的内容会更具体、更详细,覆盖更多实际开发中可能遇到的问题和解决方案。

    java web高级开发

    4. **解决Web开发中的相对路径问题**: 在Web应用中,处理URL路径是常见的挑战。正确使用相对路径和绝对路径,以及理解不同上下文路径对资源引用的影响,是避免路径问题的关键。有时需要利用Spring MVC或其他框架的...

    DWR中JS的引用路径问题【前台web】

    ### DWR中JS的引用路径问题详解 #### 一、背景介绍 在Web开发中,JavaScript(简称JS)是前端开发的重要组成部分之一...通过上述方法,可以有效地解决DWR中JS文件的引用路径问题,保证Web应用程序的稳定性和可靠性。

    Java_Web轻量级开发全体验.pdf

    虽然文档的【部分内容】并不是直接关于“Java_Web轻量级开发全体验”的详细讨论,但它提供了一个行业背景,并间接引出了学习Java Web开发时可能遇到的问题和解决方案。读者可以从中获得如何在Java Web领域内获得更好...

    web项目MyEclipse里部署时找不到

    ### Web项目在MyEclipse中部署时找不到的解决方法 #### 问题背景 在使用MyEclipse进行Web项目开发的过程中,有时会遇到部署时找不到项目的问题。这种情况可能会导致项目无法正常运行或者测试,从而影响开发进度。...

Global site tag (gtag.js) - Google Analytics