Jfinal handle的疑惑

于桂琦 发布于 2013/08/08 11:15
阅读 714
收藏 1

代码如下:

@Override
 public void handle(String target, HttpServletRequest request,HttpServletResponse response, boolean[] isHandled) {
  long start = System.currentTimeMillis();
  nextHandler.handle(target, request, response, isHandled);
  long end = System.currentTimeMillis();
  String uri =request.getRequestURI();
  if(uri.indexOf("/js/") == -1 && uri.indexOf("/fonts/") == -1 && uri.indexOf("/css/") == -1){
   log.debug(target + " Action Time : " + (end - start) + " ms");
  }
 }

问题:用handle记录访问路径的时间,并打印日志,每次访问一个路径,日志会重复打印两次 发现每次都会有两次请求。这个是什么原因?又如何避免?

@JFinal


加载中
0
红星xx
红星xx
菜鸟同问 ,我的还奇怪些 ,打印起码有七八次。
于桂琦
于桂琦
78次 有的不是访问到路由的 有的是你请求的js css等静态资源导致的。但是每次至少打印同一个路径2次··
0
JFinal
JFinal

1:Handler会拦截所有请求,做日志时需要对静态请求进行过滤,建议这么过滤

if (target.indexOf(".") != -1) {
  nextHandler.handle(....);
  return ;
}

2:出现访问多次的请求,最好的办法是调试,看哪些请求是做了日志的,或许是漏掉了一些未过滤的请求,关键在于搞清楚谁发的请求,以及请求是什么,看target变量

3:建议楼主做一个全局拦截器来实现日志功能,自然就过滤掉了静态请求的日志输出

JFinal
JFinal
回复 @于桂琦 : RedisPlugin 还未完成,开发者暂时自己去实现吧
JFinal
JFinal
回复 @于桂琦 : 你用的是 IDEA 吧? 以前也有人出现过这种问题,后来确定是 IDEA 的问题
于桂琦
于桂琦
还有个问题顺便请教您一下。 JFINAL 1.4版本中的RedisPlugin是已经完成的功能么?还是需要另外自己去写插件的?
于桂琦
于桂琦
我访问的 网站根目录。访问的路径target也都指向的网站根目录。 同样是/ 但是会出现2次。 我debug了 但是每次都会进来2遍,过滤也不好使。
返回顶部
顶部