前言
生活中的大部分项目,我们并不是很希望用户直接访问所有的功能和页面,所以,拦截器显得尤为关键
SSM是我们平时用的比较多的框架,拦截器的配置操作,用我的项目小小总结一下
web.xml配置
首先我们再项目的web.xml文件中配置我们的filter
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
//直接/*拦截所有
<url-pattern> /* </url-pattern>
</filter-mapping>
自定义一个LoginInterceptor拦截器类实现HandlerInterceptor接口,并且重写其preHandle方法:
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("uid") == null) {
response.sendRedirect(request.getContextPath()+"/user/login.do");
return false;
}else{
//true 放行 false 拦截
return true;
}
}
}
拦截器类配置好了后,我们需要在spring-mvc.xml中指定我们的拦截器类
<!--配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 以下配置中,必须按顺序配置:mapping > exclude-mapping > bean -->
<!-- 1.mapping:拦截路径 , 可以有多个mapping节点 -->
<mvc:mapping path="/user/**"/>
<mvc:mapping path="/role/**"/>
<!-- 不再拦截路径中的请求,完全不受理 -->
<!-- 2.exclude-mapping:白名单 -->
<mvc:exclude-mapping path="/user/login.do" />
<!-- 3.bean:配置拦截器类,只配置class即可 -->
<bean class="com.zzbt.spring.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
好了,SSM的拦截器配置也完成了,又总结了一点