dispatcherservlet常見配置
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
當<url-pattern>/</url-pattern>
時,默認就是攔截所有路徑
連靜態資源也不能訪問
但是,controller中配置@RequestMapping的路徑是不會被攔截的,配置了@RequestMapping就相當於在web.xml中註冊了<servlet>
那麼此時如果需要做類似登錄攔截的操作,就必須自定義攔截器,如:
<interceptors>
<interceptor>
<mapping path="/cus/*" />
<beans:bean class="com.water.it.yqb.backend.interceptor.LoginInterceptor">
</beans:bean>
</interceptor>
<interceptor>
<mapping path="/cus/*/*" />
<beans:bean class="com.water.it.yqb.backend.interceptor.LoginInterceptor">
</beans:bean>
</interceptor>
<interceptor>
<mapping path="/biz/*" />
<beans:bean class="com.water.it.yqb.backend.interceptor.LoginInterceptor">
</beans:bean>
</interceptor>
</interceptors>
這樣,凡是cus和biz開頭的路徑都會被攔截
注意:登錄頁面不要以cus或biz開頭,否則連登錄頁都無法訪問,或者可以配置不攔截URL
<property name="exceptUrls">
<list>
<value>/user/login</value>
<value>/user/register</value>
</list>
</property>
靜態資源訪問
當<url-pattern>/</url-pattern>
時,默認就是攔截所有路徑,所以靜態資源也是無法訪問的,參考配置:
<resources mapping="/components/**" location="/components/" />
<resources mapping="/backend/**" location="/backend/" />
<resources mapping="/mobile/**" location="/mobile/" />
配置以後,components、backend和mobile開頭的路徑資源都能正常訪問
注意:靜態目錄必須是web根(可能是webapp,webContent等)目錄下,否則是不能引用的