自定义Handler调用两次,怎么实现可以只调用一次。

自定义一个Handler,用于记录IP,并插入数据库,现在发现每次插入两条相同记录。个人猜测是request时,记录一次,reponse,记录一次,怎么能够实现只记录一次。

评论区

杜福忠

2018-03-21 22:37

不贴代码 .. 能猜出来才怪.... 提问题时还是需要站在别人的角度看下吧 ..
我猜有可能是你 tomcat 配的有问题 :
JFinal 部署在 Tomcat 下推荐方法
"记住第一点,永远不要将项目放在 TOMCAT_HOME/webapps 目录下面"

eagle

2018-03-21 22:44

package com.demo.handler;
/*
* 处置IP,当IP处于白名单或黑名单中,进行下一步处理
*/

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.demo.utils.Ipkit;
import com.jfinal.handler.Handler;

public class IPHandler extends Handler{

@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
String ip = Ipkit.getRealIp(request);
System.out.println("Handler IP is:"+ip);

next.handle(target, request, response, isHandled);

}

}

eagle

2018-03-21 22:45

使用Jfinal.start启动

eagle

2018-03-21 22:52

Handler IP is:192.168.1.100
Before invoking /blog
After invoking /blog

JFinal action report -------- 2018-03-21 22:50:33 ------------------------------
Url : GET /blog
Controller : com.demo.blog.BlogController.(BlogController.java:1)
Method : index
Interceptor : com.demo.blog.BlogInterceptor.(BlogInterceptor.java:1)
不过有可能是/的原因,你前面提到的,我发现/blog下面不会出现2次。

eagle

2018-03-21 22:53

Starting Complete. Welcome To The JFinal World :)
Handler IP is:192.168.1.100

JFinal action report -------- 2018-03-21 22:50:04 ------------------------------
Url : GET /
Controller : com.demo.index.IndexController.(IndexController.java:1)
Method : index
--------------------------------------------------------------------------------
Handler IP is:192.168.1.100
Handler IP is:192.168.1.100
Before invoking /blog
After invoking /blog

JFinal action report -------- 2018-03-21 22:50:07 ------------------------------
Url : GET /blog
Controller : com.demo.blog.BlogController.(BlogController.java:1)
Method : index
Interceptor : com.demo.blog.BlogInterceptor.(BlogInterceptor.java:1)
--------------------------------------------------------------------------------
Handler IP is:192.168.1.100
Before invoking /blog/add
After invoking /blog/add

JFinal action report -------- 2018-03-21 22:50:09 ------------------------------
Url : GET /blog/add
Controller : com.demo.blog.BlogController.(BlogController.java:1)
Method : add
Interceptor : com.demo.blog.BlogInterceptor.(BlogInterceptor.java:1)
--------------------------------------------------------------------------------
Handler IP is:192.168.1.100
Before invoking /blog/save
After invoking /blog/save

JFinal action report -------- 2018-03-21 22:50:19 ------------------------------
Url : POST /blog/save
Controller : com.demo.blog.BlogController.(BlogController.java:1)
Method : save
Interceptor : com.demo.blog.BlogInterceptor.(BlogInterceptor.java:1)
com.demo.blog.BlogValidator.(BlogValidator.java:1)
Parameter : blog.content=不错 blog.id= blog.title=天气
--------------------------------------------------------------------------------
Handler IP is:192.168.1.100
Before invoking /blog
After invoking /blog

JFinal

2018-03-22 00:03

有几个人碰到过类似的问题,具体是怎么弄出来的不记得了

不过有一点是可以确定的,这个绝对与 jfinal 无关, 建议设置一下断点,停在断点时看一下调用栈,看是谁在发起调用

杜福忠

2018-03-22 10:58

这样说, 貌似想起了, 记得是浏览器自动请求 缓存成快捷图标 的那个梗吧 ?