Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)

来源:互联网 发布:淘宝女童模特章露雅 编辑:程序博客网 时间:2024/06/01 07:45


spring默认会以webapp.root为key保存webapp的根路径  

可以这样获取:System.getProperty("webapp.root")

不使用Spring,怎样能在Listener启动的Thread中获取web目录,还真不完全确定。其实我觉得实际代码也很简单。
就是基于普通的listener,然后在listener中获取web目录并放到JRE全局变量中。

但使用Spring,就可以用一种比较优雅的方式来获取了。

在web.xml中的<web-app>节点内加入:

<!-- webRoot根路径key值配置 -->    <context-param>          <param-name>webAppRootKey</param-name>           <param-value>tansungWeb.root</param-value>      </context-param>      <listener>           <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>       </listener>

然后在普通的Java类中(不是action中),就可以通过System.getProperty("tansungWeb.root")获取了web根目录了。

需要注意的是遮掩配置过后,在配置log4j日志文件保存路劲是就要把获取webroot根路径的key要相应改变为tansungWeb.root。

具体改变请看斜线处:

#debug < info < warn < error < fatallog4j.rootLogger=debug,stdout,logfilelog4j.logger.cn.hydom.ztc=debuglog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%p [%l] %n---> %m%n#log4j.appender.stdout.layout.ConversionPattern=- [%p](%l) ---> [%m]%d{yyyy-MMM-dd HH:mm:ss}%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppender----------------------------------------------------------------------------#这是以前的配置  spring默认会以webapp.root为key保存webapp的根路径#log4j.appender.logfile.File=${webapp.root}/logs/sys.log#由于有了以上的配置,所以这里需要改变为${tansungWeb.root}log4j.appender.logfile.File=${tansungWeb.root}/logs/log.log-----------------------------------------------------------------------------log4j.appender.logfile.MaxFileSize=1MB# Keep three backup files.log4j.appender.logfile.MaxBackupIndex=10# Pattern to output: date priority [category] - messagelog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern= %n - [%p]-%d{yyyy-MMM-dd HH:mm:ss}-(%l)%n---> [%m]%n#ibatis logger configlog4j.logger.com.ibatis=debuglog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debuglog4j.logger.com.ibatis.common.jdbc.ScriptRunner=debuglog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug



然后再拼凑路径的时候,最好不要直接使用/或者\,最好使用File.separatorChar

这样的做法,适用于Spring配置中启动的线程需要获取web目录。例如删除临时文件的线程,定时发送邮件的线程。


0 0
原创粉丝点击