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