listener中不能调用数据库操作吗?还是我的流程有问题?
web.xml:
<listener> <listener-class>com.fly.listener.SystemInitListener</listener-class> </listener>
package com.fly.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import com.fly.entity.User; public class SystemInitListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("listener开始................."); User u = User.me.findFirst("select * from user where id=2"); System.out.println(u); } }
java.lang.NullPointerException at com.jfinal.plugin.activerecord.Model.find(Model.java:529) at com.jfinal.plugin.activerecord.Model.findFirst(Model.java:565) at com.fly.listener.SystemInitListener.contextInitialized(SystemInitListener.java:23) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
其实是可以调用数据库操作的, 但是需要你自己写jdbc连接. 因为web.xml在初始化到listener的时候, 关于数据源的配置信息还没有加载. 所以不能通过配置的数据源进行数据库操作.
谢谢,波总辛苦了,我正在用jfinal试着做一个个人博客。 作为一个新手还有很多东西要学啊。
可以在任意地方使用 jfinal activerecord,在 listener中也可以,只不过要事先将 ActiveRecordPlugin 启动起来,具体方法可以参见 jfinal 2.0 手册有关 jfinal activerecord 有关章节。
加载顺序是这样的。context-param --> listener --> filter --> servlet。
好吧,确实是。不能再listener中调用相关操作。必须的在JFinal加载完成后才能才能进行。
这样就可以了。不过这样也方便不用自己配置listener了
我估计是不是一定要用JFinalConfig的afterJFinalStart()方法。文档中写的有,但是说的不是很明白。