`
Copperfield
  • 浏览: 260205 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
C407adc3-512e-3a03-a056-ce4607c3a3c0
java并发编程陷阱
浏览量:25137
社区版块
存档分类

listener在struts2中的使用--程序初始化时加载数据

 
阅读更多

 

问题: 有一些web系统的页面大量用户需要经常访问,比如大型网站的首页。

如果A用户访问了首页,程序需要从数据库取一次数据,那么B用户再访问同样的页面时,程序是否还会从数据库取数据呢?如果不进行合理的设计,后台的压力巨大,且效率很低。

 

解决方法1: 可以采用单例模式:

第一个用户访问时,从数据库取数据。并将数据保存为一个全局对象;其他用户访问时,程序不再查询数据库,而将对象直接返回。

解决方法2: 可以采用在服务器启动时就初始化对象

启动时从数据库获取数据,并将数据保存到application对象中。整个程序运行期间都有数据,页面可以直接使用这些数据。即,使用listener,继承ServletContextListener借口,并重写contextInitialized方法。

 

方法2的步骤:

1.写一个类,继承特定接口,重写特定方法。

2.在web.xml中配置listener.

 <listener>
     <listener-class>com.jrj.datamart.utils.IndexListener</listener-class>
   </listener> 

 

listener的核心内容

public class IndexListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent event) {

ServletContext context = event.getServletContext();
  //取得appliction上下文
   ApplicationContext ctx =WebApplicationContextUtils.

getRequiredWebApplicationContext(context);
   //取得特定bean
  tableService=(TableService)ctx.getBean("tableService");
  list = tableService.getTBType();
  mapsize = list.size();
  System.out.println(mapsize+"=========");
  TBType tempTBType = new TBType();
  for (int i = 0; i < list.size(); i++) {
   tempTBType = list.get(i);
   if (tempTBType.getLevel() == 1) {
    mainList.add(tempTBType);
   }
  }
  //将对象放入上下文
  context.setAttribute("mainList",mainList);
  context.setAttribute("list",list);

}

//你也可以有选择的重写以下方法

public void contextDestroyed(ServletContextEvent sce) { }

分享到:
评论

相关推荐

    Struts2的监听器的使用

    在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...

    Spring-整合-Struts2

    - **配置 web.xml**:在`web.xml`中配置Spring上下文初始化监听器,以便于启动时加载Spring配置。 3. **整合 Spring 和 Struts2** - **加入 Spring 插件**:在Struts2中集成Spring插件,以实现Action的注入。 - ...

    struts加载spring的方法

    2. **配置Spring监听器**:在`web.xml`文件中,需要配置一个Spring的上下文监听器`ContextLoaderListener`,该监听器负责初始化Spring的ApplicationContext。具体配置如下所示: ```xml &lt;listener&gt; &lt;listener-...

    spring在web.xml中和在struts中的不同配置.[收集].pdf

    总结一下,Spring在`web.xml`中的配置主要关注ApplicationContext的初始化和配置文件的位置,而Struts中的配置则是在Struts2配置文件中声明Action和其依赖。两者的主要区别在于初始化时机和依赖管理的方式,Spring的...

    Struts2中实现web应用的初始化实例详解

    在Struts2中实现Web应用的初始化,意味着在应用程序启动时执行特定的配置或设置,以确保应用以正确的方式开始运行。这通常涉及到数据库连接的建立、全局配置的加载、缓存的初始化等重要任务。下面将详细讲解如何在...

    STRUTS:listener监听器

    它能够在服务器启动或停止时执行特定的任务,例如初始化框架配置、加载资源文件等。该监听器必须在`web.xml`文件中进行配置。 ##### 2.1 配置示例 ```xml &lt;web-app&gt; &lt;listener&gt; &lt;listener-class&gt;org.apache....

    Struts2框架笔记

    1. **过滤器初始化**: 当服务器启动时,Struts2的过滤器会被创建并调用其`init`方法,该方法主要负责加载Struts2的配置文件。 2. **请求处理**: 当客户端发送请求时,过滤器拦截请求并将其转发给Struts2的内核进行...

    在Struts 2中实现IoC

    这一步至关重要,因为`ContextLoaderListener`负责在应用启动时加载Spring的配置文件,建立并初始化Spring IoC容器。配置示例如下: ```xml &lt;listener&gt; &lt;listener-class&gt; org.springframework.web.context....

    spring2.5.5+struts2+ibatis2.3.4

    根据提供的文件信息,我们可以深入探讨如何使用 Spring 2.5.5、Struts 2 和 iBatis 2.3.4 构建一个集成的 Java Web 应用程序。以下是对各个部分的关键知识点的详细解释: ### 一、框架搭建与依赖库 #### 1.1 框架...

    Struts+Spring+Ibatis整合框架搭建文档

    - **作用**:初始化Spring的ApplicationContext,以便在Web环境中使用。 - **配置**:通过`ContextLoaderListener`来加载Spring的配置文件。 **Ibatis** ```xml ``` - **作用**:配置Ibatis的数据源和映射...

    struts2整合spring

    2. 或者,你可以在Struts2的配置文件`struts.xml`中使用常量配置: ```xml &lt;struts&gt; &lt;constant name="struts.objectFactory" value="spring" /&gt; ... &lt;/struts&gt; ``` 然后,在`web.xml`中添加`...

    spring与struts2整合

    在这个阶段,Spring容器已经初始化并加载了配置文件,接下来就是整合Spring和Struts2的关键步骤。 整合有两种主要方法: 1. 第一种方法是在Spring配置文件中声明并管理Struts2的业务逻辑控制器(Action)。例如,...

    用MyEclipse搭建Struts2+Spring+Hibernate框架(图文说明)

    ### 使用MyEclipse搭建Struts2+Spring+Hibernate框架详解 #### 一、创建Web工程SSHDemo 首先,我们通过MyEclipse创建一个Web工程,命名为SSHDemo。这一步是整个框架搭建的基础。 #### 二、在SSHDemo项目中加入...

    spring和struts整合的三种方案

    这种方式使得 Spring 容器能够在 Struts 初始化时加载,从而管理应用中的所有bean。 2. **使用 ContextLoaderListener 监听器** 另一种启动 Spring 容器的方法是在 `web.xml` 中配置 `ContextLoaderListener` ...

    struts2+spring+hibernate整合

    在web.xml中,`&lt;context-param&gt;`元素用于指定Spring配置文件的位置,`&lt;listener&gt;`元素加载Spring的上下文初始化监听器,确保Spring容器在Web应用启动时被初始化。`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素则配置了Struts2...

    学习笔记之struts2整合Spring

    2. `listener`: `ContextLoaderListener`是一个监听器,它会在Web应用启动时加载配置文件并初始化Spring IoC容器。 3. `filter`: `FilterDispatcher`是Struts2的核心过滤器,负责处理HTTP请求。在整合Spring后,它会...

    struts2 tiles的使用(小实例)

    在`web.xml`文件中,我们需要添加`StrutsTilesListener`监听器,以便在应用启动时初始化Tiles框架。这一步确保了Tiles的相关类能够正确加载并参与到Struts2的工作流程中。 ```xml &lt;listener&gt; &lt;listener-class&gt;...

    SSH2框架整合步骤

    - 通常情况下,Struts2 Filter的初始化参数应设置为`2.0`。 ##### 4. Spring与Struts2的集成 - **配置Spring上下文加载监听器**: - 在`web.xml`中添加`ContextLoaderListener`来加载Spring的配置文件。 ```xml...

    struts2+hibernate+spring

    - **Spring ApplicationContext Listener**:在Web应用启动时加载Spring容器,确保Spring容器可以在应用启动时初始化。 - **Spring Introspector清理Listener**:用于清理Spring中的元数据信息,防止内存泄漏。 综...

Global site tag (gtag.js) - Google Analytics