我正在使用的春季应用程序声明 塔基 urlrewrite滤波器,然后设置一个重写规则,如下所:

<rule>
    <from>^/(.*)$</from>
    <to last="true">/app/$1</to>
</rule>

为什么这样做?

Spring将无法识别不转到该请求的请求 /app/ URL?

否则,此重定向的优势是什么?

有帮助吗?

解决方案

想象您想要春季MVC的 DispatcherServlet 处理应用程序中的所有URL,不包括静态内容的URL。如果您尝试直接与 <url-pattern>/</url-pattern>, ,此映射将优先于静态内容。

使用重写过滤器,您可以为静态内容指定排除条件,例如:

<urlrewrite default-match-type="wildcard">
    <rule>
        <from>/staticContentHere/**</from>
        <to>/staticContentHere/$1</to>
    </rule>
    <rule>
        <from>/**</from>
        <to>/app/$1</to>
    </rule>    
</urlrewrite>

编辑:请注意,由于春季3.0.4有一个 <mvc:resources /> 宣言。有了这一声明, DispatcherServlet 将提供来自 /resources 您的WebApp的子文件夹,因此不需要重写(请参阅 http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top