2016-10-22 13:17
@Aiome 想了解 Handler 怎样工作,可以看一下源代码中的 com.jfinal.ext.handler 包下面的相关代码,注意几点:
1:Handler 总体是一个单链表结构,其中的 next 持有下一个 handler 对象,其中链表的最后一个元素固定为 ActionHandler 对象,这个对象专用来处理动态请求
2:在 handler 中是通过调用 next.handle(...) 方法来将请求传递给下一个 Handler的,如果不调用则不向下传递,终止单链表调用链条
3:其中的 boolean[] isHandled 这个参数,是为了告知 JFinalFilter 是否要将请求转交给 tomcat 或 jetty 这类容器继续处理,通常静态资源就需要转交,如果不需要转交,则使用 isHandled[0] = true; 即可
建议在这个单链表中设置断点调试看一下程序运行流程,可以清楚地了解细节
2016-10-22 13:12
我再补充一下 jfinal 路由设计的思脉:
1:url 本质上就是去触达后端某个 controller 中的某个 action,这个 action 就是一个 java method,所以总体上设计方向就是将 url 与 action 建立关联
2:将 url 中的最开始部分与 controller 建立关联,于是路由规则第一部分 controllerKey 对应 Controller 类
3:将 url 中的随后的一部分与 Controller 类中的 action method 建立关联,于是 url 第二部分 methodName 对应于 action 的方法
4:按照 restful 风格的核心价值,将 controllerKey 抽象成资源,将 methodName 抽象成对资源的操作,就形成了 jfinal 现在的路由风格
2016-10-22 13:01
不建议这么做,不要被 restful 论文中建议的路由风格给限制住了,jfinal 的路由与论文中建议的路由风格不同之处在于前者将操作放在 url 中,而后者放在了请求头中,例如 jfinal 风格的:GET "/user/delete/1",而论文中建议的是 DELETE "/user/1"
jfinal 更加灵活自由。restful 的核心价值不在路由风格这里,很多人误以为路由风格使用了论文中建议的,就是 restful 类型的项目了,这是很大的误解
restful 是一种软件架构的风格,与 url 风格几乎没有关系,这里有个贴的回复可以看一下:http://www.jfinal.com/feedback/415
2016-10-22 12:48
@Aiome 最近一段时间有重要的事情,文档频道上线被耽误了,文档频道将会提供非常详细的文档,与示例,详细到方法参数的说明,以及典型用法的代码,多多关注社区动态
2016-10-21 18:40
@happyboy jfinal 2.3 新添加的功能,将秒掉 ibatis 这类解决方案,学习成本极低,用户体验极好,代码量极少,多多关注社区动态
2016-10-21 13:12
@jinyuanyuanab 其实有蛮多人误以为 ajax 会自动处理服务端返回的数据,ajax 是一段 js 代码发出的一个异步 http请求,按下面几条思脉理解一下就彻底明白了:
1:点击链接、地址栏输入这类普通请求是由浏览器发出,服务端响应数据以后,浏览器会自动处理,例如响应的是 html就渲染,响应的是 redirect 就去重定向
2:而 ajax 由一段 js 代码发出的异步请求,服务端响应的数据会被这段 js 代码所接管,此时对数据的处置权完全取决于这段 js 代码,如果这段 js 代码啥也不干,那就没有任何行为。误会就发生在这里,不少人误以为这段 js 代码会智能化的做出某些处理
2016-10-21 11:41
@都教授 典型的 log4j.properties 文件配置错误,不用再寻求其它的原因,在官网首页下载一个 jfinal demo,把里面的 lo44j.properties 文件直接 copy 到项目中覆盖掉原来的
此外,强列建议用 DruidPlugin 换掉 C3p0Plugin,后者太古老了,不太稳定
2016-10-20 19:11
@随便去个名 如果确实有异常,并且希望看到异常的话,首先要配置好 log4j.properties 文件。这个配置好以后,jsp 报错的信息就清楚了,后面的问题就好解决了,此外检测一下 me.setViewType(ViewType.JSP) 有没有配置,默认是 ViewType.FREE_MARKER