对web.xml当中filter的init-param的当前路径的测试
来源:互联网 发布:java仓库管理系统源码 编辑:程序博客网 时间:2024/06/05 02:53
这两天一直在设法实现使用过滤器处理日志记录。
在web.xml中的配置如下:
我们知道,对于客户端的每一个request,web容器都会根据web.xml的配置内容,先使用配置的filter进行处理,然后交付到对应的controller去处理。
我这里想实现的就是,利用web.xml里面配置的filter。首先,记录来访者的IP和要访问的资源。然后,再把request交付给对应的controller去处理,实现来访信息记录。
其中,日志功能使用了log4j对应的jar:slf4j-api.jar和slf4j-log4j.jar两个。
编写的filter的代码如下:
package test;import org.apache.log4j.*;import java.io.IOException;import javax.servlet.*;import javax.servlet.http.*;/** * Created with IntelliJ IDEA. * Date: 13-7-6 * Time: 上午10:34 * To change this template use File | Settings | File Templates. */public class Filter_Log implements Filter { //declare a object of Log private Logger log = LogManager.getLogger(this.getClass()); //declare a variable named fileName, to represent the name of the current Filter private String fileName; public void init(FilterConfig config) throws ServletException { // get the name of Filter, and assigned to filterName fileName = config.getInitParameter("logDate");// String realPath = config.getServletContext().getRealPath(fileName); System.out.print(fileName); FileAppender fileAppender = null; SimpleLayout simpleLayout = new SimpleLayout(); //set to load log when start try { fileAppender = new FileAppender(simpleLayout,fileName,true); log.addAppender(fileAppender); log.setLevel((Level)Level.DEBUG); log.info("start Filter bla bla bla "+fileName); } catch (IOException e) { System.out.print("error exists!!!!bla bla"); log.error("file not found",e); } log.info("start Filter: bla bla bla "+fileName); } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException{ // HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; long startTime = System.currentTimeMillis(); String requestURI = request.getRequestURI(); requestURI = request.getQueryString() == null ?requestURI:(requestURI + "?" + request.getQueryString()); chain.doFilter(request,response); long endTime = System.currentTimeMillis(); log.info(request.getRemoteAddr() + " access " + requestURI + ", total time is " + (endTime - startTime) + " millionseconds"); } public void destroy (){ log.info("close filter: alb alb alb "+fileName); }}
在web.xml中的配置如下:
<filter> <filter-name>Log</filter-name> <filter-class>test.Filter_Log</filter-class> <init-param> <param-name>logDate</param-name> <param-value>LogDate.txt</param-value> </init-param> </filter> <filter-mapping> <filter-name>Log</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
然后,编写一个前台页面index.jsp.。内容随意了。
现在,问题来了:LogDate.txt文件到底在哪里????
答案是:你的JVM的bin目录下。这个还望大神们给个解释,小弟这厢有礼了!!!
另外,如果web.xml里面配置的是/LogDate.txt的话。LogDate.txt文件又是在哪里呢
答案是:你的C盘根目录。同志们,有疑问的可以自己实践一下!!!
个人配置如下:
OS:windows XP SP2
web容器:Apache Tomcat/7.0.27
IDE:Intellij IDEA12.1.3
别的配置信息,就木有值得一提的了。
PS:当前的所有测试是在Intellij IDEA12.1.3中直接运行本地tomcat7.0服务器,并部署项目时的测试结果。
实际部署在tomcat服务器上的时候
当把项目文件拷贝到tomcat的webapps\XXX\中时,
<init-param> <param-name>logDate</param-name> <param-value>LogDate.txt</param-value> </init-param>
此时,LogDate.txt是在tomcat的bin所在的那层目录下<init-param> <param-name>logDate</param-name> <param-value>/LogDate.txt</param-value> </init-param>
此时LogDate.txt是在当前盘符的根目录下
- 对web.xml当中filter的init-param的当前路径的测试
- web.xml之<context-param>与<init-param>的区别
- web.xml的初始化参数:<context-param>与<init-param>的区别
- Web.xml的<context-param>与<init-param>的使用与区别
- 获取web.xml中的context-param和init-param定义的值
- web.xml之<context-param>与<init-param>的区别与作用
- 获取web.xml中的context-param和init-param定义的值
- web.xml之context-param与init-param的区别与作用
- 【转】获取web.xml中的context-param和init-param定义的值
- web.xml文件中context-param与init-param的区别
- web.xml之<context-param>与<init-param>的区别与作用
- web.xml的配置中<context-param>与<init-param>配置作用
- web.xml中在Servlet中获取context-param和init-param内的参数
- 获取web.xml中的context-param和init-param定义的值
- 解析web.xml中在Servlet中获取context-param和init-param内的参数
- web.xml中<context-param>的作用,及与init-param区别
- JAVA基础(二) web.xml中<context-param>与<init-param>的区别与作用
- web.xml 中的<context-param>与<init-param>的区别与作用
- 小证明题 编译原理-->题目原型:
- 安家了
- 记录数据库ddl操作触发器
- 字符串常用函数
- JPA加载_删除_更新对象
- 对web.xml当中filter的init-param的当前路径的测试
- Unity脚本的执行顺序
- Solr4.2搜索异常org.apache.solr.client.solrj.SolrServerException: Error executing query
- Apple严控Java太不人性化
- RAC的一个连接bug
- Android RIL 调试分析全记录
- PHP---- 错误处理,出发错误,自定义错误处理器
- 《向朋友借钱》:一个发人深省的故事
- hdu 1978 How many ways