利用ServletContextListener初始化数据到内存

来源:互联网 发布:爱心地图的软件 编辑:程序博客网 时间:2024/06/06 19:26

最近在项目中写了一个将数据初始化到内存的模块,以下是我整理的一个DEMO。

首先在 web.xml 中注册listener

<listener><listener-class>com.mlxp.listener.InitDataListener</listener-class></listener>
然后写一个类继承ServletContextListener类(当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法(销毁,创建)。)

public class InitDataListener implements ServletContextListener {    @Override    public void contextDestroyed(ServletContextEvent arg0) {        // TODO Auto-generated method stub        System.out.println("detroyed");    }    @Override    public void contextInitialized(ServletContextEvent context) {        // TODO Auto-generated method stub        List<ChartData> list = new ArrayList<ChartData>();        ChartData chartData = new ChartData();        chartData.setName("直接访问");        chartData.setValue(335);        list.add(chartData);        chartData = new ChartData();        chartData.setName("邮件营销");        chartData.setValue(1325);        list.add(chartData);        chartData = new ChartData();        chartData.setName("联盟广告");        chartData.setValue(123);        list.add(chartData);        chartData = new ChartData();        chartData.setName("视频广告");        chartData.setValue(215);        list.add(chartData);        chartData = new ChartData();        chartData.setName("搜索引擎");        chartData.setValue(735);        list.add(chartData);        JSONArray json = JSONArray.fromObject(list);        String strJson = json.toString();        context.getServletContext().setAttribute("chartdata",strJson);        System.out.println("end init");    }}

Contorler中获取内存中数据并传到页面

String json = request.getSession().getServletContext().getAttribute("chartdata").toString();request.setAttribute("data", json);
最后页面获取到数据并展示出来,我在这里利用数据画了一个饼状图


POINT:

1、把service注入listener
通过WebApplicationContextUtils获取spring应用的上下文。
参考:http://blog.csdn.net/wangjia55/article/details/51712470
http://www.cnblogs.com/fjdingsd/p/5731982.html
2、spring容器的生命周期与各种 Listener

可以通过不同的Listener来实现各种需求
参考:http://blog.csdn.net/zjs40/article/details/61466349
3、ServletContext的讲解和使用
利用ServletContext可以实现网站计数器,网站在线用户的显示等功能。
参考:http://blog.csdn.net/jiben071/article/details/6024655

DEMO:http://download.csdn.net/download/lazyrabbitlll/10033416

阅读全文
1 0
原创粉丝点击