文章目录
一、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
- 获取 ID 为 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,避免与业务接口冲突。
- 静态资源可直接通过 URL 访问,路径为
三、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 的接口回调机制,用于在请求处理的预处理、后处理、完成后三个阶段进行拦截操作(如登录验证、日志记录)。
- 实现方式:
- 自定义类实现
HandlerInterceptor
接口,重写preHandle
(预处理)、postHandle
(后处理)、afterCompletion
(完成后)方法。 - 通过
WebMvcConfigurer
配置类的addInterceptors
方法注册拦截器,并指定拦截/排除的路径。
- 自定义类实现
- 示例:
// 自定义拦截器 public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { // 预处理逻辑(如验证登录状态) return true; // true 放行,false 拦截 } } // 注册拦截器 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public 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 方法) 的组件,负责解析请求路径并找到对应的处理器。
- 常见实现类:
BeanNameUrlHandlerMapping
:根据 Bean 的名称(以/
开头)映射 URL,如 Bean 名称为/user
,则处理http://localhost:8080/user
请求。RequestMappingHandlerMapping
(主流):解析@RequestMapping
及其派生注解(@GetMapping
、@PostMapping
等),实现 URL 与 Controller 方法的映射,支持复杂的路径匹配和参数绑定。