SpringBoot2.x | 请求参数POJO传递

本文介绍了在SpringBoot2.x中如何处理后台请求,特别是使用POJO绑定前端表单参数。前端可以采用直接表单POST或Ajax发起请求,而时间参数需从字符串转换为Date类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端发起请求,将表单Post到后台,表单对应的参数名应该为和后台的POJO属性名一致。

会员entity类
package com.bookstore.entity;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Date;

public class Vip {
    private Integer vipId;

    private String vipUsername;

    private String vipPassword;

    private String vipNickname;

    private String vipGender;

    private String vipImg;

    private String vipPhone;

    private String vipEmail;

    private Date vipBirthday;

    private Date vipCreateTime;

    private Boolean vipStatus;
    
    // setter and getter方法省略...
}
前端表单

第一种,直接表单发起请求。

<!-- name和POJO属性要一致 -->
<input type="text" id="L_username" name="vipUsername" />
前端请求

第二种,通过ajax发起请求。

$.ajax({
   type: 'POST',
   url: '/ajax/add/vip',
   async: false,
   dataType: 'json',
   data: {
       // data的属性名要和POJO属性名一致
       vipUsername: data.field.vipUsername,
       vipNickname: data.field.vipNickname,
       vipPassword: data.field.vipPassword,
       vipPhone: data.field.vipPhone,
       vipEmail: data.field.vipEmail,
       vipBirthday: vipBirthday
   }
   }).done(function (res) {
       console.log(res);
   });
});
问题解决

前台时间参数传递到后台需要将字符串转换成Date类型。

var vipBirthday = new Date(
    Date.parse((data.field.vipBirthday).replace(/-g/, "/"))
);
### 如何在 Spring Boot 中通过注解传递参数 在 Spring Boot 中,可以通过多种注解实现控制器方法的参数绑定。对于 HTTP 请求中的不同部分(路径变量、请求体、查询参数等),有不同的注解来处理。 #### 路径变量 (@PathVariable) 当 URL 模板中包含占位符时,可以使用 `@PathVariable` 来获取这些占位符对应的值: ```java @GetMapping("/greeting/{name}") public String greeting(@PathVariable String name) { return "Hello, " + name; } ``` 此代码片段展示了如何接收来自 URL 的名称并返回问候消息[^2]。 #### 查询参数 (@RequestParam) 为了读取 GET 请求后面的查询字符串参数,应该采用 `@RequestParam` 注解: ```java @GetMapping("/search") public String searchUsers(@RequestParam(value="query", required=false, defaultValue="World") String query) { return "Query: " + query; } ``` 这里定义了一个可选的查询参数,默认情况下如果没有提供则设置为 “World”。这有助于防止因缺少必要参数而导致错误的发生[^5]。 #### 表单数据 (@ModelAttribute 和 @RequestBody) 针对 POST 请求提交的数据,有两种主要的方式取决于客户端发送的内容类型: - 如果是表单编码形式,则利用 `@ModelAttribute` 或者直接指定参数名; ```java @PostMapping("/form") public String handleFormSubmission(User user) { // User 是一个 POJO 类 return "User submitted!"; } ``` - 对于 JSON/XML 等非表单格式的数据流,需借助 `@RequestBody` 将其映射成 Java 对象。 ```java @PostMapping("/json") public ResponseEntity<User> createUser(@Valid @RequestBody User user){ userRepository.save(user); return new ResponseEntity<>(user, HttpStatus.CREATED); } ``` 上述例子说明了如何解析不同类型的身体负载,并将其转换为目标对象实例以便进一步操作[^3]。 #### SQL 参数 (@Param) MyBatis 映射器接口内的方法签名里也可以见到 `@Param` 这样的注释,用来给命名参数赋值,在执行数据库查询的时候非常有用: ```java public interface UserRepository extends BaseMapper<User> { /** * 根据用户名查找用户记录. */ List<User> selectByUsername(@Param("username") String username); } ``` 注意:当不适用 `@Param` 注解而尝试访问 `${}` 形式的属性将会引发异常;相反地,`#{}` 总是可以安全使用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值