文档章节

WebApplicationContext : org.springframework.web...

王健
 王健
发布于 2011/12/23 15:53
字数 492
阅读 255
收藏 0
如果您想要在自己所定义的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>

© 著作权归作者所有

王健
粉丝 3
博文 10
码字总数 7512
作品 0
私信 提问
Spring3.0.5jar包用法详解

Spring3.X以后jar包进行了重构,取消了原来2.X版本中的总的spring.jar包,而是把总包中的功能全部分开打包。正在向osgi靠拢。 各个jar包详解如下: 1. org.springframework.aop 包含在应用中...

sfilyh
2012/03/30
301
0
整合spring+mbyatis+mvc时,报异常

环境: maven+spring+springmvc+mybatis进行整合 springmvc版本:3.0.5 mybatis版本:3.4.1 编辑器:idea 依赖的jar包: web.xml配置内容: applicationContext.xml内容: 工程目录结构: 问...

he_jian1
2017/06/25
307
2
Spring Security3源码分析-FilterChainProxy初始化(转)

很久没有更新博客了,最近对Spring Security做了比较深入的研究。 spring security的教程网上很多: http://lengyun3566.iteye.com/category/153689 http://wenku.baidu.com/view/b0c0dc0b7...

blooms
2012/09/18
292
0
SpringMVC启动分析

以下分析基于JDK1.8 启动的第一步是执行监听器,这里web.xml中配置了一个监听器org.springframework.web.context.ContextLoaderListener 接下来,看ContextLoaderLisener 在Web应用启动的时候...

手不要乱摸
2017/11/01
0
0
springmvc 解读

要了解springmvc的内容,阅读官方文档是最直接的方式; http://docs.spring.io/spring/docs/4.3.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#mvc 在此,记录几点任务重要的; ...

110hxl
2016/01/30
171
0

没有更多内容

加载失败,请刷新页面

加载更多

小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
35分钟前
2
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
36分钟前
4
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
44分钟前
4
1
正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置

正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置 今天要用正则表达式实现匹配一个词出现一次或者不出现的情况,但是又不仅仅是这么简单的需求。先详细说下我这种情况吧,也许有...

Airship
50分钟前
6
0
第八讲:asp.net C# web 读取文件

本讲主要讲解如何在asp.net页面上传文件。 首先,前台页面: 其次,后台页面: 结果: 1、前台效果: 2、后台结果:

刘日辉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部