核心注解

一、@Controller:标记类

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

  2. 核心特点

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

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

代码示例

@Controller
public class PageController {
    @RequestMapping
    public 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 password
            Map<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 user
            Map<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")
    @ResponseBody
    public 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 ;// 返回该集合中的数据
    }
}
posted @ 2026-01-29 22:22  北海道第一原神高手  阅读(0)  评论(0)    收藏  举报