Мы находимся в процессе миграции приложения только для jsp в Spring-MVC. По разным причинам мы не можем изменить расширение текущих страниц. (вызовы login.jsp должны обрабатываться контроллером Spring, который будет использовать файл jsp в качестве представления).
Мы делаем это итеративно, поэтому на некоторых страницах должны оставаться файлы jsp (вызовы welcome.jsp не будут обрабатываться контроллером).
Для этого я сопоставил DispatcherDervlet и HandlerMapping с * .jsp и настроил JstlView стандартным способом.
К сожалению, если я перехожу на //login.jsp, я получаю сообщение об ошибке
<No mapping found for HTTP request with URI [/<context>/WEB-INF/jsp/login.jsp] in DispatcherServlet with name 'spring'>
Все это работает, если я изменяю .jsp на любое другое расширение в DispatcherServlet и HandlerMapping.
web.xml:
<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>*.jsp</url-pattern>
</servlet-mapping>
весна-servlet.xml:
<!-- View resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- URL Mapping -->
<bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/login.jsp" value-ref="loginController"/>
</map>
</property>
</bean>
Большое спасибо.
ОБНОВЛЕНИЕ : Я только что проверил, что если я переименую мои файлы .jsp во что-то другое (.jst) и соответствующим образом обновлю viewResolver, то все это будет работать. Очевидно, если представление разрешено в файл с расширением .jsp, Spring пытается переслать представление на другой контроллер.