Проблема сопоставления URL-адресов сопоставления сервлетов с Spring и BIRT

В моем приложении я использую архитектуру Spring MVC (3.0.5) вместе с системой отчетности BIRT.

Я пытаюсь обслужить все запросы, включая статические ресурсы, такие как css, js, html, и файлы изображений, используя пружину DispatcherServlet.

Для этого я добавил следующие записи в свой web.xml

<servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

...............
...............

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

Это направит весь запрос на DispatcherServlet, и в моем файле контекста я добавил

<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/docs/**" location="/docs/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/themes/**" location="/themes/" />

чтобы эти ресурсы загружались из файловой системы.

Эти конфигурации работают нормально. Но сейчас у меня проблемы с моим механизмом отчетности BIRT.

Механизм отчетов BIRT использует некоторые файлы jsp, расположенные в папке с именем webcontent, расположенной в корне приложения. Поскольку мы направляем весь запрос на DispatcherServlet, даже запрос на эти jsp-страницы направляется сервлету spring. Насколько я понимаю из некоторых сообщений, файлы jsp обычно обрабатываются org.apache.jasper.servlet.JspServlet, который зарегистрирован в файле web.xml Apache Tomcat, и имеет следующее отображение сервлета.

<!-- The mapping for the JSP servlet -->
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

Какие изменения я должен внести в свое отображение сервлета, чтобы работать в этой среде? Мне нужно, чтобы файлы jsp обрабатывались сервлетом jsp по умолчанию, а не сервлетом spring. Как я могу этого добиться?

Для этот пост я понял, что вторым приоритетом в сопоставлении сервлетов является URL-адрес префикс, поэтому мой шаблон URL-адреса / для весеннего сервлета переопределяет сопоставление сервлета jsp по умолчанию. Верно ли это предположение? Если это правильно, то как это побороть?

Спасибо.


person Arun P Johny    schedule 27.04.2011    source источник


Ответы (1)


Типичным отображением DispatcherServlet является <url-pattern>/</url-pattern>. В этом случае он по-прежнему обрабатывает все запросы, кроме запросов, обрабатываемых другими сервлетами (в частности, запросов к *.jsp), так что он должен решить проблему.

person axtavt    schedule 27.04.2011