Spring не может разрешить представление JSP - PullRequest
1 голос
/ 25 мая 2011

У меня есть развертывание Tomcat с одним веб-приложением, которое находится внутри web/WEB-INF.Вот способ создания экземпляра контейнера для пружин:

<servlet>
    <servlet-name>report</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/report-servlet.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>report</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Файл report-servlet.xml найден, загружен и правильно проанализирован.

Однако мои представления JSP не разрешаются.Вот мой распознаватель:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

У меня корневой URL-адрес, сопоставленный с / welcome:

<!-- Forwards requests to the "/" resource to the "welcome" view -->
<mvc:view-controller path="/" view-name="welcome"/>

И это представление найдено и делегировано InternalResourceViewResolver при запросе http://localhost/, но .jsp не найден:

[org.springframework.web.servlet.view.InternalResourceView] (http-11080-1) Rendering view with name 'welcome' with model null and static attributes {}
[org.springframework.web.servlet.view.InternalResourceView] (http-11080-1) Forwarding to resource [/WEB-INF/views/welcome.jsp] in InternalResourceView 'welcome'
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Bound request context to thread: org.apache.catalina.core.ApplicationHttpRequest@10ea443f
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) DispatcherServlet with name 'report' processing GET request for [//WEB-INF/views/welcome.jsp]
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping@4ab83be0] in DispatcherServlet with name 'report'
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp]
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping@2c1533c8] in DispatcherServlet with name 'report'
[org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp]
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping@4268cc6] in DispatcherServlet with name 'report'
[org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp]

И содержимое WEB-INF / views:

# ls -l WEB-INF/views/welcome.jsp 
-rw-r--r-- 1 user group 1.2K 2011-05-24 15:43 WEB-INF/views/welcome.jsp

Почему у контейнера не возникнет проблем с поиском файла Spring xmlсодержащий мои бины, но не сможет разрешить каталог, содержащий мои JSP?

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Следующее сопоставление URL перенаправит все запросы на сервлет report.Но вы не должны устанавливать обработчики для файлов JSP в своих конфигурациях сервлета диспетчера.

<servlet-mapping>
    <servlet-name>report</servlet-name>
    <url-pattern>/</url-pattern>
 </servlet-mapping>

Для достижения того, что вы хотите, вы должны указать шаблон URl, который следует перенаправить на сервлет report.Это должно исключать файлы JSp.

Я предлагаю вам указать что-то вроде префикса к вашим URL.Spring Dispatcher Servlet будет обрабатывать только эти URL-адреса.Как показано в примере ниже.

<servlet-mapping>
    <servlet-name>report</servlet-name>
    <url-pattern>/report/*</url-pattern>
 </servlet-mapping>

Теперь все URlL с /report/<something> будет обрабатываться Spring webmvc.Этот сервлет (report) будет применяться к URL, заканчивающимся * .jsp.

0 голосов
/ 25 мая 2011

Я решил ответить на свой вопрос, а не редактировать ОП или в качестве комментария к несвязанному ответу.

Оказывается, Tomcat настроен неправильно. У меня не был настроен сервлет JSP (или в этом случае DefaultServlet), поэтому представления JSP не обрабатывались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...