【问题标题】:Can we change DispatcherServlet context configuration file name?我们可以更改 DispatcherServlet 上下文配置文件名吗?
【发布时间】:2011-04-14 06:11:00
【问题描述】:

在 Spring web mvc 中

1) 如果我们定义DispatcherServlet如下

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

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

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

2) 在每个 spring web 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) 请告诉我 Spring Web 可以有多少个上下文,是否有任何命名约定(如调度程序 servlet)?/

【问题讨论】:

标签: spring spring-mvc


【解决方案1】:
  1. “命名空间也可以通过namespace servlet init-param 显式设置。”你可以在那里设置任何你想要的路径,相对于上下文根

  2. 1234563 @,并将其设置为上下文参数的值)。
  3. dispatcherServlet-servlet.xmlapplicationContext.xml 定义的子上下文。子上下文可以从父上下文访问 bean,但反之则不然。所以想象一下,你有一个“网络”上下文,包含所有控制器和网络相关的东西,还有一个“主”上下文,包含所有其他内容

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

【讨论】:

  • 博卓,感谢您的回复...我仍然不清楚前两个答案。 (1) 问题是关于调度程序 servlet 上下文文件的名称和它查找的路径。默认情况下文件应该是&lt;DispatcherServlet-servlet&gt;.xml 并且应该在WEB-INF 文件夹下我们可以使用初始化参数更改这些规则吗? (2)所以它寻找applicationcontext.xml,你能描述一下路径吗?
  • @javanoob - 见更新。您可以设置相对于上下文根的路径。
  • ContextLoaderListener 接受 contextConfigLocationclasspath:/path/to/spring.xml 语法。
【解决方案2】:

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

你的意思是你想使用一个不是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>

【讨论】:

  • 嗨,谢谢您的回复..问题是关于我们可以从appServlet-servlet.xml更改名称(您提到它为appServlet.xml)顺便说一句..您怎么知道我指的是那个例子(mv-showcase):) ?
【解决方案3】:

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

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

3A)博卓已经回答了。

4A)博卓已经回答了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2012-01-03
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多