Spring之利用ServletContextListener初始化数据到内存

最近在项目中写了一个将数据初始化到内存的模块,以下是我整理的一个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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值