2018-06-28 16:53
@八级大狂风 项目名称是 context path,这个是另外一个话题了,需要在 html 资源的前方使用 #(CXT) 这样的东东,例如:
src="#(CXT)/front/css/login.css"
再例如:
href="#(CXT)/login"
当然,使用 #(CXT) 之前需要先配置一下:
engine.addSharedObject("CXT", JFinal.me().getContextPath());
注意,context path 这个机制是 java web 规范中给定的,与 jfinal 完全无关
jfinal 是建议所有 context path 设置为 "" 字符串,这样就省去了这些麻烦事
2018-06-28 10:29
jfinal 官网不是这么配置的,因为 jfinal.com 根本就不使用 session,看一下手头的 jfinal club 项目,里面是用数据库实现的 session 共享
弃用 tomcat 或者叫 servlet 规范中的 session ,也就是弃用 getSessionAttr、setSessionAttr、 getSession() 等一切与 session 有关的方法。 然后参考 club 实现一个 session 机制,这个 session 机制可以是保存数据库,也可以是保存到 redis,只要是共享的一个地方存起来就可以了
不用 servlet 中的 session , 由于 http 是无状态的,通常是使用 cookie 或者 token + 签名的方式,一般使用 cookie + https 既方便又安全
2018-06-28 10:23
jfinal 中使用 websocket 有很多资源可以参考:
http://www.jfinal.com/feedback/402
http://www.jfinal.com/share/139
http://git.oschina.net/dreamlu/Easy4JFinal/tree/master/easy-example/src/main/java/net/dreamlu/example/ws
还有一个办法是不使用 JFinal.start() 启动项目,而使用传统的 java web 办法启动项目,例如使用 jetty maven plugin 启动项目,这样就可以将 Jetty 升到最高版本,然后就可以使用 websocket 了
还有一个办法是使用 tomcat 启动项目
2018-06-28 10:15
@阿帕奇 参考一下 TemplateRender 改进一下 JFinalView 里头有关 ClientAbortException 这个异常
简单来说就是 try catch 这个 ClientAbortException 来解决,try catch 在关代码照抄 TemplateRender.java