JavaWeb应用中获取Spring的ApplicationContext
ApplicationContext是Spring的容器环境,经过ApplicationContext对象能够访问全部配置的bean。
在Web开发开发中,经常须要从JSP或者Servlet或者Action中获取ApplicationContext对象,这时候,就没法使用new关键字经过查找配置文件来实例化ApplicationContext这个对象了。Spring经过WebApplicationContextUtils能够方便实现您的需求。下面看个例子:
1、Spring2.5+Struts2环境下
一、配置web.xml,经过这个配置来获取的。
<?
xml
version
="1.0"
encoding
="UTF-8"
?>
<
web-app
xmlns
="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
[url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version
="2.5"
>
<
context-param
>
<
param-name
>contextConfigLocation
</
param-name
>
<
param-value
>/WEB-INF/applicationContext.xml
</
param-value
>
</
context-param
>
<
filter
>
<
filter-name
>struts2
</
filter-name
>
<
filter-class
>org.apache.struts2.dispatcher.FilterDispatcher
</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>struts2
</
filter-name
>
<
url-pattern
>/*
</
url-pattern
>
</
filter-mapping
>
<
listener
>
<
listener-class
>org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
servlet
>
<
servlet-name
>dispatcher
</
servlet-name
>
<
servlet-class
>org.springframework.web.servlet.DispatcherServlet
</
servlet-class
>
<
load-on-startup
>1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>dispatcher
</
servlet-name
>
<
url-pattern
>*.form
</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
二、在JSP、Servlet、Action中获取ApplicationContext
<
%@ page
import
="lavasoft.service.TestService" %
>
<
%@ page
import
="org.springframework.context.ApplicationContext" %
>
<
%@ page
import
="org.springframework.web.context.support.WebApplicationContextUtils" %
>
<
%@ page
contentType
="text/html;charset=UTF-8"
language
="java" %
>
<
html
>
<
head
>
<
title
>Simple jsp page
</title>
</head>
<
body
>
<%
// ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(session.getServletContext());
TestService service = (TestService) ctx.getBean("testService");
String s = service.test();
out.print(s);
%>
</body>
</html>
2、Spring+JSP的环境
在此环境下web.xml配置会有些变化:
<?
xml
version
="1.0"
encoding
="UTF-8"
?>
<
web-app
xmlns
="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
[url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version
="2.5"
>
<
context-param
>
<
param-name
>contextConfigLocation
</
param-name
>
<
param-value
>/WEB-INF/applicationContext.xml
</
param-value
>
</
context-param
>
<
listener
>
<
listener-class
>org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
servlet
>
<
servlet-name
>dispatcher
</
servlet-name
>
<
servlet-class
>org.springframework.web.servlet.DispatcherServlet
</
servlet-class
>
<
load-on-startup
>1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>dispatcher
</
servlet-name
>
<
url-pattern
>*.form
</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
获取的方式和上述彻底同样。
下面给出本例子的工程源码,参看附件。