2016-08-31 17:27

注意,在使用 javap 的时候,区分一下非 WEB-INF/classes 之下的 HelloController 以及在别处的那个 HelloController

2016-08-31 17:26

造成这个问题的原因,多数是 eclipse 的 Default output fold 没有改为项目的 WEB-INF/classes,从而 class 是被编译到了别的地方

2016-08-31 17:26

如果这样的话,问题可以确定了,项目现在加载的类文件不是最新的,可以在命令行用 javap HelloController 看到里面是没有 login() 方法的

2016-08-31 17:21

以及看一下是否有拦截器干扰

2016-08-31 17:21

贴出控制台输出的 jfinal action report,看里面访问的到底是什么

2016-08-31 17:10

@java180 多多支持 jfinal 社区,与社区一起成长

2016-08-31 16:53

最有可能的原因是没有自动编译, login 方法没有生效,建议重启一下

2016-08-31 16:46

@java180 ajax 简单理解成是利用 js 利用浏览器向服务端发起一个 http 请求,然后可以获取这个请求的结果,在得到结果以后可以改变现有的页面中的 html 内容
与传统 http 请求最大的不同是,这个 http 请求是异步发送的,用户的浏览器中的内容不会卡顿,该请求是浏览器发起一个单独的线程进行的

2016-08-31 16:37

简单来说就是 javascript 在页面发起了一次新的请求,而 jfinal 这端通过 renderText(...) 给发送回去文本内容,然后 javascript 端得到了内容,并做出相应处理

2016-08-31 16:36

这个与 JSP 没有关系,这个是 javascript 发起的 XmlHttpRequest,也就是所谓的 ajax 请求,js 在收到后端的 renderText(...) 过来的数据以后,就会回调 success: function(data) 方法

2016-08-31 16:25

@java180 搞定了还不换上个人头像,支持下社区的发展 ^_^

2016-08-31 16:21

简单来说:
1:把登录功能做成一个独立的服务,其它服务的登录功能都通过这个服务进行登录授 权
2:如果要支持同一账号只允许一个客户端登录,那么在登录成功时,判断当前账户是事已登录,可以是踢出已登录用户也可以是让当前登录用户无法登录
3:具体到功能,用户在提供登录用户名与密码之后,登录服务返回一个 access_token 值,然后客户端拿到这个 access_token 去请求其它业务,其它业务拿到这个 access_token 值以后去登录服务验证这个 token 是不是授权过的就可以了

2016-08-31 16:17

最好的解决方案,其实是让应用对读写分享这件事透明,通过使用中间件,或者配置数据库让其自动实现读写分离,而你的项目完全不需要关心这件事

2016-08-31 16:16

至于你说的:“如果此时还没有从主数据库同步到从数据库呢? ”这个不是你担心的事情,你既然用的是主从库,就必须是实时性要求不高的场景, 天然就要容忍这个数据同步的延迟时间

2016-08-31 16:15

一般的系统都是读多写少,所以将主数据源设置为读的那些个库,然后通过覆盖 save()、update() 方法确实可以解决问题,你甚至可以定制 CommModel 继承 Model,覆盖掉 save()、update() 方法,在其中添加 use(...) 方法,然后所有的 baseModel 继承这个 CommonModel 而不直接继承 Model