2016-08-31 17:36

你的路由配置是 me.add("hello/login", HelloController.class),那么 controllerKey 是 "hello/login",然后你访问的时候是 controllerKey + method,所以应该是 "hello/login/login" 才可以访问到 login 方法,如果不带 method 那么默认是访问 index 方法,也就是说 "hello/login" 是访问 index 方法

2016-08-31 17:29

@tg 路由配置居然是: me.add("hello/login", HelloController.class),哪不用 javap 了,路由配置改为:me.add("hello", HelloController.class) 即可,认真看手册啊

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

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