`
ynshun
  • 浏览: 91348 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

WebApplicationContext : org.springframework.web.context.ContextLoaderL...[转]

    博客分类:
  • java
阅读更多

如果您想要在自己所定义的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>

分享到:
评论

相关推荐

    spring-web-2.5.jar

    org.springframework.web.context.WebApplicationContext.class org.springframework.web.context.request.AbstractRequestAttributes.class org.springframework.web.context.request....

    org.springframework.context_3.0.5.release.jar.zip

    `org.springframework.context`包不仅是Spring的核心,也是与其他模块如数据访问/集成、Web、测试等集成的基础。在3.0.5.release版本中,这些模块之间的协同工作更加紧密,提供了更加丰富的功能。 总结,`org....

    struts2驱动包

    信息: The listener "org.springframework.web.context.ContextLoaderListener" is already configured for this context. The duplicate definition has been ignored. log4j:WARN No appenders could be found for...

    spring源码spring-framework-4.2.5.RELEASE

    10. **Web应用程序上下文**:`org.springframework.web.context`包提供了WebApplicationContext,它是ApplicationContext的子类,专为Web应用设计。 六、源码学习方法 深入理解Spring源码需要对Java反射、动态代理...

    springmvc项目搭建并实现Junit单元测试

    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ...

    Struts2+Spring3+MyBatis3完整实例

    org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,accountBiz,dataSource,sqlSessionFactory,...

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

    这个简单的例子演示了在 web 应用程序中使用的 Spring 容器,即org.springframework.web.context.WebApplicationContext Web 应用程序使用 Spring Web 侦听器初始化,例如web.xml org.springframework.web.context...

    第14章:网络编程(day20).zip

    [[03 08:58:22,466 INFO ] org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:511) - Refreshing WebApplicationContext for namespace 'hessian-...

    spring3.0.6官方jar包

    4. `org.springframework.web-3.0.6.RELEASE.jar`: 这个模块包含了一些通用的Web辅助类,如WebApplicationContext和HttpRequestHandler,它们为Web应用程序的开发提供了基础支持。 5. `org.springframework.jdbc-...

    spring-webmvc.src.zip

    6. **org.springframework.web.context**: 这里包含了Web应用上下文,WebApplicationContext是ApplicationContext的子类,它提供了与Web环境相关的功能,如Servlet上下文的访问和初始化。 7. **org.springframework...

    spring mvc jar包

    4. `org.springframework.web-3.0.2.RELEASE.jar`:这个库包含了一些 Web 相关的支持类,如 Web 应用上下文(WebApplicationContext)、HTTP 拦截器(HandlerInterceptor)和请求映射(RequestMapping)等,它们与 ...

    Springboot开发的教程.doc

    import org.springframework.web.context.WebApplicationContext; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web....

    在Eclipse 中创建Spring的 Web应用.doc

    Spring框架提供了对Web应用的支持,其中包括`org.springframework.web.context.WebApplicationContext`接口。这个接口扩展了`ApplicationContext`,专门为Web应用设计,提供了处理HTTP请求和响应的能力。与传统的`...

    几种spring获取bean的方法.txt

    import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class BaseDispatchAction { protected ...

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

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener ``` `ContextLoaderListener`监听Web应用程序的启动和结束,它在服务器启动时加载`contextConfigLocation`指定的配置文件,并创建...

    SSH2整合详细示例

    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter &lt;param-name&gt;encoding &lt;param-value&gt;UTF-8 &lt;filter-name&gt;characterEncodingFilter &lt;url-pattern&gt;/* &lt;servlet-name&gt;struts...

    Spring MVC总结(一)

    2. 配置WebApplicationContext:servlet使用已创建的org.springframework.web.context.WebApplicationContext来配置自己。 在Servlet 3.0中,提供了多种配置和注册servlet的方式: * 使用web.xml文件(listing 1)...

    Spring集成Struts、Hibernate.pdf

    &lt;controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" /&gt; &lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn" /&gt; ``` - **Spring配置文件**:在`...

    spring-web.jar spring-webmvc.jar

    1. **Servlet上下文**:`spring-web.jar`提供了`WebApplicationContext`,这是Spring应用程序在Web环境中的上下文。它允许bean与Servlet上下文进行交互,例如注册监听器、过滤器等。 2. **HTTP处理**:包括`...

    Spring源码学习七:web应用自动装配Spring配置文件1

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation classpath:applicationContext.xml; &lt;/context-param&gt; ``` 这段配置告诉Web...

Global site tag (gtag.js) - Google Analytics