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

2016-08-31 16:07

如果用多线程,你的主线程还是得在那去等新开的线程处理完成,如果不是为了将多个任务分发给多线程处理来提升性能的话,没有必要使用多线程,当前 action 本身就是一个单独的线程
你们领导说的那种情况是系统不稳定造成的,这种情况,通常直接返回给客户端一个错误提示,让其重新刷新、操作就好了,系统不稳定是需要极力去解决的,不能让你的代码去解决这种不稳定,如果你的业务代码还要去关心这种事情,是不是也该关心一下系统硬件可能某个字节存储错误的事情?
不同的部分只该去关心自己核心要解决的问题,出错以后回滚事务,报告异常,提示到用户后续的操作足矣,谁出了错应该是去解决那个出错的地方

2016-08-31 11:24

这个问题确实比较诡异,感谢回来分享给大家,以后大家碰到类似问题,解决起来就毫不费力了

2016-08-31 11:20

一行代码的事:Jackson.getJson().parse(string , Xxx.class);

2016-08-31 11:14

@飞舞稻草 建议你对比一下 jfinal 中的 Jackson.java 与自己的源码,消除差异应该就可以了,代码在: com.jfinal.json.Jackson

2016-08-31 11:09

很多人都在这么用,必然是可以的,利用一个全局拦截器,将 inv.invoke() 包裹在 try catch 之中,并处理好 catch 即可。
一般来说只要在 catch 中使用 inv.getController().render(...) 或 redirect(...) 就可以控制跳转了,监控的话,可将异常写日志,也可以是将异常发给专用的监控模块