java过滤器和拦截器的区别_spring拦截器和过滤器

java过滤器和拦截器的区别_spring拦截器和过滤器集成拦截器 登录验证为例 添加拦截器 public class LoginInterce implements HandlerInter private Logger log LoggerFactor getLogger getClass Controller 逻辑执行之前 Override public boolean

集成拦截器

登录验证为例

添加拦截器

public class LoginInterceptor implements HandlerInterceptor { 


private Logger log = LoggerFactory.getLogger(getClass());

//Controller逻辑执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

log.info("preHandle....");
Object user = WebUtils.getHttpSession().getAttribute("user");
log.info("user:{}",user);
String uri = request.getRequestURI();
log.info("uri:"+ uri);
if (user == null) {

response.sendRedirect("/");
return false;
} else {

return true;
}
}

//Controller逻辑执行完毕但是视图解析器还未进行解析之前
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

log.info("postHandle....");
}

//Controller逻辑和视图解析器执行完毕
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

log.info("afterCompletion....");
}
}

注册,配置拦截路径和排除登录需访问路径

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {


@Override
public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/", "/login", "/user/login","/user/login",
"/images/**", "/user/getCode", "/js/**", "/page/**", "/layui/**",
"/layui_ext/**", "/login.html", "/webjars/**", "/css/**");
}
}

退出登录清除session

    /** * 跳转到登录 * @return */
@RequestMapping("toLogin")
public String toLogin(){

WebUtils.getHttpSession().removeAttribute("user");
return "/";
}
编程小号
上一篇 2025-02-21 08:40
下一篇 2025-02-14 23:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/126790.html