在spring-mvc.xml中添加如下内容:
<!-- add by yuruixin -->
<!-- 配置mvc的拦截器 可以配置多个 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 需要被拦截的路径 -->
<mvc:mapping path="/sys/**" />
<mvc:exclude-mapping path="/sys/views/login"/>
<mvc:exclude-mapping path="/sys/views/register"/>
<mvc:exclude-mapping path="/sys/api/login"/>
<mvc:exclude-mapping path="/sys/api/register"/>
<mvc:exclude-mapping path="/sys/api/checkAccount"/>
<!-- <mvc:exclude-mapping path="/resources/**"/> -->
<!-- 拦截处理的interceptor -->
<bean class="com.cmcc.interceptor.SystemInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
拦截器处理类:
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.cmcc.model.SysUser;
public class SystemInterceptor implements HandlerInterceptor{
public final static String SEESION_MEMBER = "elder_platform_seesion_user";
/* (non-Javadoc)
* @see org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.web.servlet.ModelAndView)
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub3
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//请求的路径
String contextPath=request.getContextPath();
String url=request.getServletPath().toString();
HttpSession session = request.getSession();
SysUser user = (SysUser) session.getAttribute(SEESION_MEMBER);
//这里可以根据session的用户来判断角色的权限,根据权限来重定向不同的页面,简单起见,这里只是做了一个重定向
if (user == null) {
//被拦截,重定向到login界面
response.sendRedirect(contextPath+"/sys/views/login?redirectURL="
+ URLEncoder.encode(url));
return false;
}
return true;
}
}