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
}
相关推荐
向前看-1 小时前
验证码机制
前端·后端
xlsw_1 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹2 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫3 小时前
泛型(2)
java
超爱吃士力架3 小时前
邀请逻辑
java·linux·后端
南宫生3 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石3 小时前
12/21java基础
java
李小白663 小时前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp3 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea