关闭

application共享变量

251人阅读 评论(2) 收藏 举报
分类:

        在程序中有时候需要将一些数据提前加载,比方说一些访问量多的数据,可以将其加载到公共的地方application中,以方便访问,也可以减少和数据库交互的次数,增加效率。为此我们可以将其放到listener中,只需要加载一次就好,如下:

1、类

public class InitListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
        PrivilegeService privilegeService =(PrivilegeService)ac.getBean("privilegeServiceImpl");
        //准备数据:topPrivilegeList
        List<Privilege> topPrivilegeList=privilegeService.findTopList();
        sce.getServletContext().setAttribute("topPrivilegeList",topPrivilegeList);
        
        Collection<String> allPrivilegeUrls=privilegeService.getAllPrivilegeUrls();
        sce.getServletContext().setAttribute("allPrivilegeUrls", allPrivilegeUrls);
    }
    
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        
    }
    
}
2、web.xml配置此Listener
        <!-- 用于做初始化工作的监听器,一定要配置到spring的ContextLoaderListener后面,因为要用到spring的容器对象 -->
   <listener> 
       <listener-class>cn.itcast.oa.util.InitListener</listener-class> 
   </listener>

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:157047次
    • 积分:6374
    • 等级:
    • 排名:第3809名
    • 原创:160篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1648条
    博客专栏
    UML

    文章:6篇

    阅读:8559
    设计模式

    文章:10篇

    阅读:12559
    最新评论