關於web.xml中url-pattern的配置以及和@RequestMapping的結合
由於servlet 3 及之前版本只接受4種url-pattern形式,在這裡需要注意:在使用SpringMVC時url-pattern設定的形式切記不要與view解析器返回的URI的形式相同,如果相同,則該URI會被dispatcher再次不會處理該,而不會使框架根據該URI找到相對應的view
1、 “/” 該形式為預設的形式,全部請求都通過該形式予以接受,例如應用名為forexample,域名為xxxx.xxxx.xxx,埠號為80,則如下形式的url都會通過該形式被捕獲:
1)xxxx.xxxx.xxx:80/forexample
2) xxxx.xxxx.xxx:80/forexample/
3) xxxx.xxxx.xxx:80/forexample/*
2、 以“/”開頭,並以“/*”結尾的,以上例假設,url-pattern設定為
<servlet-mapping>
<servlet-name>for-example</servlet-name>
<url-pattern>/scene2/*</url-pattern>
</servlet-mapping>
則如下形式的url將將被該配置方式被捕獲:
1) xxxx.xxxx.xxx:80/forexample/
2) xxxx.xxxx.xxx:80/forexample/scene2/
2) xxxx.xxxx.xxx:80/forexample/scene2/*
3、 直接以“*.”開頭,以上例假設,url-pattern設定為
<servlet-mapping>
<servlet-name>for-example</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
則如下形式的url將將被該配置方式被捕獲:
1) xxxx.xxxx.xxx:80/forexample/m.htm
2) xxxx.xxxx.xxx:80/forexample/.../m.htm
4、 直接將url寫死的情況,以上例假設,url-pattern設定為
<servlet-mapping>
<servlet-name>for-example</servlet-name>
<url-pattern>/daa</url-pattern>
</servlet-mapping>
則只有如下形式的url將將被該配置方式被捕獲:
xxxx.xxxx.xxx:80/forexample/daa
Spring框架,@RequestMapping中設定的value為除去可以在url-pattern中確定的部分所剩餘的部分,
以上例假設,url-pattern設定為
<servlet-mapping>
<servlet-name>for-example</servlet-name>
<url-pattern>/scene2/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>for-example</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
則如果請求的url為 xxxx.xxxx.xxx:80/forexample/.../m.htm,則對應的@RequestMapping(“/.../m.htm”),
如果請求的url為 xxxx.xxxx.xxx:80/forexample//scene2/m.htm,則對應的@RequestMapping(“/m.htm”)