JFinal黑科技之被冷落的ServletContext

最近在改版Jnode,也就是本博客的源码。本次改版从15年就开始了,然而因为各种原因一直没有改版完成。这次改版前前后后考虑到了Beetl、jetbrick-template2.x(老版博客为jetbrick-template1.x)后来还是选择了Jsp。

整个这几年接触了jsp、jade4j、jetbrick-template、Beetl以及我最不喜欢的FreeMarker,早已经看开(模版之争纯属闲的蛋疼)。当然新版自然也成了JFinal + Jsp的最佳实战,感兴趣的朋友也可到git@osc查看源码:http://git.oschina.net/596392912/jnode

废话一不小心又说了一大堆,回归正题。我来说说我在使用Jsp之不爽的地方,看过我视频的朋友大家都知道Beetl、FreeMarker和jade4j都比较方便给模版初始化一些变量,例如:http://git.oschina.net/596392912/JFinal2.0-beetl-training 中的。

// 在JFinal启动时,beetl变量中加入启动时间 ${startTime!, "yyyy-MM-dd HH:mm:ss"}
Map sharedVars = new HashMap();
String startTime = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
sharedVars.put("startTime", startTime);
BeetlRenderFactory.groupTemplate.setSharedVars(sharedVars);

那么问题来了,在Jsp中我怎么整?百般无奈,我想到了使用Listener去实现,将参数写到ServletContext。什么,ServletContext?JFinal视乎提供了方法。蜜汁微笑(~。~)

// 在JFinal启动时,加入启动时间 ${startTime}
ServletContext servletContext = JFinal.me().getServletContext();
servletContext.setAttribute("startTime", new Date());

那么那么,你想到了什么?

1. 你还需要ContextPathHandler么?替代方案:

servletContext.setAttribute("CONTEXT_PATH", JFinal.me().getContextPath());

2. 还能干什么?

网站配置信息初始化,比如本博的Options表的数据。

今日分享就到这了,下次继续。

捐助共勉
版权声明:若无特殊注明,本文皆为原创,转载请保留文章出处。