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

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

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

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

  1. <!-- webRoot根路径key值配置 --> 
  2.     <context-param>   
  3.         <param-name>webAppRootKey</param-name>    
  4.         <param-value>tansungWeb.root</param-value>   
  5.     </context-param>   
  6.     <listener>    
  7.         <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>    
  8.     </listener> 
<!-- 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。

具体改变请看斜线处:

  1. #debug < info < warn < error < fatal 
  2. log4j.rootLogger=debug,stdout,logfile 
  3. log4j.logger.cn.hydom.ztc=debug 
  4.  
  5. log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
  6. log4j.appender.stdout.Target=System.out 
  7. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
  8. log4j.appender.stdout.layout.ConversionPattern=%p [%l] %n---> %m%n 
  9. #log4j.appender.stdout.layout.ConversionPattern=- [%p](%l) ---> [%m]%d{yyyy-MMM-dd  
  10.  
  11. HH:mm:ss}%n 
  12.  
  13.  
  14. log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
  15.  
  16.  
  17. ---------------------------------------------------------------------------- 
  18. #这是以前的配置  spring默认会以webapp.root为key保存webapp的根路径 
  19. #log4j.appender.logfile.File=${webapp.root}/logs/sys.log 
  20. #由于有了以上的配置,所以这里需要改变为${tansungWeb.root} 
  21. log4j.appender.logfile.File=${tansungWeb.root}/logs/log.log 
  22. ----------------------------------------------------------------------------- 
  23.  
  24. log4j.appender.logfile.MaxFileSize=1MB 
  25. # Keep three backup files. 
  26. log4j.appender.logfile.MaxBackupIndex=10 
  27. # Pattern to output: date priority [category] - message 
  28. log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
  29. log4j.appender.logfile.layout.ConversionPattern= %n - [%p]-%d{yyyy-MMM-dd HH:mm:ss}- 
  30.  
  31. (%l)%n---> [%m]%n 
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. #ibatis logger config 
  39. log4j.logger.com.ibatis=debug 
  40. log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
  41. log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
  42. log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
  43. log4j.logger.java.sql.Connection=debug 
  44. log4j.logger.java.sql.Statement=debug 
  45. log4j.logger.java.sql.PreparedStatement=debug 
#debug < info < warn < error < fatal
log4j.rootLogger=debug,stdout,logfile
log4j.logger.cn.hydom.ztc=debug

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p [%l] %n---> %m%n
#log4j.appender.stdout.layout.ConversionPattern=- [%p](%l) ---> [%m]%d{yyyy-MMM-dd 

HH:mm:ss}%n


log4j.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] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern= %n - [%p]-%d{yyyy-MMM-dd HH:mm:ss}-

(%l)%n---> [%m]%n






#ibatis logger config
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug



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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值