当我从web.xml中删除侦听器部分时,我的项目运行正常。请让我知道为什么?
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>migration</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
这是eclipse中的一个spring web应用程序。
答案 0 :(得分:0)
仅当您有两个config xml文件时。说,SerivesContext.xml
,ContextDAO.xml
如果您已在一个弹簧配置文件中配置了所有内容,则不需要
ContextLoaderListener,只是调度程序servlet就足够了。
如果您使用不同的,可以将其配置为
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml,WEB-INF/spring-security.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
答案 1 :(得分:0)
ContextLoaderListener
是可选的。如果您所有的bean都在(子)Web上下文(DispatcherServlet)中,则可以将其删除。
它是如何工作的,Spring通过Spring的ContextLoaderListener加载了一个根WebApplicationContext,通过Spring的DispatcherServlet加载了一个子WebApplicationContext。这会产生父子上下文层次结构。
如果你根本不需要任何东西,那么只需保留DispatcherServlet。
进一步阅读:
答案 2 :(得分:0)
在Spring Web Applications中,有两种类型的容器,每种容器都以不同方式配置和初始化。一个是Application Context,另一个是WebApplicationContext。
ContextLoaderListener的目的:
ContextLoaderListener用于初始化Application Context
。在这种情况下,您将告诉Spring加载*-.context.xml
中的所有classpath
个文件。每个应用程序只有一个应用程序上下文。
因此,您可以在web.xml
中将其配置为
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*-context.xml</param-value>
</context-param>
contextConfigLocation的目的:
另一方面,你有WebApplicationContext。 WebApplicationContext是Application Context的子上下文。 Spring Web应用程序中定义的每个DispatcherServlet都将具有关联的WebApplicationContext 。您可以将WebApplicationContext初始化为
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
注意:此处XML的名称必须与<servlet name>-servlet.xml
类似。在我们的例子中,servlet的名称是dispatcher
因此,XML文件的名称是dispatcher-servlet.xml
。
我希望这能让你在何时使用什么&amp;这是为什么。