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等)目录下,否则是不能引用的