189 8069 5689

springboot拦截器与servlet的过滤器-创新互联

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
br/>@Override

10多年建站经验, 做网站、成都网站制作客户的见证与正确选择。成都创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
}
@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_id=" + userId + ",session_id=" + sessionId + ",device_id=" + deviceId);
    UserSessionInfo info = new UserSessionInfo(userId, sessionId, deviceId);
    SessionValidateResultEnum resultEnum = UserSessionUtils.validateSession(MallConfig.getRunMode(), info);

    return true;
}

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:springboot拦截器与servlet的过滤器-创新互联
文章位置:http://jkwzsj.com/article/icpee.html

其他资讯