2012-06-13 39 views
14

Tôi mới đến Spring MVC. Tôi có một ứng dụng web. Tôi có cấu hình sau:Thêm ContextLoaderListener vào web.xml trong 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> 


Tôi có cần phải thêm dòng sau vào web.xml tập tin?

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

Ứng dụng có hoạt động khi có hoặc không có? Chỉ cần thử ':)' – sp00m

Trả lời

21

Có bạn cần phải thêm ContextLoaderListener trong web.xml, chỉ nếu bạn muốn tải file bối cảnh mùa xuân xml khác nữa trong khi tải ứng dụng và bạn có thể xác định chúng là

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

Chỉ khi bạn có hai tệp xml cấu hình. Một với Dịch vụ/DAO và một với Bộ điều khiển. Nếu bạn đã cấu hình mọi thứ trong một tệp cấu hình mùa xuân mà bạn không cần ContextLoaderListener, thì servlet của trình điều phối là đủ.

Bạn nên chia cấu hình thành hai và sử dụng ContextLoaderListener để tạo ngữ cảnh ứng dụng gốc và servlet điều phối để tạo ngữ cảnh ứng dụng lớp 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> 

Điều này làm việc tốt cho tôi.

4

Đó là tùy chọn, bạn không thực sự cần nó chỉ cho Spring MVC (DispatcherServlet sẽ làm). Nhưng thêm an ninh mùa xuân tới Spring MVC của bạn phải được thực hiện với

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

Chỉ cần một nhận xét, nếu sử dụng ContextLoaderListener bạn sẽ có thêm 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> 

trong web.xml của bạn là tốt. Xin lỗi vì đã quá bốn năm. Chúc mừng