Spring框架中public Form1()
{
InitializeComponent();
}
void txtSearch_TextChanged(object sender, EventArgs e)
{
cmboxCountry.SelectedIndex = 1;
}
和DispatcherServlet
之间有什么区别?当我们使用spring框架时,是否需要在 web.xml 中配置它们?
答案 0 :(得分:13)
每个DispatcherServlet
的AFAIK都会有一个WebApplicationContext
。默认情况下,DispatcherServlet
会在[appname]-servlet.xml
文件夹下查找名为WEB-INF
的弹簧配置文件。
我们是否需要配置
DispatcherServlet
?
是的,每个Spring应用程序都应配置DispatcherServlet
,因为它是通过其路由所有请求的应用程序。它决定控制器类的适当方法来处理请求。一旦控制器返回model
以及逻辑视图,DispatcherServlet
将获得ViewResolver
的帮助来解析view
(通常是JSP)并将通过model
数据到视图,最后在浏览器上呈现。
我们是否需要配置
ContextLoaderListener
?
不,这不是强制性的。 Spring应用程序可以使用ContextLoaderListener
。
为什么我们需要
ContextLoaderListener
?
通常,当我们构建多层应用程序时,我们不希望在一个配置文件[appname]-servlet.xml
中混淆所有bean。例如,如果您配置spring security
,您希望在security-context.xml
中包含所有这些bean,就像在applicationContext.xml
中配置属于服务层的所有bean一样,并且有些人想要配置bean属于dao-context.xml
中的DAO图层。因此,当您在不同的上下文文件中配置所有这些bean时,您需要知道这些文件存在,因为spring只知道[appname]-servlet.xml
。 ContextLoaderListener
将帮助Spring识别所有其他上下文文件。
希望这有帮助!
答案 1 :(得分:4)
根WebApplicationContext是在应用程序中共享的Spring Application Context。
DispatcherServlet实例实际上有自己的实例 的WebApplicationContext。
一个应用程序中可以有多个DispatcherServlet实例,每个实例都有自己的WebApplicationContext。
根WebApplicationContext是共享的 应用程序,所以如果你有一个根WebApplicationContext和 多个DispatcherServlets,DispatcherServlets将共享 root WebApplicationContext。
但是,对于一个简单的Spring MVC应用程序,人们甚至可能会遇到不需要root WebApplicationContext 的情况。 DispatcherServlet仍然有自己的WebApplicationContext,但它实际上不需要父根WebApplicationContext。
那么,哪些bean应该放在根Web应用程序上下文中,哪些bean应该放在DispatcherServlet的Web应用程序上下文中? 好吧,服务和DAO等通用bean在根Web应用程序上下文中出现,而DispatcherServlet的Web应用程序上下文中包含更多特定于Web的bean,如控制器。
答案 2 :(得分:0)
DispatcherServlet启动时,它将创建一个Spring应用程序上下文并启动 使用在配置文件或给定的类中声明的bean加载该文件。 但是在Spring Web应用程序中,通常会有另一个应用程序上下文。这个 其他应用程序上下文是由ContextLoaderListener创建的
鉴于DispatcherServlet有望加载包含Web组件的bean 例如控制器,视图解析器和处理程序映射,ContextLoaderListener是 预期会在您的应用程序中加载其他bean。这些豆通常是 驱动应用程序后端的中间层和数据层组件。
祝你好运!