springboot 拦截器与servlet的过滤器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了springboot 拦截器与servlet的过滤器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2422字,纯文字阅读大概需要4分钟。
内容图文
![springboot 拦截器与servlet的过滤器](/upload/InfoBanner/zyjiaocheng/1312/91fec88b3bad4b5690f5c74d9998b1a3.jpg)
springboot 是spring框架的二次升华,简化了配置,提高了开发效率。拦截器是spring 提供的基于AOP思想的实现。过滤器filter是servlet的API,比较依赖servlet,他们有不同也有一些相似的地方。
1Filter基于servlet ,主要用于servlet存在的环境。拦截器用于servlet,也可以用于其他环境中。
2Filter是servlet规范来提供支持,拦截器是spring框架来提供支持。
3Filter的使用主要在servlet的前后,拦截器可以深入到每个角落。
时使用拦截器?何时使用过滤器?
1如果是非spring项目,那么不能拦截器,只能用过滤器。
2 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
下面是springboot里面实现filter的例子
// 注入spring容器
@Component
// 定义filterName 和过滤的url
@WebFilter(filterName = "my2Filter" ,urlPatterns = "/*")
public class My2Filter implements Filter {@Override
' title='br/>@Override
' ref='nofollow'>br/>@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("filter2");
}
@Override
public void destroy() {
}
}
接下来实现一个springboot里面的拦截器的例子。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new GlobalInterceptor()).addPathPatterns("/**");
}
}
import cn.vcinema.tool.security.session.SessionValidateResultEnum;
import cn.vcinema.tool.security.session.UserSessionInfo;
import cn.vcinema.tool.security.session.UserSessionUtils;
import com.pumpkin.conf.MallConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GlobalInterceptor implements HandlerInterceptor {
private final static Logger LOGGER = LoggerFactory.getLogger(GlobalInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String userId = request.getHeader("user_id");
String sessionId = request.getHeader("session_id");
String deviceId = request.getHeader("device_id");
LOGGER.info("headers:user_,session_,device_id=" + deviceId);
UserSessionInfo info = new UserSessionInfo(userId, sessionId, deviceId);
SessionValidateResultEnum resultEnum = UserSessionUtils.validateSession(MallConfig.getRunMode(), info);
return true;
}
}
原文:https://blog.51cto.com/chenhva/2397931
内容总结
以上是互联网集市为您收集整理的springboot 拦截器与servlet的过滤器全部内容,希望文章能够帮你解决springboot 拦截器与servlet的过滤器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。