JavaWeb常见注解

1.@Controller

在 JavaWeb 开发中,@Controller是 Spring 框架中的一个注解,主要用于定义控制器类(Controller),是 Spring MVC 模式的核心组件之一。它表示该类是一个 Spring MVC 控制器,用来处理 HTTP 请求并返回相应的视图或数据。

@Controller 的典型用法:

  • @Controller:将 UserController 类标记为控制器,Spring 会自动扫描该类并将其作为处理 HTTP 请求的组件
  • @RequestMapping("/users"):设置基础路径 /users,该路径会应用到类中的所有方法
  • @GetMapping("/list"):表示处理 GET 请求,路径为 /users/list,并返回一个名为 userList 的视图
  • @GetMapping("/{id}"):通过路径变量({id})接收动态路径部分并返回视图
  • Model:用于在控制器方法中传递数据到视图。model.addAttribute("users", users)users 数据传递到视图中 
@Controller
@RequestMapping("/users")
public class UserController {// 假设我们有一个 User 类public static class User {private String name;private int age;// getters and setters}// 显示用户列表页面@GetMapping("/list")public String showUsers(Model model) {List<User> users = new ArrayList<>();users.add(new User("Alice", 30));users.add(new User("Bob", 25));model.addAttribute("users", users); // 将数据传递给视图return "userList"; // 返回视图名称}// 显示用户详情页面@GetMapping("/{id}")public String showUser(@PathVariable("id") int id, Model model) {User user = new User("Charlie", 35); // 假设从数据库获取用户model.addAttribute("user", user);return "userDetail"; // 返回视图名称}
}

2.@Requestbody

在 Java Web 开发中,@RequestBody 是 Spring 框架中的一个注解,主要用于将 HTTP 请求的请求体(request body)映射为方法的参数。

具体来说就是,@RequestBody 注解会将 HTTP 请求的正文部分(通常是 JSON 或 XML 格式的数据)自动转换为 Java 对象。例如,当客户端发送一个包含 JSON 数据的 POST 请求时,Spring 会将这些 JSON 数据反序列化成 Java 对象,如下所示,接收一个 JSON 格式的请求体,并将其转换为 Java 对象:

@RestController
public class UserController {// 假设我们有一个 User 类public static class User {private String name;private int age;// getters and setters}@PostMapping("/users")public String createUser(@RequestBody User user) {// 自动将请求体中的 JSON 数据转换成 User 对象return "User created: " + user.getName() + ", age: " + user.getAge();}
}

解析:

  • @RequestBody:它会将 HTTP 请求的 Body 部分转换为方法参数。在这个例子中,它会将客户端发送的 JSON 数据映射到 User 类对象的字段上
  • @PostMapping("/users"):这个注解表示一个 POST 请求,客户端通过请求体发送一个用户信息(如 JSON 格式),Spring 会自动解析这个请求体,并使用 @RequestBody 注解将其转换成 User 对象

如果客户端发送以下JSON数据:

{"name": "John Doe","age": 30
}

那么在 createUser 方法中,user 对象会被自动填充为:

user.name = "John Doe";
user.age = 30;

3.@RequestMapping

@RequestMapping 是 Spring 框架中用于处理 HTTP 请求的核心注解之一。它可以用于类级别和方法级别,标识一个方法或类与特定的 HTTP 请求(如 GET、POST、PUT、DELETE)映射关系,从而让 Spring 框架能够将 HTTP 请求路由到对应的处理方法。

Spring 为 @RequestMapping提供了更具体的注解,用于简化 @RequestMapping 的使用:

  •  @GetMapping:专门用于处理 GET 请求
  • @PostMapping:专门用于处理 POST 请求
  • @PutMapping:专门用于处理 PUT 请求
  • @DeleteMapping:专门用于处理 DELETE 请求
  • @PatchMapping:专门用于处理 PATCH 请求 

 这些注解是 @RequestMapping 的快捷方式,适用于常见的 HTTP 请求方法,减少了代码的冗余

@RequestMapping 的使用示例:类级别和方法级别的结合使用

  •  @RequestMapping("/users"):在类级别指定基本的 URL 路径 /users,该路径会应用到类中的所有方法 
  • @GetMapping@PostMapping@RequestMapping 的快捷方式,分别处理 GETPOST 请求 
@RestController
@RequestMapping("/users")
public class UserController {// 处理 GET 请求,路径为 "/users"@GetMappingpublic List<User> getAllUsers() {List<User> users = new ArrayList<>();users.add(new User("Alice", 30));users.add(new User("Bob", 25));return users;  // 返回用户列表,默认会转化为 JSON}// 处理 POST 请求,路径为 "/users"@PostMappingpublic User createUser(@RequestBody User user) {return user;  // 接收 JSON 数据并返回创建的用户对象}
}

4.@Component

在 Java Web 开发中,@Component 注解是 Spring 框架提供的一个非常重要的注解,用来声明一个类是 Spring 容器中的一个组件,使得该类的实例可以被自动注册到 Spring 容器中进行管理。这样,你就可以利用 Spring 提供的依赖注入(DI)功能,将该组件注入到其他类中,以下是@Component 注解使用步骤:

1.@Component 声明

@Component 通常用于类的声明上,表示该类是一个 Spring 管理的 Bean:

import org.springframework.stereotype.Component;@Component
public class MyService {public void doSomething() {System.out.println("Doing something...");}
}

2.Spring scan扫描

Spring 默认会扫描带有 @Component 注解的类(以及其他派生注解,如 @Service@Repository@Controller 等),并将其注册为 Spring 管理的 Bean。为了让 Spring 知道去扫描这些组件,通常会在配置类中使用 @ComponentScan 注解指定包扫描路径

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan(basePackages = "com.example") // 指定要扫描的包
public class AppConfig {// Spring 会自动扫描并注册包中的 @Component 注解的类
}

3.自动装配

使用 @Autowired 注解可以将 @Component 注解的类实例注入到其他类中:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class MyController {@Autowiredprivate MyService myService;public void startProcess() {myService.doSomething();}
}

@Service@Repository@Controller 都是 @Component 的派生注解,它们与 @Component 有相同的功能,但用于不同的层次:

  • @Service:通常用于业务层服务类
  • @Repository:通常用于数据访问层类
  • @Controller:通常用于控制器类(用于 MVC 控制器)
  • @Component:用于普通的 Bean 类

5.@Autowired & @Resource

@Autowired和@Resource都是用于依赖注入(DI)的注解,但是@Autowired注解是Spring框架提供的注解,它根据类型进行自动装配;@Resource注解是JavaEE提供的注解,它提供了更灵活的方式进行依赖对象的查找,可以按照名称或类型进行注入

@Component
public class UserService {@Autowiredprivate User user;
}@Component
public class UserService {@Resourceprivate User user;
}

在上述示例中,使用@Autowired注解将User对象注入到UserService类中,Spring容器会根据UserRepository类型进行自动装配,并将匹配的Bean注入到user字段中;@Resource注解默认按照字段名进行依赖对象的查找和匹配,也可以通过name属性指定依赖对象的名称,它们的区别是: 

  • @Autowired注解是Spring提供的,用于自动装配Bean依赖。它可以通过类型匹配来自动注入依赖对象,但如果存在多个符合条件的候选对象时,默认使用byType的方式进行自动装配
  • @Resource注解是JavaEE提供的,也可以用于自动装配依赖对象。它可以通过名称匹配来自动注入依赖对象,默认使用byName的方式进行自动装配

其他JavaWeb开发常见注解:17.1 JavaWeb-常用注解_java web 判断请求参数注解-CSDN博客

6.@ApiOperation

@ApiOperation 是一个常用于 Java 后端开发中 Swagger 文档生成工具的注解,通常用于描述和说明 API 的接口操作,从而可以展示在localhost:80/doc.html中

@PostMapping("/status/{status}")
@ApiOperation("启用禁用员工账号")
public Result startOrStop(@PathVariable("status") Integer status, Long id){employeeService.startorstpp(status,id);return Result.success();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏储能微电网协调控制器

安科瑞 Acrel-Tu1990 1. 产品介绍 ACCU-100微电网协调控制器是一款专为微电网、分布式发电和储能系统设计的智能协调控制设备。该装置能够兼容包括光伏系统、风力发电、储能系统以及充电桩等多种设备的接入。它通过全天候的数据采集与分析&#xff0c;实时监控光伏、风能、储…

【C++课程学习】:继承:默认成员函数

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 构造函数 &#x1f369;默认构造函数&#xff08;这里指的是编译器生成的构造函数&#xff09;&#…

泷羽sec学习打卡-Linux基础2

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于Linux的那些事儿-Base2 一、Linux-Base2linux有哪些目录呢&#xff1f;不同目录下有哪些具体的文件呢…

TCP拥塞控制

TCP拥塞控制&#xff08;Congestion Control&#xff09; 什么是拥塞控制&#xff1f; 拥塞控制(Congestion Control)主要针对整个网络中的数据传输速率进行调节&#xff0c;防止过多的数据注入网络中&#xff0c;这样可以使网络中的路由器或链路不致于过载&#xff0c;以避免…

Unity教程(十八)战斗系统 攻击逻辑

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

自动驾驶合集(更新中)

文章目录 车辆模型控制路径规划 车辆模型 车辆模型基础合集 控制 控制合集 路径规划 规划合集

网站架构知识之Ansible进阶(day022)

1.handler触发器 应用场景&#xff1a;一般用于分发配置文件时候&#xff0c;如果配置文件有变化&#xff0c;则重启服务&#xff0c;如果没有变化&#xff0c;则不重启服务 案列01&#xff1a;分发nfs配置文件&#xff0c;若文件发生改变则重启服务 2.when判断 用于给ans运…

整理5个优秀的微信小程序开源项目

​ 一、Bee GitHub: https://github.com/woniudiancang/bee Bee是一个餐饮点餐商城微信小程序&#xff0c;是针对餐饮行业推出的一套完整的餐饮解决方案&#xff0c;实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能&#xff0c;完美的使餐饮行业更高效便捷&#x…

微服务链路追踪skywalking安装

‌SkyWalking是一个开源的分布式追踪系统&#xff0c;主要用于监控和分析微服务架构下的应用性能。‌ 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案&#xff0c;特别适用于微服务、云原生架构和基于容器的环境&#xff08;如Docker、K8s、Mesos&…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议&#xff0c;2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下&#xff0c;ITU-R WP 5D#35e远程会议宣布3GPP 5G技术&#xff08;含NB-IoT&#xff09;满足IMT-2020 5G技…

matlab建模入门指导

本文以水池中鸡蛋温度随时间的变化为切入点&#xff0c;对其进行数学建模并进行MATLAB求解&#xff0c;以更为通俗地进行数学建模问题入门指导。 一、问题简述 一个煮熟的鸡蛋有98摄氏度&#xff0c;将它放在18摄氏度的水池中&#xff0c;五分钟后鸡蛋的温度为38摄氏度&#x…

开源 2 + 1 链动模式、AI 智能名片、S2B2C 商城小程序在用户留存与品牌发展中的应用研究

摘要&#xff1a;本文以企业和个人品牌发展中至关重要的用户留存问题为切入点&#xff0c;结合管理大师彼得德鲁克对于企业兴旺发达的观点&#xff0c;阐述了用户留存对品牌营收的关键意义。在此基础上&#xff0c;深入分析开源 2 1 链动模式、AI 智能名片、S2B2C 商城小程序在…

搭建Python2和Python3虚拟环境

搭建Python3虚拟环境 1. 更新pip2. 搭建Python3虚拟环境第一步&#xff1a;安装python虚拟化工具第二步&#xff1a; 创建虚拟环境 3. 搭建Python2虚拟环境第一步&#xff1a;安装虚拟环境模块第二步&#xff1a;创建虚拟环境 4. workon命令管理虚拟机第一步&#xff1a;安装扩…

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理 目录 应用场景 接口文档 接口信息 请求参数 响应参数 调试 阿里云openApi平台调试 查看调用结果 查看SDK示例 下载SDK 遇到问题 本地调试 总结 应用场景 项目有一个提现的场景&#xff0c;需要用户真实的身份信息。 …

基于卷积神经网络的车辆损坏部位检测系统带gui

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

CHI atomics 传输——CHI(6)

原子事务&#xff0c;指的是此事务就像原子一样是不可分割的&#xff0c;要么所有操作全部完成&#xff0c;要么全部不执行&#xff0c;不存在执行部分操作的情况。 ALU (Arithmetic Logic Unit) 算术逻辑单元&#xff0c;ALU在HN或SN AddrData&#xff1a;当前memory中的数据…

批量从Excel某一列中找到符合要求的值并提取其对应数据

本文介绍在Excel中&#xff0c;从某一列数据中找到与已知数据对应的字段&#xff0c;并提取这个字段对应数值的方法。 首先&#xff0c;来明确一下我们的需求。现在已知一个Excel数据&#xff0c;假设其中W列包含了上海市全部社区的名称&#xff0c;而其后的Y列则是这些社区对应…

有趣的Midjourney作品赏析(附提示词)

中文提示词&#xff1a;国风少年 C4D软件,高分辨率,超细节,超现实主义, 英文提示词&#xff1a;National Style Youth Cinema4D,high resolution,hyper detailed,surrealism, --niji 6 --ar 1:1 中文提示词&#xff1a;粘土模型&#xff0c;男性穿着中世纪欧洲蓝色盔甲&#x…

SpringBootCloud 服务注册中心Nacos对服务进行管理

介绍 Nacos&#xff08;Naming and Configuration Service&#xff09;是一个开源的、动态的服务发现、配置管理和服务管理平台&#xff0c;特别适用于云原生应用和微服务架构。它可以作为服务注册中心&#xff0c;用于微服务的注册、发现、配置管理等。在微服务架构中&#x…

强化学习入门笔记(Reinforcement Learning,RL) 强推!

由于本人的近期研究方向涉及到强化学习&#xff0c;本科时已经学习过了&#xff0c;但是感觉还是有些概念和算法没有学懂学透&#xff0c;所以想重新系统性的学习一下&#xff0c;记录了整个学习过程&#xff0c;而且对当时没有理解不是特别深刻的内容有了一些更加深刻的理解&a…