@JFinal 你好,想跟你请教个问题:这几天在学习jfinal,先简单了解了jfinal的思想,便深深地爱上了这个东西,但是对于一个大四学生来说,想要摸透对源码的理解实属困难,所以就打算对官网提供的jfinal_demo理解学习,不料,这东西跟ssh还是有挺大编码上的区别,因此还是有点难入门,网上找了很多也是对于源码的解析,我想请教作者,这个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