В моем приложении я использую архитектуру 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 по умолчанию. Верно ли это предположение? Если это правильно, то как это побороть?
Спасибо.