当前位置: 首页 > wzjs >正文

怎么建设自己淘宝网站首页seo实战密码在线阅读

怎么建设自己淘宝网站首页,seo实战密码在线阅读,南通小企业网站建设,成都电子商务网站目录 一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!二、如何实现拦截器和过滤器?三、拦截器和过滤器的区别四、执行顺序五、真实的应用场景六、总结 🌟如果喜欢作者的讲…

在这里插入图片描述

目录

    • 一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!
    • 二、如何实现拦截器和过滤器?
    • 三、拦截器和过滤器的区别
    • 四、执行顺序
    • 五、真实的应用场景
    • 六、总结

🌟如果喜欢作者的讲解方式,关注作者不迷路,同时也可以看看我的其他文章! 感谢!!!
🌟 从乐高积木到乐队指挥,用最通俗易懂的方式带你玩转 Spring Boot Bean!

就让我用这篇文章来讲解 SpringBoot 的拦截器和过滤器吧,给它安排明白!😎

一、拦截器(Interceptor)和过滤器(Filter):都是“守门员”!

想象一下,你的 SpringBoot 应用就像一个豪华酒店🏨。

  • 过滤器(Filter): 就像酒店大门口的保安👮,负责检查所有进出酒店的人(请求)。它可以决定是否允许客人进入,或者在客人进入前做一些处理,比如检查身份证、测量体温🌡️。
  • 拦截器(Interceptor): 就像酒店内部各个楼层的楼层经理👩‍💼,只负责检查进入特定楼层(Controller)的客人。它可以在客人进入楼层前、进入楼层后、离开楼层后都进行干预,比如登记访客信息、提供楼层指引🗺️。

二、如何实现拦截器和过滤器?

1. 过滤器(Filter):

  • 步骤一: 创建一个类,实现 javax.servlet.Filter 接口。
  • 步骤二: 实现 doFilter() 方法。这个方法就是过滤器的核心逻辑,在这里你可以对请求和响应进行处理。
  • 步骤三: 使用 @WebFilter 注解或者在 WebConfig 类中注册过滤器。
// 方式一:使用 @WebFilter 注解
@WebFilter(urlPatterns = "/*", filterName = "MyFilter") // 拦截所有请求
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("过滤器:请求来了!我要检查一下!🧐");// 可以对 request 和 response 进行处理HttpServletRequest req = (HttpServletRequest) request;String uri = req.getRequestURI();System.out.println("请求的URI:" + uri);// 放行,让请求继续往下走chain.doFilter(request, response);System.out.println("过滤器:请求走了!我要记录一下!📝");}
}// 方式二:在 WebConfig 类中注册
@Configuration
public class WebConfig {@Beanpublic FilterRegistrationBean<MyFilter> myFilterRegistrationBean() {FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>();registration.setFilter(new MyFilter());registration.addUrlPatterns("/*"); // 拦截所有请求registration.setName("MyFilter");registration.setOrder(1); // 设置优先级,数字越小优先级越高return registration;}
}

2. 拦截器(Interceptor):

  • 步骤一: 创建一个类,实现 org.springframework.web.servlet.HandlerInterceptor 接口。
  • 步骤二: 实现 preHandle()postHandle()afterCompletion() 方法。
    • preHandle():在 Controller 处理请求之前调用,可以进行权限验证、参数校验等。如果返回 false,则请求会被拦截,不会继续执行。
    • postHandle():在 Controller 处理请求之后,但在视图渲染之前调用,可以对 ModelAndView 进行修改。
    • afterCompletion():在整个请求处理完毕之后调用,可以进行资源清理、日志记录等。
  • 步骤三: 创建一个配置类,实现 org.springframework.web.servlet.config.annotation.WebMvcConfigurer 接口,并重写 addInterceptors() 方法,将拦截器注册到 Spring 容器中。
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("拦截器:Controller 要处理请求了!我要先检查一下!👮‍♀️");// 可以进行权限验证、参数校验等String token = request.getHeader("token");if (token == null || token.isEmpty()) {System.out.println("拦截器:没有 token,拒绝访问!🚫");response.setStatus(401); // 返回未授权状态码return false; // 拦截请求}return true; // 放行请求}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("拦截器:Controller 处理完请求了!我可以修改 ModelAndView!🎨");// 可以对 ModelAndView 进行修改if (modelAndView != null) {modelAndView.addObject("message", "拦截器添加的额外信息!🎁");}}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("拦截器:请求处理完成了!我可以清理资源、记录日志!🧹");// 可以进行资源清理、日志记录等}
}@Configuration
public class InterceptorConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/api/**") // 拦截 /api/ 下的所有请求.excludePathPatterns("/api/login"); // 排除 /api/login 请求}
}

三、拦截器和过滤器的区别

特性过滤器(Filter)拦截器(Interceptor)
实现方式实现 javax.servlet.Filter 接口实现 org.springframework.web.servlet.HandlerInterceptor 接口
拦截范围拦截所有进出 Servlet 容器的请求拦截特定的 Controller 方法
执行时机在 DispatcherServlet 之前和之后执行在 Controller 方法执行之前、之后和完成之后执行
依赖性不依赖 Spring 容器依赖 Spring 容器,可以访问 Spring 上下文
功能字符编码转换、请求内容过滤、敏感词过滤等权限验证、日志记录、参数校验等
精确度粗粒度,只能拦截 URL细粒度,可以访问 HandlerMethod,获取方法信息

总结:

  • 过滤器: 拦截所有请求,不依赖 Spring,功能比较通用。
  • 拦截器: 拦截特定 Controller 方法,依赖 Spring,功能更精细。

四、执行顺序

  1. 过滤器(Filter):在 DispatcherServlet 之前执行。
  2. 拦截器(Interceptor)
    • preHandle():在 Controller 方法执行之前执行。
    • Controller 方法执行。
    • postHandle():在 Controller 方法执行之后,但在视图渲染之前执行。
    • 视图渲染。
    • afterCompletion():在整个请求处理完毕之后执行。

记住: 多个过滤器和拦截器可以配置执行顺序,通常通过 order 属性或者 @Order 注解来设置,数字越小优先级越高。

五、真实的应用场景

  • 过滤器:
    • 字符编码转换: 统一设置请求和响应的字符编码,避免乱码。
    • XSS 攻击防御: 过滤请求中的恶意脚本,防止 XSS 攻击。
    • 日志记录: 记录所有请求的 URL、IP 地址等信息。
  • 拦截器:
    • 权限验证: 检查用户是否已登录,是否有权限访问特定资源。
    • 参数校验: 校验请求参数的合法性,防止恶意请求。
    • 性能监控: 记录 Controller 方法的执行时间,分析性能瓶颈。
    • 防止重复提交: 避免用户重复提交表单。

六、总结

  • 过滤器: 就像酒店大门口的保安,啥人都拦,主要做一些通用的检查,比如身份证、体温啥的。
  • 拦截器: 就像楼层经理,只管特定楼层的人,可以做更细致的检查,比如登记访客信息、提供楼层指引。
  • 执行顺序: 先保安,再楼层经理。保安先检查,楼层经理在客人进房间前、进房间后、离开房间后都可以管。

如果编写了AOP逻辑,会在拦截器之后执行,相关内容请看:
🔗被重复代码逼疯?AOP来当“舔狗”!日志/事务/权限,随叫随到!

希望这篇文章能让你有趣的理解 SpringBoot 的拦截器和过滤器!🎉🎉🎉

http://www.dtcms.com/wzjs/599895.html

相关文章:

  • 增城网站建设推广网站流量 名词
  • 做实体店打折信息网站wordpress grace6
  • 百度网站建设的一般要素济南做网站的公司有哪些
  • 私人怎么做网站泗水县建设局的网站怎么打开
  • 重庆网站建设是什么wordpress 文章点赞插件
  • 使用python建设一个论坛网站网站设计在线crm系统
  • 杭州论坛网站制作电子商务实网站的建设课件
  • 昆明官渡区网站建设贾汪网架公司
  • 关于网站策划的文章房屋平面设计图
  • 影响网站alexa排名的主要因素有做购物网站收费标准
  • 怎么搭建一个网站教程xx公司网络组建方案毕业设计
  • 四川建设厅网站 蒋建筑八大员证书查询
  • 上海域名网站公司介绍ppt
  • 网站搭建的意义做相框的网站
  • 服装网站设计策划wordpress页面目录下
  • 柳州网站建设22怎样才能申请网站
  • 网站建设的公司上海安徽工程建设信息网实名制查询
  • 手机网站WordPress主题wordpress的菜单和页面
  • 湘潭seo网站优化财务公司经营范围有哪些
  • 湖南建设长沙网站建设价格建筑工程 网络图
  • 织梦如何新建网站微信小程序和网页哪个开发难
  • wordpress 全宽页面网站在线seo
  • 戴尔公司网站建设的特点是什么怎样查网站空间地址
  • 网站开发需要什么专业的人才html5的网站设计与实现是做什么
  • 列出网站开发建设的步骤云南测绘公司最新排名
  • 化工行业网站设计网站做海康直播
  • 做网站都需要考虑哪些做淘宝客网站难吗
  • 凡科 如何建设网站流程做房产网站需要了解什么
  • 做网站多少钱PageAdminwordpress版本控制
  • 网站建设站点地图网址导航可以卸载吗