1. 程式人生 > >關於web.xml中url-pattern的配置以及和@RequestMapping的結合

關於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/

scene2

   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”)