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

spring boot开发中的资源处理等问题

文章目录

      • 一、RESTful 风格
      • 二、Spring Boot 静态资源处理
      • 三、Spring Boot 首页(欢迎页)
      • 四、@PathVariable 注解
      • 五、拦截器(Interceptor)
      • 六、过滤器(Filter)
      • 七、触发器(Trigger)
      • 八、HandlerMapping 组件

一、RESTful 风格

  • 核心特点:将请求参数嵌入 URL 路径中,通过 HTTP 方法(GET/POST/PUT/DELETE 等)表达操作语义,使接口设计更简洁、规范。
  • 参数传递方式:使用 URL 路径占位符(如 /users/{id})传递参数,而非传统的 ?key=value 形式。
  • 示例
    • 获取 ID 为 1 的用户:GET /users/1(参数 id=1 放在 URL 中)
    • 更新 ID 为 1 的用户:PUT /users/1

二、Spring Boot 静态资源处理

  • 默认存放路径:项目中 src/main/resources/static/ 目录(或 public/resources/ 目录,优先级:resources > static > public)。
  • 访问规则
    • 静态资源可直接通过 URL 访问,路径为 /资源名(无需包含 static 前缀)。例如 static/image/logo.png 可通过 http://localhost:8080/image/logo.png 访问。
    • 静态资源请求(/static/** 路径模式)会被 Spring Boot 内置的资源处理器直接处理,不会经过 Controller 或 HandlerMapping,避免与业务接口冲突。

三、Spring Boot 首页(欢迎页)

  • 默认规则:Spring Boot 会自动识别 src/main/resources/static/src/main/resources/public/ 目录下的 index.html 文件作为首页。
  • 访问方式:直接访问应用根路径(如 http://localhost:8080)即可显示该首页。

四、@PathVariable 注解

  • 作用:用于从 URL 路径中获取参数,配合 RESTful 风格使用。
  • 示例
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {// id 的值从 URL 路径中的 {id} 占位符获取return userService.getUserById(id);
    }
    
  • 注意:若参数名与路径占位符名称不一致,需指定 value,如 @PathVariable("userId") Long id

五、拦截器(Interceptor)

  • 技术本质:基于 Spring MVC 的接口回调机制,用于在请求处理的预处理、后处理、完成后三个阶段进行拦截操作(如登录验证、日志记录)。
  • 实现方式
    1. 自定义类实现 HandlerInterceptor 接口,重写 preHandle(预处理)、postHandle(后处理)、afterCompletion(完成后)方法。
    2. 通过 WebMvcConfigurer 配置类的 addInterceptors 方法注册拦截器,并指定拦截/排除的路径。
  • 示例
    // 自定义拦截器
    public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 预处理逻辑(如验证登录状态)return true; // true 放行,false 拦截}
    }// 注册拦截器
    @Configuration
    public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**") // 拦截所有路径.excludePathPatterns("/login"); // 排除登录路径}
    }
    

六、过滤器(Filter)

  • 技术定位:Java EE 规范中的 Web 三大组件(Servlet、Filter、Listener)之一,基于 Servlet 容器,在请求进入 Servlet 之前或响应返回客户端之前进行过滤。
  • 与拦截器的区别
    维度过滤器(Filter)拦截器(Interceptor)
    技术依赖依赖 Servlet 容器依赖 Spring MVC 框架
    拦截范围所有请求(包括静态资源)仅拦截 Spring MVC 处理的请求(Controller 方法)
    执行时机请求进入 Servlet 之前Controller 方法调用前后
  • 使用场景:字符编码设置、跨域请求处理、敏感词过滤等。

七、触发器(Trigger)

  • 技术定位:数据库层面的机制,当数据库发生指定操作(如 INSERT/UPDATE/DELETE)时,自动触发预设的 SQL 逻辑。
  • 特点
    • 运行在数据库内部,与应用程序解耦。
    • 项目中慎用:迁移数据库时可能因语法差异(如 MySQL 与 Oracle 触发器语法不同)导致兼容性问题,且逻辑隐藏在数据库中,不利于维护。

八、HandlerMapping 组件

  • 作用:Spring MVC 中用于 映射请求 URL 到具体的 Handler(如 Controller 方法) 的组件,负责解析请求路径并找到对应的处理器。
  • 常见实现类
    1. BeanNameUrlHandlerMapping:根据 Bean 的名称(以 / 开头)映射 URL,如 Bean 名称为 /user,则处理 http://localhost:8080/user 请求。
    2. RequestMappingHandlerMapping(主流):解析 @RequestMapping 及其派生注解(@GetMapping@PostMapping 等),实现 URL 与 Controller 方法的映射,支持复杂的路径匹配和参数绑定。
http://www.dtcms.com/a/314792.html

相关文章:

  • RTOS如何保证实时性
  • 深圳南柯电子|电驱动系统EMC测试整改:“诊断-治疗-预防”方案
  • HTML5的新特性
  • 上位机知识篇---令牌
  • 如何选择合适的政务文本检测工具?
  • go 语言常见问题(2)
  • 宝塔面板安装WordPress教程:10分钟一键部署搭建个人博客 (2025)
  • 聊聊web前端的缓存问题
  • 金融专业高分简历撰写指南
  • k8s集群
  • 网络与信息安全有哪些岗位:(5)网络安全工程师
  • SpringCloud (4) 分布式事务
  • Western Blot(蛋白质免疫印迹)--实验操作015
  • 室内液体撒漏泄漏识别分割数据集labelme格式2576张1类别
  • 朴素贝叶斯(Naive Bayes)完整解析:概率论经典算法
  • Scrapy 工作流程深度解析:引擎驱动的完美协作
  • API接口的应用及重要性
  • Nestjs框架: @nestjs/config 配置模块详解与实践
  • 鸿蒙开发-端云一体化--云存储
  • Python-初学openCV——图像预处理(七)——模板匹配、霍夫变换
  • 注解知识学习
  • 腾讯混元重磅开源:四款小尺寸模型全面发布
  • 文件包含篇
  • elementPlus的el-switch在初始化时会调用一次change事件
  • CCLink转ModbusRTU网关控制除湿机配置案例—PLC组态篇
  • AI大模型的基本知识
  • 如何解决GIT合并冲突问题
  • Python----大模型(量化 Quantization)
  • SimpleDateFormat早期Java 日期格式化工具详解
  • 强干扰下车位识别准确率↑28%!陌讯时序建模方案在充电桩占位检测的实战解析