Добавление ContextLoaderListener в web.xml в Spring MVC
Я новичок в 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>
Нужно ли добавить следующую строку в файл web.xml?
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Ответы
Ответ 1
Да, вам нужно добавить ContextLoaderListener
в web.xml
,
только , если вы хотите загрузить другие xml файлы Spring, а также при загрузке приложения
и вы можете указать их как
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-security.xml
</param-value>
</context-param>
Ответ 2
Только если у вас два файла конфигурации xml. Один с услугами /DAO и другой с контроллером. Если вы сконфигурировали все в одном конфигурационном файле spring, вам не нужен ContextLoaderListener
, достаточно сервлет-диспетчера.
Рекомендуется разделить конфигурацию на два и использовать ContextLoaderListener
для создания корневого контекста приложения и сервлета диспетчера для создания контекста приложения веб-уровня.
Ответ 3
Это необязательно, вам это действительно не нужно просто для Spring MVC (DispatcherServlet
будет делать). Но добавление безопасности Spring к вашему Spring MVC должно выполняться с помощью
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Просто одно замечание, если вы используете ContextLoaderListener
, вам нужно будет добавить 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>
в вашем web.xml. Извините за то, что он слишком поздно. Приветствия
Ответ 4
<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>
Это сработало для меня.