在我的应用程序中,我使用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报告引擎使用位于名为webcontent的文件夹中的一些jsp文件,该文件夹位于应用程序的根目录下。由于我们将所有请求定向到DispatcherServlet
,因此即使对这些jsp页面的请求也会转到spring servlet。我从一些帖子中了解到,jsp文件通常由org.apache.jasper.servlet.JspServlet
处理,该文件在Apache Tomcat的web.xml
文件中注册,并且具有如下的servlet映射
<!-- 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>
我应该在servlet映射中对此环境进行哪些更改?我需要jsp文件由默认的jsp servlet处理,而不是由spring servlet处理。我怎样才能做到这一点?
对于this post我理解servlet匹配的第二个优先级是url前缀,所以spring servelt的url模式/
覆盖了默认的jsp servlet映射,这个假设是否正确?如果它是正确的,那么如何克服这个?
谢谢。
答案 0 :(得分:1)
DispatcherServlet
的典型映射是<url-pattern>/</url-pattern>
。在这种情况下,它仍然处理除了由其他servlet处理的请求之外的所有请求(特别是对*.jsp
的请求),以便它可以解决问题。