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

核心注解

一、@Controller:标记类

  1. 核心作用:标记一个类为 SpringMVC 控制器,接受客户端请求,调用业务逻辑,返回响应数据

  2. 核心特点

  3. 是组件注解,Spring 会自动扫描并实例化该类

  4. 默认行为:方法中返回的字符串会被当做逻辑地址,Spring 会去响应的目录下找到对应的 .html 文件渲染

代码示例

@Controller
public class PageController {@RequestMappingpublic String page2 (Map<String, Object> map) {map.put("name", "张三");return "page2";}
}

二、@RequestMapping

  1. 核心作用:建立 URL 请求路径与类/方法的映射关系,同时可指定请求方法、参数、请求头等过滤条件

  2. 核心属性

  3. value/path:映射的 URL 路径

  4. method:指定请求的方法(GET/POST/PUT/DELETE),是个集合可以存在多个请求方式

  5. params(拓展):请求必须包含的参数

  6. headers(拓展):必须包含的头信息

代码示例

@Controller
@RequestMapping("/page") // 类级父路径:/user
public class PageController {//// 方法级子路径:/page2 请求方式:GET,POST@RequestMapping(value="/page2", method={RequestMethod.GET,RequestMethod.POST})public String page2 (Map<String, Object> map) {map.put("name", "张三");return "page2";}
}
  1. 同时每个请求方式可以单独取出使用

@GetMapping@PostMapping @PutMapping @DeleteMapping

三、RequestParam

  1. 核心作用:从请求的查询参数(URL?username=xxx)或表单参数中获取值,绑定到方法参数上

  2. 核心参数(扩展)

属性 作用 默认值
value/name 前端传递的参数名(与请求参数名一致) 方法参数名(若参数名与请求名一致可省略)
required 参数是否必传 true
defaultValue 参数为 null 或没有传递时的默认值 该属性指定
  1. 适用场景

  2. GET :通过 URL 传递参数

  3. POST:接收简单的表单参数(用户名、密码、页数)

  4. 支持简单类型(String/Integer/Long/Boolean 等),不支持复杂对象

  5. 代码示例

@Controller
public class PageController {@RequestMapping("/page2")public String page2 (//前端传递的参数名必须为 username11@RequestParam("username11") String username, String passwordMap<String, Object> map ) {map.put("username", username);map.put("password", password);return "page2";}
}

四、@RequestBody

  1. 核心作用:读取请求体(Request Body)中的数据,通常是 JSON/XML,自动转换为 Java 对象

  2. 核心特点:

  3. 仅用于带请求体的请求:POST/PUT/PATCH 等,GET 请求绝对禁止使用

  4. 一个方法中只能有一个 @RequestBody 参数(因为请求体只有一个)

  5. 支持复杂类型:实体类对象、集合、嵌套对象

  6. 适用场景

  7. 前后端分离:前端传 JSON 对象

  8. POST 提交复杂数据

  9. 能够传输敏感,大量数据

  10. 代码示例

//用户实体类
@Data
public class User {private String username;private String password;
}
@Controller
public class PageController {@RequestMapping("/page2")public String page2 (//POST请求,前端传入 {"username":"111","password":"123"}将对应的信息传给//对应的 Java 实体类中@RequestBody User userMap<String, Object> map ) {map.put("username", user.getUsername());map.put("password", user.getPassword());return "page2";}
}
  1. 注意:@RequestBody 可与 @RequestParam 共存:URL 中传递简单不敏感的参数,请求体传复杂对象

五、@ResponseBody

  1. 核心作用:将方法的返回值作为响应体返回,不再对逻辑地址进行处理解析

  2. 核心特点:

  3. 加在方法上:该方法的返回值直接响应

  4. 加载类上:该类的所有方法都直接返回响应体

  5. 适用场景:

  6. 返回 JSON 数据

  7. 返回字符串/文件流

  8. 不渲染页面的纯 API 接口

  9. 代码示例

@Controller
public class PageController {@RequestMapping("/page2")@ResponseBodypublic Map<String, String> page2 (//POST请求,前端传入 {"username":"111","password":"123"}将对应的信息传给//对应的 Java 实体类中@RequestBody User user) {Map<String, String> dataList = new ConcurrentHashMap();dataList .put("username", user.getUsername());dataList .put("password", user.getPassword());//return "page2"; //直接返回 page2 字符串,不渲染页面return dataList ;// 返回该集合中的数据}
}
http://www.jsqmd.com/news/318861/

相关文章:

  • Rocky Linux 9 双网卡 bond0 绑定 - 实践
  • 用Python批量处理Excel和CSV文件
  • 自定义字面量高级用法
  • 用Pygame开发你的第一个小游戏
  • 零成本抽象在C++中的应用
  • C++中的组合模式
  • W3C XML 活动
  • C++中的代理模式实现
  • 同源策略 ≠ 万能盾牌:为什么你的后端仍需防范“盲打“攻击?
  • 【AI】在RK3576上,使用RKNN实现MeloTTS(文本转语音)
  • C++与Python混合编程实战
  • 高性能序列化库
  • 8个常见错误及避免方法,优化YashanDB数据库使用
  • C++中的代理模式实战
  • 《Ionic Tab(选项卡)详解与使用指南》
  • 调试技巧与核心转储分析
  • 高性能计算缓存优化
  • 基于Springboot图书借阅管理系统【附源码+文档】
  • 星图平台快速搭建 Clawdbot:私有化本地 Qwen3-VL:30B 并接入飞书平台(下篇)
  • 基于Springboot+HTML5的图书管理系统【附源码+文档】
  • R CSV 文件处理指南
  • 8个策略打造高效YashanDB数据库运维团队
  • 模板编译期条件分支
  • WPF MVVM模式下绑定两个ViewModel导致View不触发更新
  • 高校院所科技成果转化的生态协同之道,数智平台引领产业与学术双赢
  • 【委托监控】【成交监控】
  • C++中的事件驱动编程
  • 晶圆级封装生产线封装装置多轴运动控制系统研究
  • 行为型模式:状态模式——嵌入式状态管理的优雅解决方案
  • 生态协同机制赋能高校成果转化,实现学术产业双赢