最近在做一个养老院的项目,自己做的拦截器,希望能帮助上大家
下面直接把代码粘出来。
首先先新建一个CustomWebMvcConfigurerAdapter 类
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login/**"); //对来自/user/** 这个链接来的请求进行拦截
// super.addInterceptors(registry);
}
}
再写一个LoginInterceptor类,对每次请求的接口进行判断,三次判断
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;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String string = request.getRequestURL().toString();
System.out.println("请求url:"+string);
String uri = request.getRequestURL().toString();
if (uri.contains("login")) {
return true;
}
// a)拦截用户请求,判断用户是否登录
HttpSession session = request.getSession();
Object username = session.getAttribute("username");
if (username != null) {
// b)如果用户已经登录。放行
return true;
}
// c)如果用户未登录,跳转到登录页面。
System.out.println("session用户过期跳转登录页面!");
response.sendRedirect(request.getContextPath() + "/controller/login");
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
//handle执行之后,返回ModelAndView之前。
//System.out.println("Interceptor1 postHandle......handle执行之后,返回ModelAndView之前。");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// 返回ModelAndView之后。
//可以在此处理异常
//System.out.println("Interceptor1 afterCompletion......返回ModelAndView之后, 在此处理异常");
}
希望帮助上大家,第一次发自己写的东西,多多支持。