1. 程式人生 > >springMVC中配置servlet的url-pattern的四種方式(轉載 筆記)

springMVC中配置servlet的url-pattern的四種方式(轉載 筆記)

https://www.cnblogs.com/canger/p/6084846.html
1.精確匹配

<url-pattern>/book/listBook</url-pattern>

controller

@Controller
@RequestMapping("/book")
public class BookController {

@Autowired
private IBookService ibs;

public void setIbs(IBookService ibs) {
	this.ibs = ibs;
}
@RequestMapping("/listBook")
@ResponseBody
public void testMVC(Book book) {
	System.out.println(book);
}

專案名:maven
則url請求必須為 localhost:8080/maven/book/listBook,才能訪問到方法
其他所有的請求都無法進入servlet容器
2.路徑匹配

以“/”字元開頭,並以“/*”結尾的字串用於路徑匹配,匹配特定路徑
3副檔名匹配

以“*.”開頭的字串被用於副檔名匹配,
 url:  localhost:8080/maven/book/listBook.action
 controller中對應方法的路徑上不要加/

@RequestMapping("listBook")
@ResponseBody
public void testMVC(Book book) {
	System.out.println(book);
}

<url-pattern>*.action</url-pattern>

預設匹配

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

匹配順序

精確匹配,servlet-mapping1:/user/users.html,servlet-mapping2:/。當一個請求http://localhost:8080/appDemo/user/users.html來的時候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
路徑匹配,先最長路徑匹配,再最短路徑匹配servlet-mapping1:/user/,servlet-mapping2:/

。當一個請求http://localhost:8080/appDemo/user/users.html來的時候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
副檔名匹配,servlet-mapping1:/user/,servlet-mapping2:.action。當一個請求http://localhost:8080/appDemo/user/addUser.action來的時候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
預設匹配,以上都找不到servlet,就用預設的servlet,配置為/
注意事項
"/“和”/"含義並不相同

“/”屬於路徑匹配,並且可以匹配所有request,由於路徑匹配的優先順序僅次於精確匹配,所以“/”會覆蓋所有的副檔名匹配,很多404錯誤均由此引起,所以這是一種特別惡劣的匹配模式,一般只用於filter的url-pattern
“/”是servlet中特殊的匹配模式,切該模式有且僅有一個例項,優先順序最低,不會覆蓋其他任何url-pattern,只是會替換servlet容器的內建default servlet ,該模式同樣會匹配所有request。