SSH 整合中的监听器的问题
在做项目时,由于有一部分数据经常被用做查询,为了降低应用程序访问数据库的时间,
想在web server 启动时,设置一个监听器,将查询的结果集放在application中.
监听器中的dao对象是由spring注入的,问题出在tomcat 启动时,先启动监听,再启动
spring 容器并注入相应的bean ,所以启动监听时访问到的dao 对象是null,这时会报一个listener error 错误, 使得web server 无法正常启动.
需要做一个参数初始化类,当web应用被加载时从数据库里取出相关的参数设置
,并把这些参数放置到application里,jsp页面可以从中取出。
1.在web.xml中配置:
<servlet>
<servlet-name>Dispatcher</servlet-name>
<servlet-
class>org.springframework.web.servlet.DispatcherServlet</servlet-
class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Dispatcher-
servlet.xml,/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>context</servlet-name>
<servlet-
class>org.springframework.web.context.ContextLoaderServlet</servlet-
class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>InitialServlet</servlet-name>
<servlet-
class>com.anylinks.billreturn.Web.InitialServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
2.servlet代码
package com.anylinks.billreturn.Web;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import
org.springframework.web.context.support.WebApplicationContextUtils;
import com.anylinks.billreturn.BO.SysParameter;
import com.anylinks.billreturn.Service.ISysParameterService;
/*
* 初始化Servlet,从数据库中读取参数表,保存在application里
* @author 蔡科
* 创建日期:2006-1-9
*/
public class InitialServlet extends HttpServlet {
private Log log = LogFactory.getLog(this.getClass());
private ISysParameterService sysParameterService;
/**
* 从数据库中读取参数表,保存在application里
*
* @throws ServletException
* if an error occure
*/
public void init() throws ServletException {
log.debug("start to intitail ");
// 获取WebApplicationContext
ServletContext application = getServletContext();
WebApplicationContext wac = WebApplicationContextUtils
.getWebApplicationContext
(application);
// 调用sysParameterService取出所有的系统参数
sysParameterService = (ISysParameterService) wac
.getBean("sysParameterService");
Collection paras =
sysParameterService.findAllParameters();
log.debug("sys parameters size:" + paras.size());
// 把参数加到application里去
for (Iterator iter = paras.iterator(); iter.hasNext
();) {
SysParameter para = (SysParameter) iter.next
();
application.setAttribute(para.getParaName(),
para.getParaValue());
log.debug("initial parameter: key=" +
para.getParaName()
+ ", value=" +
para.getParaValue());
}
}
}
分享到:
相关推荐
以下是如何在Servlet中直接获取Spring框架中的Bean的方法。 首先,我们理解Spring容器,即ApplicationContext,它是管理Bean的核心组件。它负责读取配置文件(如XML或Java配置),创建并初始化Bean,以及维护它们...
在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的入口。下面将详细介绍五种获取 WebApplicationContext 和 ...
Spring的注入在Servlet中使用:在Servlet中使用Spring注入的信息,需要WebApplicationContext这个专门为Web准备的应用上下文
这些代理类负责从Spring的WebApplicationContext中获取实际的Filter或Servlet实例,并将请求委托给它们。 3. **配置WebApplicationContext的初始化** 在`web.xml`中,使用`ContextLoaderListener`来初始化Spring...
具体到我们的场景,如果DAO对象被Spring管理,而Servlet不在Spring容器中,那么我们就需要在Servlet初始化的时候从Spring容器中获取DAO对象。 具体操作步骤如下: 1. 在Servlet中定义一个私有成员变量作为DAO对象...
这里,我们使用`WebApplicationContextUtils`类来从Servlet上下文中获取Spring的WebApplicationContext,然后通过ApplicationContext获取Service层的bean。 下面是一个示例,展示了如何在Servlet中获取Service层的...
根据提供的文件信息,我们可以总结出以下关于Spring框架中获取Bean的几种方法的相关知识点: ### Spring框架简介 Spring框架是一款开源的轻量级Java EE应用程序开发框架,它通过提供一系列强大的功能来简化Java...
在Servlet中,可以通过`WebApplicationContext`接口的`getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)`方法获取到Spring的根应用上下文,从而得到Service对象...
可以通过`WebApplicationContextUtils`类从`ServletContext`中获取`WebApplicationContext`实例: ```java WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this....
另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖...
配置完成之后,即可通过 WebApplicationContextUtils.getWebApplicationContext 方法在 Web 应用中获取 ApplicationContext 引用。例如: ```java ApplicationContext ctx = WebApplicationContextUtils.get...
首先,我们需要在类中定义一个 WebApplicationContext 变量,以便获取应用程序的上下文环境变量。然后,我们可以使用 ctx.getBean() 方法来获取指定名称的 Bean 对象。 ```java public class BaseDispatchAction ...
在Web应用中,Spring提供了`org.springframework.web.context.ContextLoader`类来加载`WebApplicationContext`。有两种主要的加载方式: - **ContextLoaderListener**:这是一个Servlet监听器,它会在Web应用启动...
WebApplicationContext是针对Web应用而设计的,它会持有对ServletContext的引用,允许从Web相关的对象(如Servlet)中获取Bean。WebApplicationContext通常在Web应用启动时初始化,并在Web应用运行期间一直存在,...
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,它从 Spring 框架诞生之初就被包含其中。正式名称“Spring Web MVC”来源于其源模块 `spring-webmvc`,但在实际使用中更常见地被称为“Spring MVC”。 与 ...
然后,创建一个Action类,如`LoginAction`,它继承自`ActionSupport`,通过`getWebApplicationContext()`方法获取ApplicationContext,进而通过`getBean()`方法实例化业务对象: ```java public class ...
Spring Boot Test则为Spring Boot应用提供了更便捷的测试工具,包括对MockMVC、WebApplicationContext和嵌入式Servlet容器的支持。 "spring"和"java Framework"明确了讨论的焦点是基于Java的Spring框架。Spring框架...
下面将详细介绍在JSP页面中获取Spring容器中bean的两种方法。 ### 方法一:在Web应用中使用 在Web应用中,一般推荐使用Spring提供的WebApplicationContextUtils工具类来获取ApplicationContext。这种方法主要适用...
ServletContext也是容器,存储了Web应用的各种属性,包括Spring的WebApplicationContext,这样其他Servlet和Filter就能通过ServletContext获取到ApplicationContext,进而访问和操作Bean。 在Struts中,Spring的...
这样,我们就成功地在JSP页面中获取到了Spring管理的`MyService`对象,可以进一步调用其方法来执行业务逻辑。 需要注意的是,虽然在JSP中直接获取Spring bean是可行的,但这并不推荐。因为JSP的主要职责是呈现视图...