从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPat

本文介绍了在Java Web项目中获取不同路径的方法,包括获取实际路径、上下文路径、请求URI等,并提供了在Servlet、Action及类中获取路径的具体示例。

原文地址:点击打开链接


 equest.getRealPath() 这个方法已经不推荐使用了,代替方法是:

 request.getSession().getServletContext().getRealPath()

 

 在servlet里用this.getServletContect().getRealPath();

 在struts里用this.getServlet().getServletContext().getRealPath();

 在Action里用ServletActionContext.getRequest().getRealPath();

以上三个获得都是当前运行文件在服务器上的绝对路径



从request获取各种路径总结 
 request.getRealPath("url");     // 虚拟目录映射为实际目录 

 request.getRealPath("./");      // 网页所在的目录 

 request.getRealPath("../");    // 网页所在目录的上一层目录 

 request.getContextPath();    // 应用的web目录的名称 


如http://localhost:7001/bookStore/ 
/bookStore/ => [contextPath] (request.getContextPath()) 

获取Web项目的全路径 
String strDirPath = request.getSession().getServletContext().getRealPath("/"); 

以工程名为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


在Java Web开发中,`HttpServletRequest` 对象可以用于处理HTTP请求,并从中提取相关信息。 ### 获取绝对地址 如果想通过 `request` 对象获取完整的访问URL(即客户端请求服务器时的完整地址),可以通过以下方法组合实现: ```java String url = request.getRequestURL().toString(); ``` 该方法返回的是客户端发出请求的完整URL,例如:`http://example.com/app/path` 若需要更详细地拼接出最终的绝对路径(包括查询字符串等信息),还可以结合其他方法: ```java String queryString = request.getQueryString(); // 返回 URL 中 '?' 后面的部分 if (queryString != null) { url += "?" + queryString; } ``` 因此,`getRequestURL()` 和 `getQueryString()` 可以一起使用来构造完整的请求链接。 ### 根据虚拟路径“/”获取实际磁盘路径 对于从根目录开始(`"/"`)的相对路径转换成文件系统上的真实物理路径,则需要用到 `getRealPath("/")` 方法: ```java ServletContext context = request.getSession().getServletContext(); String realPath = context.getRealPath("/"); System.out.println("Web应用的实际部署路径:" + realPath); ``` 这里的 `context.getRealPath("/")` 将会把相对于Web应用程序上下文的 '/' 虚拟路径映射为操作系统上的真正存在的目录结构形式。比如它可能会打印类似这样的结果:`D:\apache-tomcat\webapps\yourApp`. 需要注意的一点是,在某些环境下(如容器内嵌式运行),由于配置原因可能导致无法得到确切的真实路径;此外当项目被打包成WAR包并直接加载内存运行而未解压至硬盘上某个特定地方的时候也有可能取不到有效的real path. #### 示例总结代码片段 ```java // 绝对URI示例 String absUrl = request.getRequestURL().append((request.getQueryString() == null ? "" : "?"+request.getQueryString())).toString(); // 实际磁盘位置示例 ServletConfig config = getServletConfig(); String fullPath = config.getServletContext().getRealPath("/"); out.print("<p>Absolute URI:" + absUrl+"</p>"); out.print("<p>Physical Path of '/' :" + fullPath+"</p>"); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值