【java】后端接受前端数据的常用注解

一、通过HttpServletRequest接收

像jwt中的token可以采用这种方式获取
在这里插入图片描述

二、@RequestParam注解

经常用到的注解, 将指定的请求参数赋值给方法中的形参,支持get/post请求,属性:
(1)value :绑定请求的参数名,默认绑定为同名的形参;
(2)required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错;
(3)defaultValue:默认值,表示如果请求中没有接收到值时的默认值。
在这里插入图片描述

三、@PathVariable注解

接收请求路径中占位符的值,支持get/post请求,属性:
(1)value:String类型,绑定请求的参数名,用大括号的参数默认绑定为同名的形参。
在这里插入图片描述

四、@RequestBody注解

接收前端传递的Json对象的字符串,只能是 Post请求。
在这里插入图片描述

@RequestParam和@RequestBody区别
  • (1)Content-Type(请求媒体类型)
  • @RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded
    编码的内容,Content-Type默认为该属性。
  • application/json时候,json字符串部分不可用,url中的?后面添加参数即可用,form-data、x-www-form-urlencoded时候可用,但是要将Headers里的Content-Type删掉
  • 注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type:application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
  • application/json时候可用
    form-data、x-www-form-urlencoded时候不可用
  • (2)get/post/delete/put请求类型
  • @RequestParam都可以
  • GET请求中,因为没有HttpEntity,所以GET请求中不可以使用@RequestBody
  • POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用 HandlerAdapter配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
  • (3)使用规范
  • 可以使用多个@RequestParam获取数据,但@RequestBody不可以
前端传数组或list 后端接受方法

注解list前加上注解@RequestBody,ajax中的contentType 设置成’application/json’。

### Java 后端开发常用注解及其用途 #### 一、Spring框架中的注解Java后端开发中,尤其是基于Spring框架的应用程序里,有许多用于简化配置和增强功能的注解。 - **@Autowired** 这个注解用来自动装配依赖对象。可以放在字段上也可以放在构造函数或setter方法之上。它使得开发者不需要手动编写大量的get/set代码来注入bean实例[^1]。 - **@Controller/@RestController** `@Controller`通常应用于控制器层组件类上,表示该类是一个MVC架构下的控制层实现;而`@RestController`则是组合了@Controller和@ResponseBody两个注解的功能,可以直接返回JSON/XML等格式的数据前端调用者。 - **@Service** 标识业务逻辑层的服务组件,在这里定义具体的业务操作流程和服务接口实现。 - **@Repository** 数据访问层使用的注解,标记持久化相关的DAO(Data Access Object)类。 - **@ComponentScan** 配置扫描路径以发现并注册带有@Component等相关注解声明的Bean到IoC容器内。 - **@RequestMapping** 映射HTTP请求至处理器的方法上,支持GET/POST等多种方式以及URL模板匹配等功能。 - **@GetMapping / @PostMapping** 更加具体化的版本映射规则,分别对应于处理GET和POST类型的HTTP请求。 ```java @RestController @RequestMapping("/api/users") public class UserController { private final UserService userService; @Autowired public UserController(UserService userService){ this.userService = userService; } @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id){ User user = userService.findById(id); return ResponseEntity.ok(user); } } ``` #### 二、JPA/Hibernate相关注解 当涉及到数据库交互时,JPA(Hibernate作为其实现之一)提供了丰富的元数据标注选项: - **@Entity** 定义实体类与表之间的关系,表明这是一个被管理的对象。 - **@Table(name="...")** 如果实体对应的表格名称不是默认情况下由@Entity所指定的名字,则可以通过@Table进一步自定义。 - **@Id** 表明这是主键属性。 - **@GeneratedValue(strategy=...) 主键生成策略设置,比如IDENTITY, AUTO等等。 - **@Column(nullable=false,...) 描述列特性,如是否允许为空(null),长度限制等。 - **@OneToMany,@ManyToOne,** etc. 关系型映射注解,用于表达一对多或多对一的关系模型。 ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, length = 50) private String name; // getters and setters... } ``` #### 三、其他重要注解 除了上述提到的内容外还有一些通用性的注解也十分有用: - **@Override** 当子类重写父类的方法时使用此注解,有助于编译器检查错误,并提高可读性和维护性。 - **@Deprecated** 提醒程序员某个API已经被弃用了,建议寻找替代方案。 - **@SuppressWarnings("unchecked")** 抑制特定警告信息,常用于泛型编程场景下避免不必要的告警提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值