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

jav*_*oob 15 spring spring-mvc

在Spring web mvc中

1)如果我们定义DispatcherServlet如下

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
Run Code Online (Sandbox Code Playgroud)

它会查找spring命令中提到的文件夹appServlet-servlet.xml下的WEB-INF文件.

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

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

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

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

3)dispatcherservlet-servlet.xmlapplicationcontext.xml?之间的区别?(我看到一些examples..where人导入applicationcontext.xmldispatcherservlet-servlet.xml?)

4)请告诉我我们可以为spring web提供多少上下文,是否有任何命名约定(如调度程序servlet)?/

Boz*_*zho 19

  1. "也可以通过namespaceservlet init-param 显式设置名称空间." 您可以相对于上下文根设置您想要的任何路径

  2. 不,ContextLoaderListener查找applicationContext.xml(或由context-param指定的文件contextConfigLocation.再次,路径相对于context-root.我通常将其放入/WEB-INF/classes/applicationContext.xml,并将其设置为context-param的值).

  3. dispatcherServlet-servlet.xml是由定义的子上下文applicationContext.xml.子上下文可以从父上下文访问bean,但事实恰恰相反.因此,假设您拥有一个"网络"环境,包含所有控制器和与Web相关的内容,以及与其他所有内容相关的"主要"上下文

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


dir*_*ira 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>
Run Code Online (Sandbox Code Playgroud)