前言:在框架的使用中狂窑,如果只沒有使用spring框架 ,用到struts2框架時候桑腮,我們的struts2底層機(jī)制有一系列的過濾器泉哈,此時前端控制器(門面模式)可以就可以使用struts2的過濾器來充當(dāng)前端控制器,代碼展示如下(在web.xml文件中):
<filter>
<filter-name>house</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>house</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
而當(dāng)我們使用spring框架來開發(fā)時破讨,spring具備前端控制器功能丛晦,代碼如下(web.xml文件中):
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern><!-- 不能用/* 否則會覆蓋掉已有的配置 -->
</servlet-mapping>
在第二種方案中, 這里url-pattern 的配置 中存在很大區(qū)別:
<url-pattern>/</url-pattern> 不會匹配到.jsp提陶,不會進(jìn)入spring的DispatcherServlet類
<url-pattern>/</url-pattern> 會匹配*.jsp采呐,導(dǎo)致進(jìn)入spring的DispatcherServlet類,然后去尋找controller搁骑,接著找不到對應(yīng)的controller所以報錯斧吐。(有星號)
總之,關(guān)于web.xml的url映射的小知識:
<url-pattern>/</url-pattern> 會匹配到/login這樣的路徑型url仲器,不會匹配到模式為.jsp這樣的后綴型url
<url-pattern>/</url-pattern> 會匹配所有url:路徑型的和后綴型的url(包括/login,.jsp,.js和*.html等)(有星號)