在Spring Mvc中配置如下:
特别需要注意http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd,版本必须是3.2或者以上,3.2以下<mvc:exclude-mapping>标签会报错
<!-- 配置用于session验证的拦截器, 如果有多个拦截器满足拦截处理的要求,则依据配置的先后顺序来执行-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 进行拦截:/**表示拦截所有controller -->
<mvc:mapping path="/**" />
<!-- 不拦截的url -->
<mvc:exclude-mapping path="/user/**"/>
<mvc:exclude-mapping path="/code/**"/>
<bean class="com.stu.controller.InterceptorController"/>
</mvc:interceptor>
</mvc:interceptors>
写一个类实现HandlerInterceptor接口
package com.stu.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.stu.bean.User;
import com.stu.service.OtherService;
public class InterceptorController implements HandlerInterceptor{
@Resource
private OtherService otherService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
//请求的资源
String requestUrl = request.getRequestURI();
//请求的路径
String contextPath = request.getContextPath();
System.out.println("用户请求");
if(contextPath.endsWith("/stu")) {
//拦截成功,处理用户的Session
User user = (User)request.getAttribute("user");
if(user != null) {
if(otherService.checkUsername(user)) {
System.out.println("匹配");
return true;
}else {
System.out.println("不匹配");
}
}else {
response.sendRedirect(contextPath + "/user/showLogin");
System.out.println("session不存在");
return false;
}
}
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
本文介绍了如何在Spring Mvc中配置拦截器,强调了版本要求为3.2或以上以避免<mvc:exclude-mapping>标签的错误。配置包括设置拦截路径和排除路径,并提供了实现HandlerInterceptor接口的示例代码,展示了preHandle方法中进行Session验证的逻辑。
2547

被折叠的 条评论
为什么被折叠?



