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"
    @GetMapping
    public 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"
    @PostMapping
    public 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 {

    @Autowired
    private 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 {
    @Autowired
    private User user;
}

@Component
public class UserService {
    @Resource
    private 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();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

axios平替!用浏览器自带的fetch处理AJAX(兼容表单/JSON/文件上传)

fetch 是啥&#xff1f; fetch 函数是 JavaScript 中用于发送网络请求的内置 API&#xff0c;可以替代传统的 XMLHttpRequest。它可以发送 HTTP 请求&#xff08;如 GET、POST 等&#xff09;&#xff0c;并返回一个 Promise&#xff0c;从而简化异步操作 基本用法 /* 下面是…

window任务计划记录中显示操作成功,但是代码只执行了第一句命令

一、创建定时任务 1. Windows键R 调出此窗口&#xff0c;输入compmgmt.msc &#xff08;调用的是计算机管理&#xff09; 2. 创建基本任务 在任务计划程序中右键 选择 创建基本任务。 输入任务名称及描述。 下一步中选择触发器的时间&#xff0c;这里选择每天。 选择开始时间&…

使用VSCode远程连接服务器并解决Neo4j无法登陆问题

摘要&#xff1a;本文介绍了如何通过VSCode连接内网部署的Neo4j服务器&#xff0c;并启动服务。在访问Neo4j登录界面时&#xff0c;遇到了端口映射问题导致无法登录。通过手动添加7687端口的映射后&#xff0c;成功登录Neo4j。 我在内网部署了一台服务器&#xff0c;并在其上运…

【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法

博主介绍&#xff1a;✌全网粉丝21W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

游戏引擎学习第四天

视频参考:https://www.bilibili.com/video/BV1aDmqYnEnc/ BitBlt 是 Windows GDI&#xff08;图形设备接口&#xff09;中的一个函数&#xff0c;用于在设备上下文&#xff08;device context, DC&#xff09;之间复制位图数据。BitBlt 的主要用途是将一个图像区域从一个地方复…

七牛云上传图片成功,但是无法访问显示{error : document not found}

上传图片成功&#xff0c;但是访问不了的问题&#xff0c;直接把地址放进浏览器显示{error : document not found}&#xff0c;直接访问 DCNF 404是符合预期的&#xff0c;因为还没有去空间复制外链&#xff0c;要访问实际存在的资源才可以的. 配置区域和访问域名 设置没问题了…

通过投毒Bingbot索引挖掘必应中的存储型XSS

简介 在本文中&#xff0c;我将讨论如何通过从外部网站对Bingbot进行投毒&#xff0c;来在Bing.com上实现持久性XSS攻击。 什么是存储型或持久性XSS&#xff1f;存储型攻击指的是将恶意脚本永久存储在目标服务器上&#xff0c;例如数据库、论坛、访问日志、评论栏等。受害者在…

84.7k Star!Excalidraw:开源的在线白板工具,具备手绘风格和实时协作功能

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

让Git走代理

有时候idea提交代码或者从github拉取代码&#xff0c;一直报错超时或者:Recv failure: Connection was reset,下面记录一下怎么让git走代理从而访问到github。 1.打开梯子 2.打开网络和Internet设置 3.设置代理 记住这个地址和端口 4.打开git bash终端 输入以下内容 git c…

CSS:导航栏三角箭头

用CSS实现导航流程图的样式。可根据自己的需求进行修改&#xff0c;代码精略的写了一下。 注&#xff1a;场景一和场景二在分辨率比较低的情况下会有一个1px的缝隙不太优雅&#xff0c;自行处理。有个方法是直接在每个外面包一个DIV&#xff0c;用动态样式设置底色。 场景一、…

第4章-计划 4.3 订计划、勤跟踪、要闭环

4.3 订计划、勤跟踪、要闭环 1.制订好的第一版计划先要基线化&#xff0c;确保有据可依2.计划要监督执行&#xff0c;发现延期时要“喊出来”3.计划要赶得上变化4.资源保障是计划能够执行的依赖 坚定执行制订好的计划&#xff0c;监督执行效果&#xff0c;计划产生偏差时及时制…

在 WPF 中,如何实现数据的双向绑定?

在 WPF 中&#xff0c;数据绑定是一个非常重要的特性&#xff0c;它允许 UI 与数据源之间自动同步。双向绑定是一种常见的绑定方式&#xff0c;当数据源更新时&#xff0c;UI 会自动更新&#xff1b;同样&#xff0c;当 UI 中的元素&#xff08;如文本框&#xff09;发生改变时…

Java面向对象编程进阶之包装类

Java面向对象编程进阶之包装类 一、为什么要使用包装类二、掌握基本数据类型与包装类之间的转换1、为什么需要转换&#xff1f;2、如何转换&#xff1f; 三、String与基本数据类型、包装类之间的转换1、案例2、特别注意 一、为什么要使用包装类 为了使得基本类型的数据变量具备…

基于Spring Boot与Redis的令牌主动失效机制实现

目录 前言1. 项目结构和依赖配置1.1 项目依赖配置1.2 Redis连接配置 2. 令牌主动失效机制的实现流程2.1 登录成功后将令牌存储到Redis中2.2 使用拦截器验证令牌2.3 用户修改密码后删除旧令牌 3. Redis的配置与测试4. 可能的扩展与优化结语 前言 在现代Web系统中&#xff0c;用…

yolov8-cls的onnx与tensorrt推理

本文不生产技术,只做技术的搬运工! 前言 最近需要使用yolov8-cls进行模型分类任务,但是使用ultralytics框架去部署非常不方便,因此打算进行onnx或者tensorrt去部署,查看了很多网上的帖子,并没有发现有完整复现yolov8-cls前处理(不需要后处理)的"轮子",通过自己debug…

Acrobat Pro DC 2023(pdf免费转化word)

所在位置 通过网盘分享的文件&#xff1a;Acrobat Pro DC 2023(64bit).tar 链接: https://pan.baidu.com/s/1_m8TT1rHTtp5YnU8F0QGXQ 提取码: 1234 --来自百度网盘超级会员v4的分享 安装流程 打开安装所在位置 进入安装程序 找到安装程序 进入后点击自定义安装&#xff0c;这里…

VMware和CentOS 7.6 Linux操作系统的安装使用

1. 安装VMware 安装VMware之前&#xff0c;有些电脑是需要去BIOS里修改设置开启cpu虚拟化设备支持才能安装。如果运气不好在安装过程中安装不了的话就自行百度吧。 打开 VMware 的官网: https://www.vmware.com/ 点击 product&#xff0c;往下滑找到 see desktop hypeerviso…

手把手教你:如何从零开始实施一套OA办公系统!

很多朋友都吐槽说公司的各种各样的信息啊文件啊越积越多&#xff0c;导致管理起来越来越麻烦。早就跟大家说过&#xff0c;尤其是在提高工作效率、优化资源配置和促进信息共享方面&#xff0c;OA&#xff08;办公自动化&#xff09;系统发挥着不可替代的作用&#xff0c;早安排…

网页web无插件播放器EasyPlayer.js播放器返回错误 Incorrect response MIME type 的解决方式

在使用EasyPlayer.js播放器进行视频流播放时&#xff0c;尤其是在SpringBoot环境中部署静态资源时&#xff0c;可能会遇到“Incorrect response MIME type”的错误&#xff0c;这通常与WebAssembly&#xff08;WASM&#xff09;文件的MIME类型配置有关。 WASM是一种新的代码格式…

element-plus <el-date-picker>日期选择器踩坑!!!!

我怎么一上午踩两个坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;大声bb&#xff09; 原来的vue2老项目是这样写的 <el-form-item label"时间" prop"time"><el-date-pickerv-model"addForm.time"typ…