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
}
相关推荐
豆角焖肉14 分钟前
Maven进阶与搭建私服
java·maven
大不点wow25 分钟前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
止语Lab28 分钟前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活29 分钟前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了30 分钟前
Java中日期和字符串的处理
java·开发语言·日期
程序员天天困34 分钟前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn34 分钟前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull37 分钟前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai38 分钟前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
顺风尿一寸40 分钟前
记一次 Spring AOP 与定时任务引发的死锁排查
java