在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.xml
和applicationcontext.xml
之间的差异? (我看到了一些例子......人们正在将applicationcontext.xml
导入dispatcherservlet-servlet.xml
?)
4)请告诉我弹簧网可以有多少上下文,是否有任何命名约定(如调度程序servlet)?/
答案 0 :(得分:19)
“命名空间也可以通过namespace
servlet init-param显式设置。”您可以设置相对于上下文根
不,ContextLoaderListener
查找applicationContext.xml
(或上下文参数contextConfigLocation
指定的文件。路径再次相对于上下文根.I通常将我的地址放在/WEB-INF/classes/applicationContext.xml
中,并将其设置为context-param的值。
dispatcherServlet-servlet.xml
是由applicationContext.xml
定义的子上下文。子上下文可以从父上下文访问bean,但事实恰恰相反。所以想象一下,你有一个“网络”环境,包含所有控制器和与网络相关的内容,以及与其他所有内容相关的“主要”环境
建议尽可能少的上下文(为简单起见)。但是你可以定义多个调度程序servlet,因此有多个“子”上下文。
答案 1 :(得分:16)
我的问题是我们可以更改它找到的文件名和位置吗?
您是不是要使用未命名为appServlet.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已经回答了。