我的代码是从前台获取注册信心,包括邮箱
但是发送时候出现重复执行
public void registerstu(){
Iterator<String> it = getParaMap().keySet().iterator();
Record stumsg=new Record();
while (it.hasNext()) {
String pName = it.next();
stumsg.set(pName, getPara(pName));
}
stumsg.set("stustate", "2");
List<Record> s = Db.find("select * from t_stu where useraccount='"+stumsg.get("useraccount")+"'");
boolean ts = false;
if(s.size()>0){
setAttr("info", "0");
}else{
String buid = stumsg.get("bind");
System.out.println(buid);
stumsg.remove("bind");
setAttr("info", "1");
if(buid!=null&&buid.equals("1")){
try {
System.out.println(stumsg.get("stuemail").toString());
String head="绑定成功";
String auth = "恭喜您绑定成功,你可以通过这个邮箱找回您的账号密码";
//发送邮件程序
new Email(stumsg.get("stuemail").toString(),auth,head);
setAttr("info", "1");
ts=true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
setAttr("info", "2");
}
}
}
if(ts){
Db.save("t_stu", "stuid",stumsg);
}
renderJson();
}
然后Ajax提交之后发现路由重复执行了两次
检测了IP发现两次路由执行的IP也不一样
执行情况
117.136.104.198
127.0.0.1
JFinal action report -------- 2018-06-11 18:19:08 ------------------------------
Url : POST /register/registerstu
Controller : com.controller.login.Register.(Register.java:1)
Method : registerstu
Interceptor : com.intercptor.global.MyInterceptor.(MyInterceptor.java:1)
Parameter : facultyid=2 classid=126 bind=1 classname=2017软件技术(软件)1班 userpwd=201552050107 stuemail=1617105926@qq.com facultyname=信息工程学院(软件职业技术学院) stuname=201552050107 stuno=201552050107 useraccount=201552050107
--------------------------------------------------------------------------------
JFinal action report -------- 2018-06-11 18:19:25 ------------------------------
Url : POST /register/registerstu
Controller : com.controller.login.Register.(Register.java:1)
Method : registerstu
Interceptor : com.intercptor.global.MyInterceptor.(MyInterceptor.java:1)
Parameter : facultyid=2 classid=126 bind=1 classname=2017软件技术(软件)1班 userpwd=201552050107 stuemail=1617105926@qq.com facultyname=信息工程学院(软件职业技术学院) stuname=201552050107 stuno=201552050107 useraccount=201552050107
--------------------------------------------------------------------------------
执行两次同样的路由但是第一次IP是对的,第二次就变成本地IP了
99% 的原因是客户端真的发起了两次请求。解决办法无一例外,先打开 chrome 浏览器的开发者窗口观察是谁发起了两次请求,多数是 js 发起的
然后调试后端 java 代码,观察请求发起的源头在哪里
无论哪种原因引起的,但肯定是与 jfinal 无关的
几次历史经验表明,如果不采用我上面介绍的方法,想要找到源头并解决问题很不容易,有的人甚至找了两三天都找不到,最后还是通过 chrome 调试 js 代码,发现是 js 发起的请求