Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)
2014-09-27 21:41
369 查看
不使用Spring,怎样能在Listener启动的Thread中获取web目录,还真不完全确定。其实我觉得实际代码也很简单。
就是基于普通的listener,然后在listener中获取web目录并放到JRE全局变量中。
但使用Spring,就可以用一种比较优雅的方式来获取了。
在web.xml中的<web-app>节点内加入:
[java]
view plaincopyprint?
<!-- 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。
具体改变请看斜线处:
[html]
view plaincopyprint?
#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目录。例如删除临时文件的线程,定时发送邮件的线程。
就是基于普通的listener,然后在listener中获取web目录并放到JRE全局变量中。
但使用Spring,就可以用一种比较优雅的方式来获取了。
在web.xml中的<web-app>节点内加入:
[java]
view plaincopyprint?
<!-- 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>
<!-- 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。
具体改变请看斜线处:
[html]
view plaincopyprint?
#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
#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目录。例如删除临时文件的线程,定时发送邮件的线程。
相关文章推荐
- Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)
- Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)
- 【转】Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)
- 转:如何从普通Java类中获取WEB-INF目录绝对路径
- 获取应用程序根目录物理路径(Web and Windows)
- java获取程序根目录 WEB-INFO目录 CLASSES文件夹路径
- Java获取Web项目目录路径
- Symfony2获取web目录绝对路径、相对路径、网址的方法
- 获取应用程序根目录物理路径(Web and Windows)
- 三种方法可以获取当前web程序目录物理路径
- 获取web应用路径 // "/" 表示class 根目录
- Symfony2获取web目录绝对路径、相对路径、网址的方法
- 普通JAVA获取WEB项目下的WEB-INF目录
- 不同web服务器获取WEB-INF目录路径
- Java获取Web项目目录路径
- Java获取WEB目录路径
- 普通JAVA类 如何获取,WEB项目的根路径_百度知道
- Java获取WEB目录路径
- 在普通web项目的servlet和filter中获取spring上下文
- 【N转ITeye】java项目中相对路径的获取(普通项目和web项目均有)