spring中获取项目根路径

spring中:

方式1:


<context-param>
  <param-name>webAppRootKeyparam-name>
  <param-value>rootPathparam-value>
context-param>
<listener>
  <listener-class>org.springframework.web.util.WebAppRootListenerlistener-class>
listener>

以上监听添加在web.xml中,在任意java类中就可以通过注释的方式获取根路径了,
更常用场景:
用于第三方工具的配置文件中通过 ${baobaotao.root} 引用 Web 应用的根目录
比如log4j的配置文件:

 log4j.rootLogger=INFO,R 
 log4j.appender.R=org.apache.log4j.RollingFileAppender 
 # 指定日志文件的地址
 log4j.appender.R.File=${baobaotao.root}/WEB-INF/logs/log4j.log 
 log4j.appender.R.MaxFileSize=100KB 
 log4j.appender.R.MaxBackupIndex=1 
 log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n 

方式二:
额,就是通过Servlet的方式获取,可通过context对象获取ServletContext,进一步获取路径;

常用的获取各种路径的方式:
一、用Jsp获取
1、获取文件的绝对路径

String file="文件";(例如:data.mdb)
String path=application.getRealPath(file);

结果:
E:\java_web\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myWebsite\文件
2、获取文件的绝对路径

String p2=request.getRequestURI();

结果:
E:\java_web\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myWebsite\文件
3、获取当前jsp页面的路径

String p3=request.getContextPath(); 

结果:
/myWebsite/index.jsp

4、获取当前项目的路径

String p4=request.getServletPath(); 

结果:
/myWebsite

二、用Java类获取
1、获取Eclipse路径

String a1=System.getProperty("user.dir");

结果:
D:\StudySystem\JavaWeb\3-eclipse-jee-indigo-win32\eclipse

2、获取当前的classpath路径

String a2=类名.class.getResource("").toString();
String a3=DBConnection.class.getResource("/").toString();
String a4=DBConnection.class.getClassLoader().getResource("").toString();
String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();

打印出来分别是:
file:/E:/java_web/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myWebsite/WEB-INF/classes/com/site/db/
file:/E:/java_web/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myWebsite/WEB-INF/classes/
file:/E:/java_web/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myWebsite/WEB-INF/classes/
/E:/java_web/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myWebsite/WEB-INF/classes/

3、获取文件的绝对路径
如果要获取WebContent目录下的文件绝对路径怎么办?可以用下面的方法

String t=Thread.currentThread().getContextClassLoader().getResource("").getPath(); 
 int num=t.indexOf(".metadata");
 String path=t.substring(1,num).replace('/', '\\')+"项目名\\WebContent\\文件";

结果是:
E:\java_web\workspace\项目名\WebContent\文件

三、用servlet获取

1、获取项目的绝对路径

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

结果:
E:\java_web\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myWebsite

2、获取浏览器地址

request.getRequestURL()

结果:
http://localhost:8080/myWebsite/QuestionServlet

3、获取当前文件的绝对路径

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

结果:
E:\java_web\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myWebsite\myWebsite\QuestionServlet

你可能感兴趣的:(web开发)