`
wwwzhouhui
  • 浏览: 361100 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

1.最近项目中应用到JAVA 后台代码取得WEBROOT物理路径的问题,网上找了点资料学习了一下

我们知道JSP Servlet 取得WEB根路径可以用request.getContextPath(), 相对路径request.getSession().getServletContext().getRealPath("/") 物理路径 绝对路径

这2个相对有方法可以使用我们很容易取得根路径

 

2.JAVA 中取得系统路径可以使用System.getProperty("user.dir"); 但是我要取得WEB的物理路径如何取得呢,JAVA中不能继承或者取得到request  ServletContext 等WEB的上下文就不能直接用API 函数取得了

 

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

 

4.实践

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>csc2.root</param-value>
  </context-param>
  <listener>
		<listener-class>test.ApplicationListener</listener-class>
 </listener>
	
</web-app>

 ApplicationListener.java

package test;

import javax.servlet.ServletContextEvent;

import org.springframework.web.context.ContextLoaderListener;

/***********************************************************************   
 *   
 *   ApplicationListener.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   Oct 26, 2009   2:33:35 PM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class ApplicationListener extends ContextLoaderListener {

	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub

	}

	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		String webAppRootKey = sce.getServletContext().getRealPath("/");
	    System.setProperty("csc2.root" , webAppRootKey);
	    String path =System.getProperty("csc2.root");
	    System.out.println("sssss:::"+path);
	}

}

 test.java

package test;
/***********************************************************************   
 *   
 *   test.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   Oct 26, 2009   2:34:21 PM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class test {

	public void remve(){
		 String path =System.getProperty("csc2.root");
		 System.out.println("result::::::::"+path);
	}

}

 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="test.test" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%test  t= new test();
   t.remve();
%>
<html>
 
</html>

   部署程序发布 启动TOMCAT 运行index.jsp  就可以调用JAVA中全局设置的物理路径了(说明这里的JSP 只是调用了TEST.JAVA 的remove方法,不做其他使用

原理解释,TOMCAT 启动和 读取WEB.XML 监听方式加载SPRING ApplicationListener 继承SPRING ContextLoaderListener 加载SPRING 顺便吧全局路径赋值给csc2.root 描述,这样之后JAVA 代码中就可以使用System.getProperty("csc2.root")调用全路路径了。

分享到:
评论
1 楼 fatherican 2013-07-17  
为什么要配置
<context-param> 
        <param-name>webAppRootKey</param-name> 
        <param-value>csc2.root</param-value> 
  </context-param> 
直接在lister里面随便设置一个key,不行吗?

相关推荐

    myeclipse的WebRoot下的jsp访问不了

    - 确保WebRoot目录的实际物理路径与`server.xml`文件中配置的`docBase`属性一致。 3. **调整IDE配置**: - 在MyEclipse中打开项目属性,找到Web项目设置,确认WebRoot目录是否正确指定。 4. **修正URL地址**: - ...

    JAVA中获取各种路径

    此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...

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

    在Servlet、Action、Controller、Filter、Listener等组件中,获取Web应用的根目录(WebRoot)至关重要。通常,我们可以利用`ServletContext`对象来实现这一需求: ```java ServletContext context = ...

    java web开发中的路径问题

    3. **Spring框架的思路**:在`web.xml`中创建一个`webAppRootKey`的参数,并通过监听器、过滤器或Servlet将该键值写入系统属性中,后续可以通过`System.getProperty("webapp.root")`来获取WebRoot的物理路径。...

    Java web项目代码结构说明

    - 可以通过Eclipse中的`Properties`-&gt;`Deployment Assembly`进行设置,包括`.java`文件路径、Web文件路径、项目依赖的`.jar`包文件路径及其发布路径。 通过上述介绍,我们可以清晰地了解到Java Web项目的代码结构...

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

    这里的"/"代表的是项目的根目录,返回的将是项目部署的实际物理路径,如"E:\eclipseM9\workspace\tree",其中"tree"即为web项目的根目录。 #### b. ClassLoader路径 另一个常用的方式是在任何类中调用`this....

    web中的路径问题

    - `request.getRealPath("/")`和`request.getRealPath("/config/")`用于获取Web应用程序根目录或特定目录下的物理路径。 #### 四、路径选择和注意事项 - **路径的选择**取决于具体的应用场景和需求。 - 在开发...

    JAVA类,JSP,Servlet获取工程路径.txt

    - 示例:如果项目名为“TEST”,且类位于`WebRoot/WEB-INF/classes/pack/`目录下,则调用此方法返回的路径为`/D:/TEST/WebRoot/WEB-INF/classes/pack/`。 2. **利用`System.getProperty("user.dir")`获取当前工作...

    java或wed解决路径问题

    在Web应用开发中,特别是Servlet、Action、Controller、Filter或Listener等组件中,获取服务器上当前Web应用程序的WebRoot(即根目录)的物理路径是常见的需求。可以通过`ServletContext`的`getRealPath("/")`方法...

    Java Web项目中连接Access数据库的配置方法

    获取数据库文件的路径可以使用`ServletContext`的`getRealPath()`方法,它能返回相对于Web应用根目录的物理路径。例如: ```java ServletContext application = // 获取ServletContext对象 String dbPath = ...

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

    1. **使用ServletContext.getRealPath("/")**:这是获取Web应用在服务器上物理路径的常见方式。当需要访问服务器上的文件时,如读取配置文件或上传的文件,可以使用此方法。例如,`context.getRealPath("/WEB-INF/...

    JSP中java文件操作大全

    在探讨JSP中Java文件操作的全面指南时,我们深入剖析了文件的创建、检查、删除,目录的管理,以及如何处理虚拟目录和获取文件属性等核心知识点。这些操作对于构建动态网页,尤其是那些需要与文件系统交互的应用程序...

    JavaWeb项目部署方式.txt

    - **`docBase`**:指定Web应用的实际物理路径。例如,上面的例子中`E:\MyEclipse9.0\WorkShop\webTest\WebRoot`即为实际的Web应用根目录。 - **`reloadable`**:设置为`true`时,表示允许热部署,即在不重启服务器的...

    深入分析java文件路径的详解

    在Web应用开发中,经常需要获取Web应用的根目录,即WebRoot的物理路径。对于Servlet、Action、Controller、Filter或Listener等,可以通过`ServletContext.getRealPath("/")`来获取。这种方法直接且有效,但如果在...

    java读写文件,Java操作文件

    在JSP页面中处理虚拟目录通常涉及到获取目录的实际物理路径。这在读取服务器上的文件或设置文件路径时非常重要。 ```java // 获取Web站点主目录的位置 String webRoot = request.getRealPath("/"); // 获取JSP网页...

    JavaWeb开发Tomcat中三种部署项目的方法.pdf

    在Java Web开发中,Apache Tomcat是一个流行的开源Web服务器和Servlet...通过指定元素的path属性来设置项目访问的URL路径,docBase属性指定项目文件的物理路径。例如,可以添加如下配置来部署一个名为"hello"的项目: ...

    JAVA-WEB学习笔记.pdf

    - `docBase` 属性是指定该应用程序的实际物理路径。 #### 二、JSP 基本语法 **1. 注释:** - **显式注释:** 使用 `注释内容 - -&gt;`。 - **隐式注释:** 使用 `JAVA 注释` 或者 `JSP 注释`,其中: - `JAVA 注释:` ...

Global site tag (gtag.js) - Google Analytics