Springboot传参

get方式:

   1. 路径变量:

@GetMapping("/{name}")
public String print(@PathVariable("name") String name) {
    return "我是" + name;
}

前台请求http://192.168.18.71:8080/susan

   2. 请求参数 

@GetMapping("/print")
public String print(@RequestParam(name = "name", required = false) String name) {
    return "我是" + name;
}

 前台请求http://192.168.18.71:8080/print?name=dasheng

post方式

    1.带注解  json格式

@PostMapping("/print")
public String print(@RequestBody User user) {
    return "我是" + user.getName() + ",今年" + user.getAge() + "岁了";
}

前台请求

 

    2.不带注解 表单提交

@PostMapping("/print")
public String print(User user) {
    return "我是" + user.getName() + ",今年" + user.getAge() + "岁了";
}

前台请求

 

 

总之一句话,后台用什么方式接,前台就用什么方式传。

至于注解的详细用法,这里不做赘述。我只是想记录一下,前两天我和前端对接口,方法上用了@RequestBody ,他就死活传不过来了,也是尴尬。 那个问题,在header里加上contentType:application/json,有中文把utf-8也加上,参数是json格式的就行了。不再赘述。嘻嘻。

$.ajax({
      url: "http://localhost:8201/search",
      type: "post",
      contentType: "application/json;charset=UTF-8",
      dataType: "json",
      data: JSON.stringify({key: keyword})
    }).success(function (res) {
      console.log(res)
    })

 

 

 

### Spring Boot 中的参数递方法 #### 方法级别参数校验 在Spring Boot中,可以通过方法级别的参数校验实现更灵活的数据验证。这种技术允许开发者在一个方法调用时逐个定义并校验参数,而仅仅依赖于数据输对象(DTO)。这种方法可以应用于任何Spring Bean的方法上,例如Controller或Service层中的方法[^1]。 下面是一个简单的例子展示如何通过方法注入的方式完成参数校验: ```java import org.springframework.stereotype.Service; import javax.validation.constraints.NotNull; @Service public class MyService { public void processData(@NotNull(message = "Input cannot be null") String input) { System.out.println("Processing data: " + input); } } ``` 在这个示例中,`processData`方法接受一个字符串类型的输入参数,并对其施加了一个`@NotNull`约束注解。如果入null,则会抛出异常提示信息:"Input cannot be null"。 #### 使用 @Grab 注解加载第三方库 对于某些特定功能的需求,可能需要引入额外的依赖项。在Spring Boot项目里,可以直接利用Gradle或者Maven管理依赖关系;但如果希望简化配置过程,也可以采用Groovy风格的`@Grab`注解快速导入所需的外部Jar包文件[^2]。过需要注意的是,在实际生产环境中推荐显式声明所有的依赖以保持项目的可维护性和透明度。 以下是使用Thymeleaf模板引擎的一个简单实例: ```groovy @Grab('org.springframework.boot:spring-boot-starter-thymeleaf') class ThymeleafExample {} ``` 此代码片段展示了如何无需修改build.gradle即可动态获取指定版本号范围内的thymeleaf starter组件。 #### 外部化配置支持命令行参数覆盖默认设置 当运行基于Spring Boot构建的应用程序时,通常希望能够根据同环境调整一些基础属性值而必频繁更改源码本身。为此目的设计了一套强大的外部化配置体系结构,它允许多种形式提供配置选项——包括但限于properties/yaml文件、系统属性以及命令行参数等等[^3]。 假设存在两个同优先级顺序的位置存储着相同的键名但具有各自独立含义的内容,默认情况下后者将会替代前者成为最终生效的那个。例如执行如下指令启动服务的同时指定了自定义位置作为补充资源路径之一: ```bash java -jar your-app.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties ``` 这里表明除了常规查找目录外还会依次尝试读取位于类路径下名为"default.properties" 和 "override.properties" 的两份文档内容用于初始化全局上下文中涉及的关键字映射表单。 #### 分组校验机制应对多变业务逻辑需求 考虑到现实世界里的应用场景往往更加错综复杂,单一维度上的规则设定难以适应所有情况的要求。于是乎提出了所谓“分组”的概念来区分对待同一实体的同侧面特性检验标准[^4]。 举个例子来说吧,假设有这样一个注册流程既包含了基本身份认证又涉及到高级权限审核环节的话就可以分别创建相应的接口标记出来以便后续操作的时候能够明确知道当前处于哪一个阶段从而选取合适的策略组合加以处理: ```java // 定义同的校验组 public interface BasicValidationGroup {}; public interface AdvancedValidationGroup {}; // DTO 类型定义 public class UserDto { @NotBlank(groups = {BasicValidationGroup.class}) private String username; @Email(groups = {AdvancedValidationGroup.class}) private String email; } // Controller 层控制流转方向 @PostMapping("/register") public ResponseEntity<?> registerUser( @Validated({BasicValidationGroup.class}) @RequestBody UserDto user){ ... } @PostMapping("/admin/register") public ResponseEntity<?> adminRegisterUser( @Validated({BasicValidationGroup.class, AdvancedValidationGroup.class}) @RequestBody UserDto user){ ... } ``` 上述代码块清晰地展现了怎样借助分组校验的思想去适配多样化的业务场景诉求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值