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")调用全路路径了。
分享到:
相关推荐
- 确保WebRoot目录的实际物理路径与`server.xml`文件中配置的`docBase`属性一致。 3. **调整IDE配置**: - 在MyEclipse中打开项目属性,找到Web项目设置,确认WebRoot目录是否正确指定。 4. **修正URL地址**: - ...
此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...
在Servlet、Action、Controller、Filter、Listener等组件中,获取Web应用的根目录(WebRoot)至关重要。通常,我们可以利用`ServletContext`对象来实现这一需求: ```java ServletContext context = ...
3. **Spring框架的思路**:在`web.xml`中创建一个`webAppRootKey`的参数,并通过监听器、过滤器或Servlet将该键值写入系统属性中,后续可以通过`System.getProperty("webapp.root")`来获取WebRoot的物理路径。...
- 可以通过Eclipse中的`Properties`->`Deployment Assembly`进行设置,包括`.java`文件路径、Web文件路径、项目依赖的`.jar`包文件路径及其发布路径。 通过上述介绍,我们可以清晰地了解到Java Web项目的代码结构...
这里的"/"代表的是项目的根目录,返回的将是项目部署的实际物理路径,如"E:\eclipseM9\workspace\tree",其中"tree"即为web项目的根目录。 #### b. ClassLoader路径 另一个常用的方式是在任何类中调用`this....
- `request.getRealPath("/")`和`request.getRealPath("/config/")`用于获取Web应用程序根目录或特定目录下的物理路径。 #### 四、路径选择和注意事项 - **路径的选择**取决于具体的应用场景和需求。 - 在开发...
- 示例:如果项目名为“TEST”,且类位于`WebRoot/WEB-INF/classes/pack/`目录下,则调用此方法返回的路径为`/D:/TEST/WebRoot/WEB-INF/classes/pack/`。 2. **利用`System.getProperty("user.dir")`获取当前工作...
在Web应用开发中,特别是Servlet、Action、Controller、Filter或Listener等组件中,获取服务器上当前Web应用程序的WebRoot(即根目录)的物理路径是常见的需求。可以通过`ServletContext`的`getRealPath("/")`方法...
获取数据库文件的路径可以使用`ServletContext`的`getRealPath()`方法,它能返回相对于Web应用根目录的物理路径。例如: ```java ServletContext application = // 获取ServletContext对象 String dbPath = ...
1. **使用ServletContext.getRealPath("/")**:这是获取Web应用在服务器上物理路径的常见方式。当需要访问服务器上的文件时,如读取配置文件或上传的文件,可以使用此方法。例如,`context.getRealPath("/WEB-INF/...
在探讨JSP中Java文件操作的全面指南时,我们深入剖析了文件的创建、检查、删除,目录的管理,以及如何处理虚拟目录和获取文件属性等核心知识点。这些操作对于构建动态网页,尤其是那些需要与文件系统交互的应用程序...
- **`docBase`**:指定Web应用的实际物理路径。例如,上面的例子中`E:\MyEclipse9.0\WorkShop\webTest\WebRoot`即为实际的Web应用根目录。 - **`reloadable`**:设置为`true`时,表示允许热部署,即在不重启服务器的...
在Web应用开发中,经常需要获取Web应用的根目录,即WebRoot的物理路径。对于Servlet、Action、Controller、Filter或Listener等,可以通过`ServletContext.getRealPath("/")`来获取。这种方法直接且有效,但如果在...
在JSP页面中处理虚拟目录通常涉及到获取目录的实际物理路径。这在读取服务器上的文件或设置文件路径时非常重要。 ```java // 获取Web站点主目录的位置 String webRoot = request.getRealPath("/"); // 获取JSP网页...
在Java Web开发中,Apache Tomcat是一个流行的开源Web服务器和Servlet...通过指定元素的path属性来设置项目访问的URL路径,docBase属性指定项目文件的物理路径。例如,可以添加如下配置来部署一个名为"hello"的项目: ...
- `docBase` 属性是指定该应用程序的实际物理路径。 #### 二、JSP 基本语法 **1. 注释:** - **显式注释:** 使用 `注释内容 - ->`。 - **隐式注释:** 使用 `JAVA 注释` 或者 `JSP 注释`,其中: - `JAVA 注释:` ...