2012-06-13 15 views
14

Sono nuovo a Spring MVC. Ho un'applicazione web. Ho la seguente configurazione:Aggiunta di ContextLoaderListener a web.xml in 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> 


ho bisogno di aggiungere la seguente riga al file diweb.xml?

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

Funziona con o senza? Basta provare ':)' – sp00m

risposta

21

Sì è necessario aggiungere ContextLoaderListener in web.xml, solo se si desidera caricare altri file contesto Primavera XML, nonché durante il caricamento dell'app e li è possibile specificare come

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

Solo se hai due file xml di configurazione. Uno con Servizi/DAO e un altro con Controller. Se hai configurato tutto in un unico file di configurazione di primavera, non è necessario lo ContextLoaderListener, è sufficiente il servlet del dispatcher.

Si consiglia di dividere la configurazione in due e utilizzare ContextLoaderListener per creare il contesto dell'applicazione root e il servlet dispatcher per creare il contesto dell'applicazione del livello 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> 

Questo ha funzionato bene per me.

4

È facoltativo, non serve proprio per Spring MVC (DispatcherServlet lo farà). Ma l'aggiunta di sicurezza di primavera per il tuo Spring MVC deve essere fatto con

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

Solo un'osservazione, se si utilizza ContextLoaderListener si dovrà aggiungere 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> 

in web.xml pure. Mi dispiace per essere stato quattro anni troppo tardi. Cheers

Problemi correlati