java – 如何阻止Spring MVC阻塞所有其他Servlet?
发布时间:2020-12-14 05:30:22 所属栏目:Java 来源:网络整理
导读:我正在使用 Spring 2.5 MVC,并希望添加另一个第三方Servlet.问题是,Spring MVC捕获所有请求,所以Servlet没有得到任何请求.这里有一个web.xml片段: 用SpringMVC org.springframework.web.servlet.DispatcherServlet 2 servlet-mapping servlet-nameSpringMVC
我正在使用
Spring 2.5 MVC,并希望添加另一个第三方Servlet.问题是,Spring MVC捕获所有请求,所以Servlet没有得到任何请求.这里有一个web.xml片段:
用SpringMVC <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来做任何事情,servlet容器可以为你解决这个问题.
当匹配发送请求的servlet取决于由url-pattern定义的匹配规则.没有2个servlet可能具有相同的模式,但它们可能具有重叠的模式.那么4条规则适用: 1)精确匹配优先于通配符匹配 <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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |