java – 如何阻止Spring MVC阻塞所有其他Servlet?

我正在使用 Spring 2.5 MVC,并希望添加一个第三方Servlet.问题是,Spring MVC捕获所有请求,所以Servlet没有得到任何请求.这里有一个web.xml片段:

用SpringMVC
org.springframework.web.servlet.dispatcherServlet
2

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

<servlet>
    <description>This is the servlet needed for cache.type servlet,returns the packed resources</description>
    <display-name>PackServlet</display-name>
    <servlet-name>PackServlet</servlet-name>
   <servlet-class>net.sf.packtag.servlet.PackServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>PackServlet</servlet-name>
    <url-pattern>*.pack</url-pattern>
</servlet-mapping>

应用程序真的需要/ *映射,一个pack:tag(第三方Servlet)真的需要基于文件扩展名的映射.
有没有可能告诉Spring不处理请求?
感谢致敬.

解决方法

其实你不需要spring来做任何事情,servlet容器可以为你解决这个问题.

当匹配发送请求的servlet取决于由url-pattern定义的匹配规则.没有2个servlet可能具有相同的模式,但它们可能具有重叠的模式.那么4条规则适用:

1)精确匹配优先于通配符匹配
2)更长的路径模式优先于较短的模式
3)路径匹配优先于文件类型匹配
4)/匹配任何未匹配的内容

<servlet-mapping>
  <servlet-name>PackServlet</servlet-name>
  <url-pattern>*.pack</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

如果您使用/ *为SpringMVC,它可能匹配最长的路径.通过删除*,您必须遵循servlet规范的认servlet,并且符合规则4.

Here you can find some more details.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...