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

网站源码智慧团建网站登录密码是啥

网站源码,智慧团建网站登录密码是啥,成都网络营销搜索推广优势,最好看的直播免费的Spring Boot拦截器#xff08;Interceptor#xff09;与过滤器#xff08;Filter#xff09;详细教程 目录 概述 什么是拦截器#xff08;Interceptor#xff09;#xff1f;什么是过滤器#xff08;Filter#xff09;#xff1f;两者的核心区别 使用场景 拦截器的典…Spring Boot拦截器Interceptor与过滤器Filter详细教程 目录 概述 什么是拦截器Interceptor什么是过滤器Filter两者的核心区别 使用场景 拦截器的典型应用过滤器的典型应用 实现步骤 拦截器的创建与配置过滤器的创建与配置 代码示例 自定义拦截器自定义过滤器 执行顺序与流程 过滤器、拦截器、Controller的执行顺序可视化流程图 常见问题与解决方案总结 1. 概述 1.1 什么是拦截器Interceptor 拦截器是 Spring MVC 框架的组件基于 AOP面向切面编程 实现。它允许在请求处理的不同阶段如Controller方法执行前后插入自定义逻辑。 1.2 什么是过滤器Filter 过滤器是 Java Servlet规范 定义的组件作用于所有进入容器的请求如Tomcat。它可以在请求到达Servlet前或响应返回客户端前进行预处理和后处理。 1.3 核心区别 特性拦截器Interceptor过滤器Filter所属框架Spring MVCServlet API作用范围仅Spring MVC管理的请求所有请求包括静态资源依赖依赖Spring容器依赖Servlet容器如Tomcat执行时机Controller方法前后Servlet处理前后获取Bean支持通过Spring上下文不支持需通过其他方式注入 2. 使用场景 2.1 拦截器的典型应用 日志记录记录请求参数、响应时间。权限验证检查用户是否登录或拥有权限。事务管理在Controller方法前后开启/提交事务。性能监控统计接口耗时。 2.2 过滤器的典型应用 全局字符编码统一设置请求/响应的编码如UTF-8。跨域处理添加CORS响应头。XSS防御过滤请求参数中的恶意脚本。请求压缩对响应内容进行GZIP压缩。 3. 实现步骤 3.1 创建拦截器 步骤 实现 HandlerInterceptor 接口重写以下方法 preHandle()在Controller方法执行前调用。postHandle()在Controller方法执行后、视图渲染前调用。afterCompletion()在请求完成后调用视图渲染后。 注册拦截器到Spring MVC配置。 代码示例 public class AuthInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 检查用户是否登录if (request.getSession().getAttribute(user) null) {response.sendRedirect(/login);return false; // 中断请求}return true;} }注册拦截器 Configuration public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AuthInterceptor()).addPathPatterns(/**).excludePathPatterns(/login, /static/**);} }注册多个拦截器 Configuration public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 第一个拦截器日志优先级高registry.addInterceptor(new LogInterceptor()).addPathPatterns(/**) // 拦截所有路径.excludePathPatterns(/static/**); // 排除静态资源// 第二个拦截器权限优先级低registry.addInterceptor(new AuthInterceptor()).addPathPatterns(/api/**); // 仅拦截/api路径} } 关键配置选项 配置方法说明addPathPatterns(/api)指定拦截的路径支持Ant风格excludePathPatterns(/login)排除特定路径order(1)显式设置顺序默认按注册顺序 若要手动指定顺序可添加 registry.addInterceptor(new LogInterceptor()).order(1); registry.addInterceptor(new AuthInterceptor()).order(2);3.2 创建过滤器 步骤 实现 javax.servlet.Filter 接口重写 doFilter 方法。注册过滤器到Servlet容器通过注解或配置类。 代码示例 WebFilter(urlPatterns /*) public class LoggingFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println(请求开始: ((HttpServletRequest) request).getRequestURI());chain.doFilter(request, response); // 继续执行后续过滤器或ServletSystem.out.println(请求结束);} }注册过滤器若未使用WebFilter Configuration public class FilterConfig {Beanpublic FilterRegistrationBeanLoggingFilter loggingFilter() {FilterRegistrationBeanLoggingFilter bean new FilterRegistrationBean();bean.setFilter(new LoggingFilter());bean.addUrlPatterns(/*);bean.setOrder(1); // 设置执行顺序return bean;} }注意 确保主类添加 ServletComponentScan 以启用 WebFilter 注解。 4. 执行顺序与流程 4.1 执行顺序 过滤器FilterChain → 2. 拦截器preHandle → 3. Controller方法 → 4. 拦截器postHandle → 5. 视图渲染 → 6. 拦截器afterCompletion → 7. 过滤器后续处理 4.2 流程图 客户端 → Filter.doFilter() → Interceptor.preHandle()→ Controller → Interceptor.postHandle()→ 视图渲染 → Interceptor.afterCompletion()→ Filter.doFilter()后续处理 → 客户端5. 常见问题与解决方案 Q1如何控制多个拦截器/过滤器的执行顺序 拦截器通过 registry.addInterceptor() 的顺序决定。过滤器通过 FilterRegistrationBean.setOrder() 设置优先级值越小越先执行。 Q2拦截器中如何获取Spring管理的Bean 直接从Spring容器注入 public class AuthInterceptor implements HandlerInterceptor {Autowiredprivate UserService userService; // 直接注入 }Q3过滤器中如何修改请求参数 通过自定义 HttpServletRequestWrapper public class ModifyRequestWrapper extends HttpServletRequestWrapper {// 重写getParameter等方法以修改参数 }// 在Filter中替换Request对象 chain.doFilter(new ModifyRequestWrapper(request), response);Q4拦截器和过滤器执行时出现异常如何处理 拦截器在 afterCompletion 中处理异常。过滤器使用 try-catch 包裹 chain.doFilter()。 Q5如何让某个拦截器全局生效 使用 addPathPatterns(/**) registry.addInterceptor(new LogInterceptor()).addPathPatterns(/**);Q6如何跳过特定拦截器的执行 在 preHandle 中返回 false Override public boolean preHandle(...) {if (跳过条件) {return false; // 后续拦截器和Controller不会执行}return true; }Q7拦截器之间如何共享数据 通过 request.setAttribute 传递 // 在第一个拦截器中存储数据 request.setAttribute(key, value);// 在后续拦截器中获取 String value (String) request.getAttribute(key);6. 总结 选择拦截器还是过滤器 需要访问Spring上下文或Controller信息 → 拦截器。需处理所有请求包括静态资源 → 过滤器。 最佳实践 优先使用拦截器处理业务相关逻辑。使用过滤器处理底层Servlet容器的任务如编码、压缩。
http://www.hkea.cn/news/14451892/

相关文章:

  • 做卖东西的网站多少钱做网站销售电销好做吗
  • 视觉做的比较好的国外网站壹淘购返利网
  • 东莞企业建站程序网站倒计时怎么做
  • 网站快速排名优化高级网络技术工程师
  • 网站开发拓扑图ppt模板免费下载 素材中国风
  • 天河区建设水务局网站wordpress动漫整站
  • 顺德网站优化公司做兼职的网站有哪些工作内容
  • 用自己的名字做网站域名免费家装设计效果图
  • 手机 pc网站开发价格兰州seo
  • 建设银行论坛网站企业网站的设计与实现
  • 免费做网站怎么做网站ppt制作模板免费下载
  • 德阳网站建设优化网站推广方案整理
  • 淘宝的好券网站怎么做马鞍山网站建设推广
  • 网站建设管理自查报告淘宝优惠网站怎么做
  • 新乡做网站哪家好怎么看网站是什么语言做的后台
  • 民宿设计网站大全厦门网站建站
  • 深圳做网站哪家好wordpress自带重定向
  • 工程建设科学技术奖申报网站电商网课
  • wordpress文章商品导购网站seo关键词排名查询
  • 贸易公司网站建设随意设计一个网站
  • 制作网站基本步骤用淘宝做公司网站
  • 实现网站计划书rails开发的网站开发
  • 深圳做企业网站个人网站模板html免费
  • 企业为什么要做手机网站个人社保缴费app下载
  • 怎么介绍自己做的电影网站网站建设必须要服务器吗
  • 广西城乡建设名网站代理网络游戏需要什么手续
  • 怎么做视频解析的网站html基础菜鸟教程
  • 传统网站与营销型网站做设计应该看哪些网站
  • 建建设网站的网站开发哪家公司口碑好
  • 基金管理公司司网站建设要求免费网站后台管理系统