【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
@JFinal 你好,对JFinal代码还没深入去看,于是有几个困惑的地方,想跟你请教:
JFinal的web应用中
1、JFinal如何区分
如下两种路由规则
:
controllerKey/method
controllerKey/v0-v1
2、
好像拦截器和handler他们的控制权没啥区别?(唯一的区别,是不是:拦截器拦截所有请求,包括静态资源的请求,而handler仅仅拦截Action,但通常应用中,静态资源被web服务一处理了。)
3、Db.pro操作不同数据源时 怎么没提供save的api啊?
1:最大化匹配原则,先匹配整个串,如果匹配上就那是它了,否则就将最后一部分当成 urlPara
2:Interceptor的配置更灵活,可以是拦截全局,可以是拦截某个Controller中所有action、也可以是拦截某个action 方法,而Handler只能是拦截所有请求。Interceptor 在大部分情况下处理更方便,可以方便得到actionKey、controllerKey和controller本身,得到controller本身后就可以很方便地setAttr(...)、render(...),而Handler是处在更外层的拦截,controller、action这些都还没有确定下来。Handler比较适合当请求到来时需要改变对 url 进行处理的情况,如给url做伪静态,可以参考com.jfinal.ext.handler.FackStaticHandler.java,也用来处理 Interceptor处理不了的情况,如处理静态请求
3:通过 Db.pro 查出来的 Record对象中会被自动置入一个 configName 属性值,所以此时 Record 所对应的数据源就是确定的了,所以通过 Db.save(record) 就可以处理。已经考虑过未来会将这个 configName 值去掉,然后在 Db.pro 中添加相应带有 configName 的方法