`

org.springframework.web.context.ContextLoaderListener作用

阅读更多

如果您想要在自己所定义的Servlet类别中使用Spring的容器功能,则也可以使用 org.springframework.web.context.ContextLoaderListener,例如在web.xml中使用< listener>标签加以定义:

...
<listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
...


ContextLoaderListener预设会读取applicationContext.xml,您可以指定自己的定义档,只要在<context-param>中指定"contextConfigLocation"参数,例如:

...
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/beans-config.xml,
           → /WEB-INF/demo-service.xml</param-value>
</context-param>
...


接着您可以在自定义的Servlet中使用 org.springframework.web.context.support.WebApplicationContextUtils,从 ServletContext中取得org.springframework.web.context.WebApplicationContext,例如: 

WebApplicationContext ctx =
    WebApplicationContextUtils.
        getRequiredWebApplicationContext(
                         this.getServletContext());


WebApplicationContext实作了ApplicationContext介面,是Spring专为Servlet的Web应用程式设计的 ApplicationContext实作类别,在取得WebApplicationContext之后,您可以利用它来取得Bean定义档中定义的 Bean实例,例如:
Date date = (Date) ctx.getBean("dateBean");


在不支援Listener设定的容器上(例如Servlet 2.2以更早的版本),您可以使用org.springframework.web.context.ContextLoaderServlet来取代上面的ContextLoaderListener的设定,例如:

...
<servlet>
    <servlet-name>contextLoader</servlet-name>
    <servlet-class>
      org.springframework.web.context.ContextLoaderServlet
    </servlet-class>  
    <load-on-startup>1</load-on-startup>
</servlet>
...


综合以上的叙述,撰写一个简单的范例来示范完整的组态方式,假设您撰写了一个简单的Servlet程式,作用为提供简单的报时功能,如下所示:

  • TimeServlet.java
package onlyfun.caterpillar;
 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.
                                support.WebApplicationContextUtils;
 
public class TimeServlet extends HttpServlet { 
    public void doGet(HttpServletRequest req, 
                    HttpServletResponse res) 
                  throws ServletException, IOException { 
        WebApplicationContext ctx = 
                WebApplicationContextUtils.
                    getRequiredWebApplicationContext(
                        this.getServletContext());
        
        PrintWriter out = res.getWriter(); 
        out.println(ctx.getBean("dateBean")); 
    } 
}


这个Servlet中使用了WebApplicationContext来尝试取得dateBean,您可以在web.xml中定义ContextLoaderListener与Bean定义档的位置,例如:

  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    → http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>    

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/beans-config.xml</param-value>
    </context-param>     
    
    <listener>
        <listener-class>
         org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    
    <servlet>
        <servlet-name>time</servlet-name>
        <servlet-class>
            onlyfun.caterpillar.TimeServlet
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>time</servlet-name>
        <url-pattern>/time.do</url-pattern>
    </servlet-mapping>      
</web-app>


在<context-param>的"contextConfigLocation"属性中,设定了Bean定义档的位置与名称,Bean定义档的内容如下所示:

  • beans-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC 
 "-//SPRING/DTD BEAN/EN" 
 "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans>   
    <bean id="dateBean" class="java.util.Date" singleton="false"/>
</beans>


您可以连接至TimeServlet,结果会显示连接上的时间。

分享到:
评论

相关推荐

    java解决org.springframework.web.context.ContextLoaderListener

    在Java Web开发中,`org.springframework.web.context.ContextLoaderListener` 是Spring框架的一部分,它负责初始化一个Web应用程序的Spring上下文。这个监听器是基于Servlet容器(如Tomcat、Jetty等)的,当Web应用...

    spring-web-2.5.jar

    org.springframework.web.context.ContextLoaderListener.class org.springframework.web.context.ContextLoaderServlet.class org.springframework.web.context.ServletConfigAware.class org.springframework.web....

    spring_MVC源码

    09. &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; 10. &lt;/listener&gt; 11. 12. &lt;servlet&gt; 13. &lt;servlet-name&gt;spring&lt;/servlet-name&gt; 14. &lt;servlet-class&gt;org.spring...

    struts2驱动包

    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org....

    spring和hibernate整合

    org.springframework.web.context.ContextLoaderListener &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener&lt;/listener-class&gt; &lt;/listener&gt;

    com.springsource.org.objectweb.asm-3.2.0.jar

    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error ...

    SpringMVC两种配置的Demo

    import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet....

    spring-simple-web:使用 Spring Framework 的简单 Web (WAR) 项目

    Web 应用程序使用 Spring Web 侦听器初始化,例如web.xml org.springframework.web.context.ContextLoaderListener 。 Spring Web 侦听器使用web.xml的contextConfigLocation上下文参数进行初始化。 此设置的...

    IDEA用maven创建springMVC项目和配置(XML配置和Java配置)

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener ``` 现在,我们已经配置好了Spring MVC的基本框架。你可以开始编写Controller、Service、DAO层的代码,实现业务逻辑。Controller通常...

    SpringFramework_3.1.0RELEASE版本_框架搭建

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;spring &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;load-on-startup&gt;1 ...

    Spring的监听器ContextLoaderListener的作用

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; 这样, ContextLoaderListener 就会自动装配 spring 配置文件。 ContextLoaderListener 是 Spring 框架中一个非常重要的...

    SpringMVC实现数据库连接--jdbcTemplate

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;/servlet-context&gt; ... &lt;/web-app&gt; ``` 最后,创建一个`spring-mvc-servlet.xml`配置文件,用于Spring MVC的初始化: ```xml ...

    搭建Spring项目

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

    Spring MVC入门小例子

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;appServlet &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

    使用springmvc框架编写helloworld,使用eclispe开发工具

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

    使用maven简单搭建Spring mvc + redis缓存

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;appServlet &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

    SpringMVC的搭建

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener ``` 3. 配置servlet-context.xml 在`/WEB-INF/spring/appServlet/servlet-context.xml`中,定义SpringMVC的配置,如视图解析器(View...

    springmvc搭建(带jar包)

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;!-- 映射所有请求 --&gt; &lt;servlet-name&gt;dispatcher &lt;url-pattern&gt;/ ``` 接着创建 `servlet-context.xml` 文件,配置 Spring MVC 的...

    struts,spring,hibernater集合文档

    org.springframework.web.context.ContextLoaderListener ``` - **配置文件路径**: 通过以下配置指定 Spring 配置文件的位置。 - 示例代码: ```xml &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation ...

    Spring mvc 环境搭建(maven构建)

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet &lt;param-name&gt;...

Global site tag (gtag.js) - Google Analytics