springboot 控制器

springboot 控制器

文章目录

1.Controller和RestController

Controller:数据和页面

RestController:数据

所以我们的controller一般在springmvc中使用,返回页面,但是现在的项目基本上都是前后端分离项目,可以多使用RestController

也就是说,RequestMapping是一个标准的写法,可以替换GetMapping等,如以下代码

cpp 复制代码
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    //标准写法
    @RequestMapping(value = "/bz",method = RequestMethod.GET)
    public String bz(){
        return "bz!!";
    }
    //任何一种访问方式都行
    @RequestMapping("/any")
    public String any(){
        return "any!!";
    }
    //get访问方式
    @GetMapping("/hello")
    public String  hello(){
        return "hello啊书法大赛 world!";
    }
}

也就是说,以下两个方式是等同的,post、delete、update等类推


2.参数传递

@RequestParam:把传送参数绑定到方法上

1.当传送参数名称和方法一样时,可以省略
java 复制代码
 @GetMapping("/hello")
    public String  hello(String nikename){
        return nikename+"你好";
    }
反之不可以
java 复制代码
  @GetMapping("/hello")
    public String  hello(@RequestParam(value = "nikename") String name){
        return name+"你好";
    }
post方法测试参数传递
java 复制代码
//Post测试参数传递
    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public String test(String name,String password){
        return name + password;
    }    

这个时候我们不能单独的在浏览器测试了,需要借助postman或者是其他软件模拟浏览器发送请求,因为在输入栏我们无法传递post请求。

我这里借助idea自带的http文件测试接口

java 复制代码
###
POST http://localhost:8080/test
Content-Type: application/x-www-form-urlencoded

name=John+Doe&password=30

<> 2024-09-23T090528.200.txt

对应的post接口

当我们使用这样的方式去传递类数据时,也是直接按照类里的各个属性,传送参数要和类里的各个属性名相同,这样代码会自动帮我们匹配,例:

java 复制代码
 //Post测试参数(使用json发送多个参数,或者类参数)
    @RequestMapping(value = "/test1",method = RequestMethod.POST)
    public User test1(User user){
        System.out.println(user.getName());
        return user;
    }

对应的测试接口写法

java 复制代码
POST http://localhost:8080/test1
Content-Type: application/x-www-form-urlencoded

id=1&name=king&phone=1841891561

@PathVaraible

@PathVariable 是 Spring MVC 中用于处理 RESTful Web 服务时的一个注解,它允许你从 URL 中提取变量值,并将这些值绑定到控制器处理方法的参数上。这个注解通常与 @RequestMapping 或其派生注解(如 @GetMapping、@PostMapping 等)一起使用,来指定哪些请求路径和方法应该被映射。
java 复制代码
@RestController  
@RequestMapping("/users")  
public class UserController {  
  
    @GetMapping("/{userId}")  
    public User getUserById(@PathVariable("userId") Long userId) {  
        // 这里根据userId获取用户信息,并返回User对象  
        // 示例代码,实际情况需要替换为真实的用户数据获取逻辑  
        return new User(userId, "John Doe");  
    }  
}

@RequestBody

当我们需要接受一个json的数据时,可以使用这样一个注解

例:

接口写法:
java 复制代码
  //Post测试参数(使用json发送多个参数,或者类参数)
    @RequestMapping(value = "/test2",method = RequestMethod.POST)
    public User test2(@RequestBody User user){
        System.out.println(user);
        return user;
    }
}
测试写法:
java 复制代码
POST http://localhost:8080/test2
Content-Type:application/json

{
  "id": 1,
  "name": "king",
  "phone": 18474314
}
相关推荐
阿伟*rui6 分钟前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
码农小旋风4 小时前
详解K8S--声明式API
后端
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7895 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot