拦截器的配置
要使自定义的拦截器类生效,还需要在Spring MVC的配置文件中进行配置。配置代码如下所示。
<!-- 配置拦截器 -->
<mvc:interceptors>
<!--使用bean直接定义在<mvc:interceptors>下面的Interceptor将拦截所有请求-->
<bean class="com.itheima.interceptor.CustomInterceptor"/>
<!-- 拦截器1 -->
<mvc:interceptor>
<!-- 配置拦截器作用的路径 -->
<mvc:mapping path="/**"/>
<!-- 配置不需要拦截器作用的路径 -->
<mvc:exclude-mapping path=""/>
<!-- 定义在<mvc:interceptor>下面的,表示对匹配路径的请求才进行拦截-->
<bean class="com.itheima.interceptor.Interceptor1" />
</mvc:interceptor>
<!-- 拦截器2 -->
<mvc:interceptor>
<mvc:mapping path="/hello"/>
<bean class="com.itheima.interceptor.Interceptor2" />
</mvc:interceptor>
...
</mvc:interceptors>
在上述代码中,<mvc:interceptors>元素用于配置一组拦截器,其子元素<bean>中定义的是全局拦截器,它会拦截所有的请求;而<mvc:interceptor>元素中定义的是指定路径的拦截器,它会对指定路径下的请求生效。<mvc:interceptor>元素的子元素<mvc:mapping>用于配置拦截器作用的路径,该路径在其属性path中定义。如上述代码中path的属性值“/**”表示拦截所有路径,“/hello”表示拦截所有以“/hello”结尾的路径。如果在请求路径中包含不需要拦截的内容,还可以通过<mvc:exclude-mapping>元素进行配置。
需要注意的是,<mvc:interceptor>中的子元素必须按照上述代码的配置顺序进行编写,即<mvc:mapping … />→<mvc:exclude-mapping … />→<bean … />的顺序,否则文件会报错。