springMVC中配置servlet的url-pattern的四種方式(轉載 筆記)
阿新 • • 發佈:2018-12-14
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:/
副檔名匹配,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。