← [ BACK_TO_NOTES ]

Spring Boot

Spring Boot Servlet Web 入门:starter 与自动配置、MVC 映射、参数绑定、静态资源和拦截器。

#java #concept #growing #dev

Spring Boot

以下 starter 与静态资源配置以 Spring Boot 3.x 的 Servlet Web 栈为范围;理解框架定位与 MVC/WebFlux 区别见 Spring Web 概览。

web入门

  • Spring Boot 3.x 的 spring-boot-starter-web 聚合 Spring MVC、JSON 消息转换及默认嵌入式 Tomcat 等依赖;Boot 自动配置根据类路径、配置及已有 bean 装配默认组件。
  • Spring MVC 属于 Spring Framework;Boot 简化应用装配。默认服务器可替换,starter 名称和依赖应按所选 Boot 主版本核对。

控制器

  • Spring Framework 的 @Controller 标识 MVC 控制器,方法可返回视图,也可配合 @ResponseBody 写响应体。@RestController 相当于 @Controller + @ResponseBody;它描述响应处理,不是限制客户端只能“请求数据”。

Model 数据 View 页面 Controller 控制器

传统视图响应的简化流程:DispatcherServlet 分派请求到 Controller,Controller 调用用例并填充 Model、返回视图名,视图解析与渲染生成 HTTP 响应。Model 是传给视图的数据,不等同于数据库访问层;REST 响应通常直接经消息转换器输出正文。

路由映射

  • @RequestMapping 注解主要负责URL的路由映射。它可以添加在Controller类或具体的方法上。
  • 类级映射提供共享条件,方法级映射进一步限定;路径可组合,具体条件如 consumes/produces 存在方法级覆盖规则。
  • @RequestMapping参数: value:请求路径,支持 URI 模板和路径模式;正则用于 {变量:正则},不是把整个 value 当任意正则 method:HTTP请求方法 consumes:请求的媒体类型(Content-Type),如application/json produces:可产生的响应媒体类型,与客户端 Accept 协商 params,headers:请求的参数及请求头的值

参数传递

  • @RequestParam("name") 绑定查询参数或表单参数;省略名称依赖参数名元数据,明确指定名称可避免编译配置差异。它不是读取任意 JSON 字段。
  • @PathVariable 绑定路径模板中的变量。
  • @RequestBody 通过 HttpMessageConverter 按 Content-Type 等条件读取请求体,如 JSON;不是所有非表单数据都自动支持。表单参数应使用 RequestParam 等绑定方式,输入业务校验需另行配置。

静态资源访问

  • 默认可从 classpath 的 /static、/public、/resources、/META-INF/resources 等位置提供资源;例如 src/main/resources/static/a.css 默认映射为 /a.css。
  • 在 application.properties 中改变 URL 映射及资源位置(这是资源处理配置,不是 Servlet Filter 规则):
spring.mvc.static-path-pattern=/static/**
spring.web.resources.static-locations=classpath:/static/

文件上传

  • 表单enctype属性规定发送到服务器之前应该如何对表单数据继续进行编码。
  • 当表单的enctype=“multipart/form-data”时,可以使用MultipartFile获取上传的文件数据,再通过transferTo 方法将其写入到磁盘中

拦截器

  • Spring MVC 的 HandlerInterceptor 提供 preHandle、postHandle、afterCompletion,作用于相应 HandlerMapping 的请求处理链。
  • preHandle 可中止处理;postHandle 在 handler 成功处理后执行,afterCompletion 用于完成后的处理。不要假定 postHandle 时响应体仍未提交,REST 消息转换可能已写出。

拦截器注册

  • addPathPatterns方法定义拦截的地址
  • excludePathPatterns定义排除某些地址不被拦截
  • 经 WebMvcConfigurer 注册时,不设置 include 模式通常应用于该 MVC 配置覆盖的所有 handler;没有 exclude 只是没有路径排除,不代表覆盖所有网络请求。
  • 拦截器不是 Servlet Filter,也不宜作为完整安全边界;认证授权通常交给 Spring Security 的过滤器链。

RESTful

  • 每一个URI代表一种资源
  • GET 获取表示;POST 按资源语义处理提交(常用于创建);PUT 在目标 URI 创建或替换表示;DELETE 请求移除目标资源关联。PUT/DELETE 的预期效果具有幂等语义,POST 不天然保证幂等。
  • 通过操作资源的表现形式来实现服务端请求操作
  • 资源表示可以是 JSON、HTML 或其他协商的媒体类型。

使用 Swagger / OpenAPI 生成文档

原记录尚未包含所用集成库、版本及配置;保留为待补主题,不把 MVC 注解本身当作已完成的文档生成配置。

参考资料

创建于 2025/1/1 更新于 2026/10/6
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本