从request获取各种路径request.getRealPath()

1、此方法已过时,现在可替换的实现方法有

request.getSession().getServletContext().getRealPath("/")

在Servlet 里用

this.getServletContext().getRealPath("/");

获得绝对路径。

struts里用

this.getServlet().getServletContext().getRealPath("/")

获得绝对路径。

从Request对象中可以获取各种路径信息,以下例子:  
假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
String remoteAddress=request.getRemoteAddr();  
String servletPath=request.getServletPath();  
String realPath=request.getRealPath("/");  
String remoteUser=request.getRemoteUser();  
String requestURI=request.getRequestURI();  
out.println("path:"+path+"<br>");  
out.println("basePath:"+basePath+"<br>");  
out.println("remoteAddr:"+remoteAddress+"<br>");  
out.println("servletPath:"+servletPath+"<br>");  
out.println("realPath:"+realPath+"<br>");  
out.println("remoteUser:"+remoteUser+"<br>");  
out.println("requestURI:"+requestURI+"<br>");  
结果:  
path:/WebDemo  
basePath:http://localhost:8683/WebDemo/  
remoteAddr:127.0.0.1  
servletPath:/index.jsp  
realPath:D:\apache-tomcat-6.0.13\webapps\WebDemo\  
remoteUser:null  
requestURI:/WebDemo/index.jsp  
从上不难看出request各个对应方法所代表的含义

 

参考servlet中的接口:

request.getScheme();
返回的协议名称,默认是http

request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了

getServerPort()
获取服务器端口号

 例如:

<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/test/*</url-pattern>
</servlet-mapping>

dwr为工程名
http://localhost:8080/dwr/servlet/test/joejoe1991/a.html?name=test
getPathInfo() 返回的仍然是:
"/joejoe1991/a.html" ,而并不包括后面的"?name=test";

 

 

在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

### 回答1: request.getrealpath是一个Java Servlet API中的方法,用于获取请求的真实路径。它返回一个字符串,表示请求的文件在服务器上的真实路径。这个方法通常用于读取或写入文件,或者在服务器上执行其他操作。 ### 回答2: request.getRealPath()方法是一个用于获取服务器上某个文件或目录在系统中的真是路径的方法。在Java Servlet开发中,当我们需要处理服务器上的某个文件或目录时,通常需要获取这个文件或目录在操作系统中的真是路径,这样才能进行进一步的处理。 request.getRealPath()方法可以接收一个相对路径作为参数,然后返回这个相对路径所对应的真是路径。它的工作原理是将传入的相对路径解析为在服务器文件系统中的真是路径。 例如,如果我们调用request.getRealPath("/WEB-INF"),它将返回WEB-INF目录在服务器上的真实路径,比如:"C:/tomcat/webapps/yourwebapp/WEB-INF"。 这个方法的返回值通常是一个字符串,表示相对路径解析后的真实路径。通过获取文件或目录的真实路径,我们可以通过Java的文件IO操作进行文件读写,或者对目录中的文件进行遍历和操作。 需要注意的是,request.getRealPath()方法在一些最新的Servlet容器中已经被废弃,不再推荐使用。因为在一些特殊的环境下,无法正确获取到相对路径的真实路径。而且,这个方法依赖于底层的文件系统,对于一些支持热部署和集群的服务器来说,不同的服务器节点可能会对应不同的文件路径,导致获取的真实路径不一致。 为了替代request.getRealPath()方法,可以使用其他方式来获取相对路径的真实路径,比如使用ServletContext对象的getRealPath()方法,它在传入相对路径时,会自动选择合适的路径来解析,不受服务器节点和文件系统的限制。 ### 回答3: request.getRealPath()是Java Web开发中的一个方法,它可以用来获取当前web应用程序中某个文件或目录的真实路径。在Web应用程序中,通常会将一些资源文件或配置文件存放在特定的目录下,而这个方法可以返回这些文件的真实路径。 该方法的使用需要借助于Servlet中的HttpServletRequest对象。当调用request.getRealPath()方法时,需要传入一个相对于当前web应用程序的路径作为参数。该方法的返回值是一个字符串,表示该文件或目录在当前服务器文件系统中的真实路径。 这个方法在开发中经常用来读取配置文件或者加载资源文件。比如,我们可以通过request.getRealPath("/WEB-INF/config.properties")来获取配置文件config.properties的真实路径。在某些情况下,我们需要获取某个文件或目录的绝对路径,来进行一些操作,例如读取文件内容或者判断文件是否存在等。 需要注意的是,由于不同的服务器可能会有不同的文件存放结构,所以该方法的返回值可能会有所差异。因此,在使用该方法时,我们需要确保代码的兼容性,并且不能将返回的路径直接暴露给用户或者依赖于它进行敏感操作,以免造成安全问题。 总而言之,request.getRealPath()方法是Java Web开发中一个常用的方法,用于获取当前web应用程序中某个文件或目录的真实路径。通过该方法,我们可以方便地操作配置文件和资源文件,提高程序的可扩展性和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值