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
}
相关推荐
郑祎亦10 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
不是二师兄的八戒10 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
爱编程的小生22 分钟前
Easyexcel(2-文件读取)
java·excel
本当迷ya23 分钟前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
带多刺的玫瑰39 分钟前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导61 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study1 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
Chris _data1 小时前
二叉树oj题解析
java·数据结构
牙牙7051 小时前
Centos7安装Jenkins脚本一键部署
java·servlet·jenkins
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端