问题:
有一些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中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...
- **配置 web.xml**:在`web.xml`中配置Spring上下文初始化监听器,以便于启动时加载Spring配置。 3. **整合 Spring 和 Struts2** - **加入 Spring 插件**:在Struts2中集成Spring插件,以实现Action的注入。 - ...
2. **配置Spring监听器**:在`web.xml`文件中,需要配置一个Spring的上下文监听器`ContextLoaderListener`,该监听器负责初始化Spring的ApplicationContext。具体配置如下所示: ```xml <listener> <listener-...
总结一下,Spring在`web.xml`中的配置主要关注ApplicationContext的初始化和配置文件的位置,而Struts中的配置则是在Struts2配置文件中声明Action和其依赖。两者的主要区别在于初始化时机和依赖管理的方式,Spring的...
在Struts2中实现Web应用的初始化,意味着在应用程序启动时执行特定的配置或设置,以确保应用以正确的方式开始运行。这通常涉及到数据库连接的建立、全局配置的加载、缓存的初始化等重要任务。下面将详细讲解如何在...
它能够在服务器启动或停止时执行特定的任务,例如初始化框架配置、加载资源文件等。该监听器必须在`web.xml`文件中进行配置。 ##### 2.1 配置示例 ```xml <web-app> <listener> <listener-class>org.apache....
1. **过滤器初始化**: 当服务器启动时,Struts2的过滤器会被创建并调用其`init`方法,该方法主要负责加载Struts2的配置文件。 2. **请求处理**: 当客户端发送请求时,过滤器拦截请求并将其转发给Struts2的内核进行...
这一步至关重要,因为`ContextLoaderListener`负责在应用启动时加载Spring的配置文件,建立并初始化Spring IoC容器。配置示例如下: ```xml <listener> <listener-class> org.springframework.web.context....
根据提供的文件信息,我们可以深入探讨如何使用 Spring 2.5.5、Struts 2 和 iBatis 2.3.4 构建一个集成的 Java Web 应用程序。以下是对各个部分的关键知识点的详细解释: ### 一、框架搭建与依赖库 #### 1.1 框架...
- **作用**:初始化Spring的ApplicationContext,以便在Web环境中使用。 - **配置**:通过`ContextLoaderListener`来加载Spring的配置文件。 **Ibatis** ```xml ``` - **作用**:配置Ibatis的数据源和映射...
2. 或者,你可以在Struts2的配置文件`struts.xml`中使用常量配置: ```xml <struts> <constant name="struts.objectFactory" value="spring" /> ... </struts> ``` 然后,在`web.xml`中添加`...
在这个阶段,Spring容器已经初始化并加载了配置文件,接下来就是整合Spring和Struts2的关键步骤。 整合有两种主要方法: 1. 第一种方法是在Spring配置文件中声明并管理Struts2的业务逻辑控制器(Action)。例如,...
### 使用MyEclipse搭建Struts2+Spring+Hibernate框架详解 #### 一、创建Web工程SSHDemo 首先,我们通过MyEclipse创建一个Web工程,命名为SSHDemo。这一步是整个框架搭建的基础。 #### 二、在SSHDemo项目中加入...
这种方式使得 Spring 容器能够在 Struts 初始化时加载,从而管理应用中的所有bean。 2. **使用 ContextLoaderListener 监听器** 另一种启动 Spring 容器的方法是在 `web.xml` 中配置 `ContextLoaderListener` ...
在web.xml中,`<context-param>`元素用于指定Spring配置文件的位置,`<listener>`元素加载Spring的上下文初始化监听器,确保Spring容器在Web应用启动时被初始化。`<filter>`和`<filter-mapping>`元素则配置了Struts2...
2. `listener`: `ContextLoaderListener`是一个监听器,它会在Web应用启动时加载配置文件并初始化Spring IoC容器。 3. `filter`: `FilterDispatcher`是Struts2的核心过滤器,负责处理HTTP请求。在整合Spring后,它会...
在`web.xml`文件中,我们需要添加`StrutsTilesListener`监听器,以便在应用启动时初始化Tiles框架。这一步确保了Tiles的相关类能够正确加载并参与到Struts2的工作流程中。 ```xml <listener> <listener-class>...
- 通常情况下,Struts2 Filter的初始化参数应设置为`2.0`。 ##### 4. Spring与Struts2的集成 - **配置Spring上下文加载监听器**: - 在`web.xml`中添加`ContextLoaderListener`来加载Spring的配置文件。 ```xml...
- **Spring ApplicationContext Listener**:在Web应用启动时加载Spring容器,确保Spring容器可以在应用启动时初始化。 - **Spring Introspector清理Listener**:用于清理Spring中的元数据信息,防止内存泄漏。 综...