我们可以更改DispatcherServlet上下文配置文件名吗?

时间:2010-09-19 04:36:23

标签: spring spring-mvc

在Spring web mvc

1)如果我们将DispatcherServlet定义如下

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

它在appServlet-servlet.xml文件夹下查找名为WEB-INF的文件,如春季参考文献中所述。

我的问题是,我们可以更改文件名位置吗? (我认为使用上下文或init参数我们可以做到这一点,任何人都可以告诉我究竟应该是什么吗?)

2)在每个春季网络mvc web.xml,我们将有以下行:

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

在这里,我的问题是它寻找的上下文文件? (这是查找dispatcherservlet-servlet.xml的上下文加载器侦听器吗?)

3)dispatcherservlet-servlet.xmlapplicationcontext.xml之间的差异? (我看到了一些例子......人们正在将applicationcontext.xml导入dispatcherservlet-servlet.xml?)

4)请告诉我弹簧网可以有多少上下文,是否有任何命名约定(如调度程序servlet)?/

3 个答案:

答案 0 :(得分:19)

  1. “命名空间也可以通过namespace servlet init-param显式设置。”您可以设置相对于上下文根

  2. 所需的任何路径
  3. 不,ContextLoaderListener查找applicationContext.xml(或上下文参数contextConfigLocation指定的文件。路径再次相对于上下文根.I通常将我的地址放在/WEB-INF/classes/applicationContext.xml中,并将其设置为context-param的值。

  4. dispatcherServlet-servlet.xml是由applicationContext.xml定义的子上下文。子上下文可以从父上下文访问bean,但事实恰恰相反。所以想象一下,你有一个“网络”环境,包含所有控制器和与网络相关的内容,以及与其他所有内容相关的“主要”环境

  5. 建议尽可能少的上下文(为简单起见)。但是你可以定义多个调度程序servlet,因此有多个“子”上下文。

答案 1 :(得分:16)

  

我的问题是我们可以更改它找到的文件名和位置吗?

您是不是要使用未命名为appServlet.xml

的文件

mvc-shocase/web.xml

复制粘贴
<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

答案 2 :(得分:0)

1A)是的,但我们需要将init-param分别传递给DispatcherServlet,其名称和值分别为DD或web.xml文件中的“contextConfigLocation”和“ur file的位置”。

2A)Bozho已经回答了。它[ContextLoaderListener]看起来加载作为上下文param-value提供的上下文xml文件,映射到context-param的上下文param-name。查找“dispatcherservlet-servlet.xml”是Spring MVC中的默认进程。 ContextLoaderListener不会查找它。

3A)Bozho已经回答了。

4A)Bozho已经回答了。