2012-06-13 11 views
14

Soy nuevo en Spring MVC. Tengo una aplicación web. Tengo la siguiente configuración:Agregar ContextLoaderListener a web.xml en Spring MVC

<welcome-file-list> 
    <welcome-file>list.html</welcome-file> 
</welcome-file-list> 
<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 


¿Es necesario añadir la siguiente línea al archivo web.xml ?

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 
+2

¿Funciona con o sin? Solo necesito probar ':)' – sp00m

Respuesta

21

Si es necesario agregar ContextLoaderListener en web.xml, única si desea cargar otros archivos contexto XML Spring así durante la carga de la aplicación y puede especificar como

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 
13

Solo si tiene dos archivos config xml. Uno con servicios/DAO y otro con controlador. Si ha configurado todo en un archivo de configuración de primavera, no necesita el ContextLoaderListener, solo el servlet del despachador es suficiente.

Se recomienda dividir la configuración en dos y usar ContextLoaderListener para crear el contexto de la aplicación raíz y el servlet despachador para crear el contexto de la aplicación de capa web.

3
<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> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>UR_PATTERN</url-pattern> 
    </servlet-mapping> 

Esto funcionó bien para mí.

4

Es opcional, realmente no lo necesita solo para Spring MVC (DispatcherServlet lo hará). Sin embargo, la adición de la seguridad de primavera a su Spring MVC debe ser hecho con

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Sólo una observación, si se utiliza ContextLoaderListener tendrá que añadir DelegatingFilterProxy:

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/admin</url-pattern> 
</filter-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>  
    /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 

en su web.xml también. Lo siento por ser cuatro años tarde. Cheers