2016-10-20 10:56
demo 运行流程简单来说如下:
1:请求进入web.xml中配置的 JFinalFilter之中
2:JFinalFilter 持有一个 handler 链条,会按次序分别去调用这些 Handler
3:其中这个 handler 链条的尾部是 ActionHandler,此 handler 是处理所有动态请求的,也就是处理 Controller 中定义的 action 方法
4:请求到达 ActionHandler 以后,会首先根据该请求的 url 支获取 Action 对象,如果没找到则报 404 异常,如果找到了,则从 Action 中拿到目标 action 所配置的 Interceptor 以及 Controller action 的 Method 对象
5:拿到上述对象以将她们封装在一个 Invocation 的对象中,然后在此对象的 invoke() 方法中通过递归调用来调用 interceptor 与 action 方法
6: action 方法是用户在 Controller action 方法中写的程序,这样就将控制权交给了用户
7:用户在 action 中干完自己的事以后,调用一下 render 方法,后续 Invocation 调用完成以后会转调用户刚刚调用 render 时生成的 Render 对象的 render() 方法,该方向客刻端响应返回的数据
上面的条数据看上去多,其实主要就三步:一是创建 Invocation 封装应该调用的 interceptor 与 controller。二是调用 invcation.invoke(),进而会将调用传递到 interceptor与controller。三是调用 render
2016-10-20 10:30
@都教授 tocmat 下部署参考一下我写的这篇博文:https://my.oschina.net/jfinal/blog/353062
2016-10-18 17:25
这个问题比较大,我只能说核心的:
1:restful 的核心是资源的抽象,首先将各种概念抽象成资源
2:在抽象资源的基础之上,一切事务都看成是对资源的操作,例如,你有一个 account 账号资源,注册操作就是添加一条 account 数据,激活就是将 accout.isReged字段从 0 变成 1等等
3:有很多文章误导,以为 url 的风格是 restful 论文推荐的风格,项目就是 restful 的了,这是错误理解了 restful 本质的结果
4:restful 是一种架构风格,与 url 的风格在本质上是无关的,很多框架,以为将对资源的操作放在 http 请求头中就是 restful,例如使用这种风格 GET /account 、POST /account
5:jfinal 提倡 restful 的关键思想,提倡对资源的抽象,但唯独 url 风格与建议的风格有稍许不同,例如 jfinal 是将对资源的操作放在 url之中的,例如: /account/add、/account/save、/account/delete/id 等等
很多框架就被这个 url 套死了,以为 url 不是论文建议的风格就不是 restful,错误地认为 url 风格是 restful 的关键