拦截器的实现:
1.编写拦截器类,实现HandlerInterceptor接口
package com.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/*
* 拦截器
*/
public class loginInterceptor implements HandlerInterceptor {
/*
* 在请求结束之后调用
*
* @see
* org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object, java.lang.Exception)
*/
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
/*
* 在请求被处理之后调用
*
* @see org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object, org.springframework.web.servlet.ModelAndView)
*/
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
/*
* 在请求被处理之前调用
*
* @see org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object)
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
/*
* 设置请求的字符集编码
*/
request.setCharacterEncoding("utf8");
/*
* 判断用户登录状态
*/
if (request.getSession().getAttribute("loginedEmployee") == null) {
request.getRequestDispatcher(request.getContextPath() + "/index.jsp").forward(request, response);
return false;
}
return true;
}
}
2.注册拦截器到SpringMVC框架中
<!-- 注册拦截器,并设置拦截规则 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/message/**" />
<bean class="com.interceptor.loginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<mvc:mapping path="/test/number.do"> 拦截范围(路径);例如:后台目录
<mvc:exclude-mapping path=""> 不被拦截范围(路径);例如:后台登录页面