lazzyRabbit hello

最近在项目中写了一个将数据初始化到内存的模块,以下是我整理的一个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");
    }
}</chartdata></chartdata>

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