1

我对 applicationcontext.xml 有一个问题...

当 web.xml 由服务器(tomcat 或其他)解释时..它首先看到 applicationcontext.xml 或 struts.xml

(或者)是不是先看struts.xml有没有再解释applicationcontext.xml再回到struts.xml把applicationcontext.xml环境包含到struts.xml中再解释struts.xml

我想知道流程如何。

我正在使用 struts2 和 spring 3 框架...

谢谢你们..

4

1 回答 1

1

考虑以下 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>  
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>  
    <welcome-file-list>
        <welcome-file>/index.action</welcome-file>
    </welcome-file-list>
</web-app>

过滤器按出现的顺序初始化。所以最肯定 struts.xml 是在 applicationContext.xml 之前读取的,但是如果相反,则相反。它是 servlet 规范的一部分,并在此处明确说明:http: //docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html

但是,如果您使用 servlet 访问资源,它将在过滤器之后初始化,并且顺序可以由 servlet load-on-startup 元素控制。

于 2012-03-22T18:35:23.327 回答