WebSphere应用开发

2008-08-01 14:19:14.0     浏览:1307     来源:中国IT实验室
关键词:  WebSphere     应用开发  

2.3 Web Context设置

对于不依赖于应用服务器的Spring 上下文(Context)设置,通常在应用代码中通过FileSystemXmlApplicationContext或ClasspathXmlApplicationContext来获取。比如使用这样的代码来得到上下文:

ApplicationContext ctx = new FileSystemXmlApplicationContext("config.xml");


但是按照控制反转的原则,应用程序代码应该尽可能少的知道上下文的设置。因此,在基于Spring的Web应用中,这样的代码也可以省去。Spring可以通过配置让Web容器自动装载上下文配置文件。从本质上讲,Web应用的ServletContext就是Spring用来存放应用上下文的地方。Spring中与Web Context装载相关的有几个类:

1.ContextLoaderListener:一般的应用服务器如WAS都能先装载Listener,如果不是的话,那么只能使用ContextLoaderServlet。

2.ContextLoaderServlet:需要配置<load-on-startup>使得它率先装载。真正装载Context的类是ContextLoader,上面两个类只是两种调用ContextLoader的不同途径。ContextLoader内部实际调用的是XmlWebApplicationContext,其缺省配置文件为/WEB-INF/applicationContext.xml。

如果使用ContextLoaderListener,其在web.xml中的配置一般如下:

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


如果使用ContextLoaderServlet,其在web.xml中的配置一般如下:

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


应用本身可能除了基于HTTP的Web渠道之外还通过别的渠道对外提供服务,因此,一个比较好的做法是把展示相关的配置与后面业务处理部分的配置分开。这样如果更改了应用的访问渠道,只需要修改对应的配置文件即可。因此,Spring提供了一个WebApplicationContext的概念。在WebApplicationContext中一般包含与Web访问相关的配置定义,包括各种控制动作的定义、界面展示的定义等等。

WebApplicationContext一般由DispatcherServlet来初始化。在上下文层次结构上可以把它看成是ApplcationContext的子上下文。在缺省的情况下,DispatcherServlet装载的配置文件名称为其Servlet名称-Servlet.xml,但是可以通过contextConfigLocation参数来定制。DispatcherServlet在web.xml中的定义示例如下:

<servlet><servlet-name>Dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class><load-on-startup>2</load-on-startup></servlet><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/context/Webcontrollers.xml</param-value></init-param>