在程序中有时候需要将一些数据提前加载,比方说一些访问量多的数据,可以将其加载到公共的地方application中,以方便访问,也可以减少和数据库交互的次数,增加效率。为此我们可以将其放到listener中,只需要加载一次就好,如下:
1、类
public class InitListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());PrivilegeService privilegeService =(PrivilegeService)ac.getBean("privilegeServiceImpl");//准备数据:topPrivilegeListList<Privilege> topPrivilegeList=privilegeService.findTopList();sce.getServletContext().setAttribute("topPrivilegeList",topPrivilegeList);Collection<String> allPrivilegeUrls=privilegeService.getAllPrivilegeUrls();sce.getServletContext().setAttribute("allPrivilegeUrls", allPrivilegeUrls);}@Overridepublic void contextDestroyed(ServletContextEvent arg0) {}}
2、web.xml配置此
Listener
<!-- 用于做初始化工作的监听器,一定要配置到spring的ContextLoaderListener后面,因为要用到spring的容器对象 -->
<listener>
<listener-class>cn.itcast.oa.util.InitListener</listener-class>
</listener>