使用Listener准备application作用域数据

在程序中,有些数据我们希望在程序启动的时候就准备好,并且只准备一次,放在application作用域中,这时候,我们通常会用Listener来准备这些数据。但是,用Listener准备application作用域的数据,在获取容器的时候会有一些注意事项。

public class InitListener implements ServletContextListener {

	public void contextInitialized(ServletContextEvent sce) {
		// 获取容器与相关的Service对象
		ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
		PrivilegeService privilegeService = (PrivilegeService) ac.getBean("privilegeServiceImpl");

		// 准备数据:topPrivilegeList
		List<Privilege> topPrivilegeList = privilegeService.findTopList();
		sce.getServletContext().setAttribute("topPrivilegeList", topPrivilegeList);
		System.out.println("------------> 已准备数据 <------------");
		// 准备数据:allPrivilegeUrls
				Collection<String> allPrivilegeUrls = privilegeService.getAllPrivilegeUrls();
				sce.getServletContext().setAttribute("allPrivilegeUrls", allPrivilegeUrls);
				System.out.println("------------> 已准备数据allPrivilegeUrls <------------");
	}

	public void contextDestroyed(ServletContextEvent arg0) {

	}
  1. 该Listener配置在web.xml里,默认通过反射生成实例,来得到这个对象实例来执行
  2. 并没有从Spring容器里面获取,Tomcat没有找Spring容器,所以此处无法使用注解
  3. 如果使用注解,会生成两个对象,一个Tomcat产生的对象,一个Spring容器注入的对象
  4. Tomcat会使用自己产生的对象,而Spring管理的对象没人使用

时间: 2024-10-10 23:06:02

使用Listener准备application作用域数据的相关文章

使用Listener准备application作用域数据的小问题

在程序中,有些数据我们希望在程序启动的时候就准备好,并且只准备一次,放在application作用域中,这时候,我们通常会用Listener来准备这些数据.但是,用Listener准备application作用域的数据,在获取容器的时候会有一些小问题. public class InitListener implements ServletContextListener { //该Listener配置在web.xml里,默认通过反射生成实例,来得到这个对象实例来执行 //并没有从Spring容器

对request,session,application作用域形象理解

看到一篇比较有意思的文章,分享一下.原网址:http://blog.csdn.net/rushkid02/article/details/8063792 几乎所有的Web开发语言都支持Session功能,Servlet也不例外. Servlet/JSP中的Session功能是通过作用域(scope)这个概念来实现的. 作用域分为四种,分别为: page 在当前页面有效(仅用于JSP中)  request 在当前请求中有效  session 在当前会话中有效  application 在所有应用程

不要在Application保存数据

引言: 总是有需要在很多地方在你的应用程序的一些信息.它可以是一个会话,一个昂贵的计算的结果,等,它通常是很诱人的让你避免Activity之间传递对象或保持那些在持久存储的开销. 有时候建议这个模式,这将是可用在所有Activity的Application对象.这个解决方案很简单,优雅......然后这个模式是完全错误的. 如果你认为你的数据将放在那里,那么你的应用程序将最终与一个NullPointerException异常崩溃 一个简单的案例: The Application object:

Application共享数据

1.Application与Session的区别 Application对象:实现程序级别的数据共享. Session对象:实现会话级别的数据共享. 当需要整个程序级别的共享信息时,可以使用Application对象.例如需要设计一个计数器来统计访问系统的所有人数,或者在程序开始和结束时记录时间等.都可以利用Application对象来实现.Application对象中的key是字符串,而值是object类型,也就是说,你可以存储任意类型的数据到Application的一个key中,类似于Has

【Android 个人理解(七)】用ContentValues和自定义Application处理数据

我当时面临的需求是 1.核心算法数据和UI的交互,2.多个数组数据的封装,3.不确定的数组数据转化到表格形式. 就于以上需求,我采用自定义的Application储存和传递全局的数据,采用ContentValues的key-value转化和储存数组数据,然后通过遍历ContentValues的key将对应的值填入对应的表格. 大体的步骤如下: 1.从UI界面获取数据,通过循环填充成数组. // 得到三个初始化编号的值 private void SetValuesAtNewTab(View new

AFNetworking application/x-www-form-urlencoded 数据请求方式

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400 } p.p4 { margin: 0.0px 0.0px 0.0px 0.

Android 通过Application 传递数据

</pre><pre> package com.example.ApplicationTest; import android.app.Application; /** * Created by chang on 14-10-1. */ public class App extends Application { public String getName() { return name; } public void setName(String name) { this.name

Java Listener

六.  Java Listener 1.  Java Listener 简介 * Java Listener 1. Java Listener(即:Java 监听器):用于监听 ServletRequest.HttpSession.ServletContext 作用域对象的创建.销毁.及其属性修改变化 2. 在 Web 项目中可以有多个 Java 监听器 3. 应用场景: a.统计在线人数 b.统计页面访问量 c.服务器加载时数据初始化 * Listener 的使用 1. 在 web.xml 中

jsp 的四个作用域 :page、request、session和application的区别 .

原文入口:点这里~ 1.区别: 1.page指当前页面有效.在一个jsp页面里有效 2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中.在这个过程中可以使用forward方式跳转多个jsp.在这些页面里你都可以使用这个变量. 3.Session是用户全局变量,在整个会话期间都有效.只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSe