天天看點

spring mvc路徑比對原則

在Spring MVC中經常要用到攔截器,在配置需要要攔截的路徑時經常用到<mvc:mapping/>子标簽,其有一個path屬性,它就是用來指定需要攔截的路徑的。例如:

1

2

3

4

<code>&lt;</code><code>mvc:interceptor</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>mvc:mapping</code> <code>path</code><code>=</code><code>"/**"</code> <code>/&gt;</code>

<code>        </code><code>&lt;</code><code>bean</code> <code>class</code><code>=</code><code>"com.test.interceptor.TestInterceptor"</code> <code>/&gt;</code>

<code>&lt;/</code><code>mvc:interceptor</code><code>&gt;</code>

根據以上配置,此攔截器會攔截所有的請求。

Spring MVC中的路徑比對要比标準的web.xml要靈活的多。預設的政策實作了 org.springframework.util.AntPathMatcher,就像名字提示的那樣,路徑模式是使用了Apache Ant的樣式路徑,Apache Ant樣式的路徑有三種通配符比對方法(在下面的表格中列出)

這些可以組合出很多種靈活的路徑模式

Table Ant Wildcard Characters

Wildcard

Description

?

比對任何單字元

*

比對0或者任意數量的字元

**

比對0或者更多的目錄

Table Example Ant-Style Path Patterns

Path

/app/*.x

比對(Matches)所有在app路徑下的.x檔案

/app/p?ttern

比對(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern

/**/example

比對(Matches) /app/example, /app/foo/example, 和 /example

/app/**/dir/file.

比對(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java

/**/*.jsp

比對(Matches)任何的.jsp 檔案

 本文轉自 獨孤環宇 51CTO部落格,原文連結:http://blog.51cto.com/snowtiger/2053193