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

随州网站建设哪家优惠个人养老金保险查询

随州网站建设哪家优惠,个人养老金保险查询,上海公司名称查询网,ai网站设计文章目录 SpringBoot 过滤器 vs 拦截器过滤器 (Filter)定义特点使用场景实现步骤创建过滤器类注册过滤器#xff08;可选#xff0c;如果不使用 WebFilter 注解#xff09; 拦截器 (Interceptor)定义特点使用场景实现步骤创建拦截器类注册拦截器 过滤器与拦截器的比较实际项… 文章目录 SpringBoot 过滤器 vs 拦截器过滤器 (Filter)定义特点使用场景实现步骤创建过滤器类注册过滤器可选如果不使用 WebFilter 注解 拦截器 (Interceptor)定义特点使用场景实现步骤创建拦截器类注册拦截器 过滤器与拦截器的比较实际项目中的选择结论 SpringBoot 过滤器 vs 拦截器 在构建Spring Boot应用程序时开发者经常需要在过滤器Filters与拦截器Interceptors之间做出选择尽管两者都能在请求-响应周期中发挥作用但它们各自有着特定的设计目的和应用场景。下面我们将探讨过滤器与拦截器之间的主要区别并给出在不同情况下如何合理选用的指导原则。 过滤器 (Filter) 定义 过滤器是Java Servlet API的一部分用于在请求达到目标资源如Servlet或JSP页面之前或在响应从目标资源返回到客户端之后进行预处理或后处理。它们可以被看作是请求和响应的“管道”允许开发人员执行一些跨切割关注点的操作如编码转换、添加响应头、身份验证、日志记录等。 特点 生命周期管理过滤器具有初始化init过滤doFilter和销毁destroy的方法这些方法分别在过滤器创建、每次请求和服务器关闭时调用。执行顺序过滤器的执行顺序是由部署描述符web.xml或等效的Java配置类中定义的过滤器映射所决定的。跨容器过滤器可以在任何实现了Servlet规范的容器中工作这意味着它们可以用于任何基于Servlet的Web应用程序而不仅仅是Spring Boot应用。请求/响应处理过滤器可以在请求到达目标资源前和响应离开容器后执行操作这使得它们非常适合处理一些需要在所有请求中都生效的任务。 使用场景 安全性实现身份验证和授权逻辑确保只有经过验证的用户才能访问某些资源。编码转换在请求和响应中进行字符集转换以支持国际化。日志记录记录每个请求的信息用于调试和监控应用程序行为。性能监控测量请求处理时间以便进行性能分析和优化。资源限制限制请求频率防止资源滥用例如通过实现速率限制功能。响应头添加自动添加HTTP响应头如CORS支持或安全相关的头部信息。 实现步骤 在Spring Boot项目中过滤器可以通过实现javax.servlet.Filter接口或使用Spring的org.springframework.web.filter.OncePerRequestFilter来创建然后在WebSecurityConfigurerAdapter中配置或者直接在SpringBootServletInitializer中注册以确保它们在应用程序启动时正确加载和初始化。 创建过滤器类 实现 javax.servlet.Filter 接口。 import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter(urlPatterns /*) public class MyFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化代码可选实现System.out.println(Filter initialized);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 过滤器逻辑在请求处理前执行System.out.println(Request received at filter);// 继续调用过滤器链传递请求和响应chain.doFilter(request, response);// 过滤器逻辑在响应处理后执行System.out.println(Response leaving filter);}Overridepublic void destroy() {// 销毁代码可选实现System.out.println(Filter destroyed);} }注册过滤器可选如果不使用 WebFilter 注解 import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FilterConfig {Beanpublic FilterRegistrationBeanMyFilter loggingFilter(){FilterRegistrationBeanMyFilter registrationBean new FilterRegistrationBean();// 注册自定义过滤器实例registrationBean.setFilter(new MyFilter());// 指定过滤器应用的 URL 模式registrationBean.addUrlPatterns(/*);// 设置过滤器优先级值越低优先级越高registrationBean.setOrder(1);return registrationBean;} }拦截器 (Interceptor) 定义 拦截器是AOP面向切面编程概念在Web开发中的具体应用主要用于在不修改原始代码的情况下增强程序的功能。在Spring Boot框架中拦截器被广泛应用于处理请求的特定阶段如在请求到达控制器之前或之后执行某些操作。它提供了一种机制可以在请求处理的不同阶段执行自定义的代码逻辑。 特点 生命周期钩子拦截器提供了多个钩子方法如preHandle()、postHandle()和afterCompletion()分别在请求处理的开始、结束和完成后调用。动态性可以通过配置来决定哪些请求会被拦截器处理而无需修改具体的控制器代码。非侵入性拦截器的设计使得业务逻辑与横切关注点分离使得代码更加模块化和可维护。可插拔性可以根据需要轻松地添加、移除或更改拦截器而不会影响到现有的业务逻辑。 使用场景 权限认证与授权在请求到达控制器之前检查用户的身份和权限以确定是否允许访问相应的资源。日志记录记录请求和响应的详细信息有助于调试和性能分析。数据预处理在请求数据到达控制器前进行预处理如数据转换、校验等。响应修饰在响应发送给客户端前可以对响应体进行修改或补充如添加额外的响应头。性能监控测量控制器方法的执行时间监控应用性能。事务管理在业务逻辑方法执行前后进行事务管理确保数据的一致性和安全性。 实现步骤 在Spring Boot中拦截器的实现和注册相对简单。开发者可以创建一个实现了HandlerInterceptor接口的类并在配置类中使用Configuration和WebMvcConfigurer接口来注册拦截器。这样拦截器就能按照定义的规则自动生效无需手动在每个控制器上添加注解或配置。这种机制使得Spring Boot应用程序能够高效地处理各种请求并能轻松地扩展其功能而不会破坏原有的代码结构。 创建拦截器类 实现 HandlerInterceptor 接口。 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 请求处理前逻辑System.out.println(Request intercepted at preHandle);// 返回 true 继续请求返回 false 中断请求return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// 请求处理后逻辑System.out.println(Request intercepted at postHandle);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 请求处理完成后的逻辑System.out.println(Request intercepted at afterCompletion);} }注册拦截器 import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class InterceptorConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册自定义拦截器实例并指定拦截的路径模式registry.addInterceptor(new MyInterceptor()).addPathPatterns(/**).excludePathPatterns(/login, /register); // 可以排除某些路径不被拦截} }过滤器与拦截器的比较 特性过滤器 (Filter)拦截器 (Interceptor)所属规范Servlet 规范Spring MVC 框架作用范围整个应用程序的所有请求仅限于 Spring MVC 的控制器请求修改请求响应可以直接修改请求和响应通常不直接修改请求和响应配置方式通过 WebFilter 注解或 FilterRegistrationBean通过实现 HandlerInterceptor 并注册典型应用场景认证、日志、压缩响应日志、权限校验、视图处理 在实际项目中选择使用过滤器Filter还是拦截器Interceptor主要取决于你的具体需求和它们各自的特点。以下是一些指导原则帮助你做出明智的选择 实际项目中的选择 过滤器Filter 何时使用 当你需要在所有请求的入口处执行代码而不论请求最终会到达哪个具体的Spring组件时。当你关注的是跨多个应用程序的通用功能如安全性如CSRF保护、编码转换、性能监控、添加响应头等。当你想要在请求到达Spring MVC DispatcherServlet之前或在响应被发送给客户端之后执行代码。 优势 过滤器在Servlet容器级别运行这意味着它们适用于所有基于Servlet的Web应用而不局限于Spring MVC或Spring Boot。过滤器的执行顺序在web.xml或等效的Java配置中明确定义这提供了清晰的控制流。 拦截器Interceptor 何时使用 当你需要在Spring MVC的请求处理链中添加逻辑尤其是在请求到达控制器方法前后或在视图渲染前后。当你关心的是与Spring MVC紧密相关的功能如用户认证、权限检查、日志记录、数据预处理等。当你需要访问Spring MVC的上下文如模型数据、视图、控制器等。 优势 拦截器是Spring框架的一部分可以充分利用Spring的特性如依赖注入、事务管理等。拦截器的配置更加灵活你可以选择只对特定的请求路径应用拦截器。 实际考虑因素 性能影响考虑过滤器和拦截器对系统性能的影响。通常过滤器由于更早地介入请求流程可能对性能有更大影响。代码耦合度拦截器更倾向于业务逻辑的紧密集成而过滤器则更偏向于独立于具体业务逻辑的跨切关注点。维护成本评估长期维护成本包括代码的可读性、可测试性和可扩展性。 结论 在SpringBoot应用中过滤器和拦截器都扮演着重要角色选择使用哪一种应基于项目需求和它们各自的特点进行权衡。如果需求指向处理所有请求的低层次功能如编码转换或安全检查过滤器可能是更优的选择而如果功能更偏向于Spring MVC的高层次操作如权限控制或数据预处理拦截器则更为适合。在实际项目中我们可能会发现同时利用过滤器和拦截器的情况以便全面覆盖应用程序的不同方面。记住没有一成不变的规则最重要的是根据项目的具体需求和上下文来灵活决定使用哪种机制以达到最佳的效果。
http://www.w-s-a.com/news/426029/

相关文章:

  • 短网站生成查询网站所有关键词排名
  • 阿里云购买网站登录技术服务外包公司
  • 淘宝单页面网站手机制作游戏的软件
  • 汉中市网站建设wordpress编辑器好麻烦
  • 织梦做的网站快照被攻击在线看crm系统
  • 青岛物流公司网站建设网站建设提议
  • 企业网站建设高端品牌宿州注册公司多少钱
  • 个人微信公众号怎么做微网站吗湛江网站制作方案
  • 学校网站改版南京展厅设计装修
  • 手机网站有免费做的吗建设银行网站不能登录
  • 树莓派做影视网站网站建设企业 熊账号
  • 网站iis7.5配置免费网站建设模板下载
  • 生物公司网站建设方案wordpress自定义字段调用
  • 静态网站公用头部如何调用标题wordpress自动采集翻译插件怎么用
  • 网站做单链 好不好网站营销不同阶段的网站分析目标
  • 网线制作颜色顺序兰州网站推广优化
  • 北京沙河教做网站的企业融资以什么为基础
  • 给网站添加百度地图绵阳做绵阳做网站网站
  • 用电脑做服务器制作网站东莞营销网站建设
  • 网站需要怎么做wordpress 重装
  • 做电影网站赚钱的方法世界500强企业排名2023
  • 领卷网站怎么做的西宁设计网站建设
  • 东莞网站建设价位软件开发税率是13%还是6
  • 企业网站建设一条龙如何在网上推广自己
  • 成品网站制作公司企梦网站建设
  • 网站开发微信授权登录ftp 如何 更新 wordpress
  • icp备案和网站不符查询公司的网站备案
  • 万江营销型网站建设泰安网站建设制作电话号码
  • 做网站是用ps还是ai服饰东莞网站建设
  • 只做一页的网站多少钱网站开发就业趋势