spring笔记02(web类注解)

Spring 注解全面学习笔记 本文总结了Spring注解的核心概念与应用,主要内容包括: 注解基础:解释注解作为代码"标签"的作用,说明其在Spring中替代XML配置的重要性,并列出核心专业名词如AOP、依赖注入等。 生命周期:详细分析SOURCE、CLASS、RUNTIME三种注解生命周期,提供代码示例演示不同级别注解的可见性差异,给出实际应用场景选择建议。 核心注解实战:展示组件扫描(@ComponentScan)、Bean定义(@Bean)及分层架构注解(@Service/@Repository/@RestC 阅读详情

参考文章:
https://aflyun.blog.youkuaiyun.com/article/details/76299467
https://blog.youkuaiyun.com/leo187/article/details/107848688

RestController与Controller

参考文章:https://www.zhenyuke.com/info/49566155/

@RestController 在 Spring MVC 中就是 @Controller 和 @ResponseBody 注解的集合。

@RestController 注解是从 Spring 4.0 版本开始添加进来的,主要用于更加方便的构建 RESTful Web 服务。@ResponseBody注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用此注解此次请求将不再走视图处理器,而是直接将此响应结果写入到输入流中,其效果等同于使用response对象输出指定格式的数据。

在 RESTful 的服务中,我们大部分情况是使用 JSON 为返回数据的,所以你可以直接使用 @RestController 替换掉 @Controller 和 @ResponseBody。

RequestMapping

对应get/post方法,对应有@GetMapping/@PostMapping注解

https://developer.aliyun.com/article/651661

代码示例

@RestController
@RequestMapping("/pay")
public class PayController extends LogBase {

    @Autowired
    private PayService payService;

    @PostMapping("/createOrder")
    public ResponseEntity<CreateOrderRes> createOrder(CreateOrderParam param, HttpServletRequest request, HttpServletResponse response){
        param.checkParam();//检查参数合法性
        return payService.createOrder(param , request);
    }

等同于

@RestController
public class PayController extends LogBase {

    @Autowired
    private PayService payService;

    @PostMapping("/pay/createOrder")
    public ResponseEntity<CreateOrderRes> createOrder(CreateOrderParam param, HttpServletRequest request, HttpServletResponse response){
        param.checkParam();//检查参数合法性
        return payService.createOrder(param , request);
    }

@RequestBody与@RequestParam

@RequestParam

https://www.cnblogs.com/tomingto/p/11377138.html

@RequestParam (org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参。

有三个属性:

  1. value:请求参数名(必须配置)

  2. required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)

  3. defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)

  4. 为演示效果,首先需要创建一个测试控制类,然后创建一个测试方法,如图所示,方法里添加一个参数,此时方法参数没有添加注解。通过idea工具启动web项目,然后通过浏览器访问测试效果
    在这里插入图片描述不带参数则获取的参数为null,但页面可以正常显示,请求可以正常的执行。

在这里插入图片描述
带上参数之后,参数可以正常的获取并打印出来了

在这里插入图片描述

  1. 下面来对比下添加注解的效果,但只是添加@RequestParam,没有带任何的注解设置参数。再次通过浏览器访问查看效果
    在这里插入图片描述此时带上userName参数页面可以正常显示并打印出结果值,但如图所示

在这里插入图片描述
不带参数的时候,页面报错,返回400,并提示userName不存在
在这里插入图片描述

  1. 当然这样的限制是可以选择的,@RequestParam里添加required=false来关闭必须参数的限制,这样就和第一种不带注解的效果一样了
    在这里插入图片描述在这里插入图片描述
  2. @RequestParam还可以在参数为空的情况下,为我们设置一个参数的默认值,如图所示,可以看出来,没有参数的情况下,获取到的就是默认值
    在这里插入图片描述在这里插入图片描述
  3. 默认参数的key名称是方法里的参数名称,但通过@RequestParam可以自定义另外一个,因为在某些条件下,方法名称固定下来不可以修改了,但请求的参数又需要通过另外一个参数key名称来传递,这样就可以通过这样的方式来实现

在这里插入图片描述在这里插入图片描述

@RequestBody

1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。@RequestBody接受的是一个json格式的字符串,一定是一个字符串。

2、通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。例如说以下情况:

    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });
@requestMapping("/login")
public void login(@RequestParam(value= "userName") String userName,@RequestParam(value= "pwd") String pwd){
	System.out.println(userName+" :"+pwd);
}

这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:

String userName;
String pwd;

那么上述接口可以改为以下形式:

@requestMapping("/login")
public void login(@RequestBody User user){
	System.out.println(user.getUserName()+":"+user.getPwd());
}

这种形式会将JSON字符串中的值赋予user中对应的属性上。需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

总结:

  1. @RequestBody接受的是一个json格式的字符串,一定是一个json对象字符串。
  2. 在使用springmvc的做项目时,将JSON字符串和JSON对象混淆了。
  3. @RequestParam接受单个参数,参数位置位于链接后。@RequestBody接受JSON对象字符串,参数位置位于请求体。
其他

@RequestBody与@RequestParam()可以同时使用

@RequestParam接收的是key-value里面的参数,可以有多个,对应不同参数

@RequestBody 接收的是请求体里面的数据,映射成一个对象;所以最多只能有一个该注解。如果请求参数体里的参数信息比较多,包含了多个实体的对应属性,那么我们可以借助JSONObject来接收,再利用json来取出指定属性。

public void login(@RequestBody JSONObject json){
	
}

编程自学指南:java程序设计开发,设计思想开源框架-SpringBoot原理与实战之Spring5常用注解过程学习笔记,通用的组件注解,被该注解标注的类会被 Spring 容器扫描并注册为 Bean java程序设计开发,设计思想开源框架-SpringBoot原理与实战之Spring5常用注解过程学习笔记,通用的组件注解,被该注解标注的类会被 Spring 容器扫描并注册为 Bean,Spring 5 中的这些常用注解是 Spring Boot 开发的基础,掌握它们能帮助开发者更高效地进行项目开发。重点在于理解每个注解的作用、使用场景和案例中的应用逻辑,以便在实际开发中灵活运用。 阅读详情

相关推荐

springMVC注解大全

囊括了springMVC的大部分注解,方便了spring的操作,用注解代替配置文件,十分方便,简单易懂

@RestController使用问题

@RestController笔记@RestController作用@RestController和@Controller的不同@RestController的替代方式@RestController底层实现@RestController遇到的问题 @RestController作用 作用:将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。 当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。 如果返回值是

果壳世界 1944

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1908

Spring框架的Web模块用于处理HTTP请求和响应的所有注解

@RestController、@RequestMapping、@RequestBody、@RequestParam和@RequestHeader等是SpringMVC最常用的注解之一。通过使用@RequestAttribute注解,我们可以将请求属性映射到处理程序方法的参数上,使得我们能够方便地获取请求的属性信息。@RestController:结合了@Controller和@ResponseBody注解的功能,表示这是一个控制器,并且返回值会直接转换为JSON或XML格式。

这介绍不了我 1564

Shopee滑块验证码太刁钻?手把手教你用Python+Playwright绕过弧形验证(附影刀RPA接入代码)

本文详细介绍了如何使用Python和Playwright结合SadCaptcha第三方服务高效破解Shopee平台的弧形滑块验证码,并集成到影刀RPA工作流中。该方案开发周期短、准确率高(>90%),特别适合跨境电商自动化操作,已在实际项目中验证成功。

weixin_29284657的博客 570

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 856

spring-web注解

和@ExceptionHandler,@InitBinder,@ModelAttribute配合使用来处理相应的流程; 如果被标注的类实现了ResponseBodyAdvice接口,则可以拦截@ResponseBody处理流程,自定义处理返回值 如果被标注的类实现了RequestBodyAdvice接口,则可以拦截@RequestBody处理流程,自定义处理请求参数

Debug日记的博客 380

参考线平滑-FemPosDeviation-SQP

使用SQP(顺序二次规划)对离散点进行平滑

mpt0816的博客 2440

spring web 常用注解01

常用注解01@RequestMapping@RequestParam@RequestBody@ResponseBody@PathVariable @RequestMapping @RequestMapping(“url”) 一般作用在Controller的方法上,作为请求的映射地址。 @RequestMapping(value = “/test1”)//类级别映射,可以没有,一般用于减少书写量 @RequestMapping("test1") public class myController {

HappyDyer的博客 295

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2178

飞牛fnNAS搭建Web网页版OFFICE(WPS)软件

本文介绍了如何在飞牛NAS上通过Docker容器部署WPS Office办公软件。主要内容包括:启用Docker服务、准备项目文件夹结构、使用Compose方式构建容器、解决端口冲突问题、配置中文输入法和字体库,以及通过ZeroTier实现远程访问。文章详细说明了每个步骤的操作方法,包括容器启动、输入法设置、字体添加和文件存储位置配置。最后还介绍了使用ZeroTier内网穿透技术实现远程访问NAS上WPS服务的方法,让用户可以在不同设备上随时编辑NAS中的文件。整个部署过程完整清晰,为NAS用户提供了便捷的

dgnankai的专栏 1702

spring web常用注解和方法传参介绍

修饰类或接口,告诉spring帮我们管理这个类2. @Controller:修饰类,表示该类返回的是视图3. @ResponseBody:修饰类或方法,当一个类用Controller修饰时,若某个方法想返回数据,则可以用该注解修饰1. @RequestMapping:修饰类和方法,表示访问时的url路径2. @RequestParam:传递集合类时或修改请求中某个键的名字时需要加上,加上该注解默认required为true,即为必传属性。

2201_75456895的博客 1359

107.在 Vue 3 中使用 OpenLayers 实现视图联动功能

是一个非常强大的 Web 地图渲染库,支持多种地图数据格式和交互操作。在 Vue 3 中,我们可以利用。绑定到真实的 DOM 元素上,我们就可以用它们来初始化 OpenLayers 地图。来封装和管理 OpenLayers 地图的状态,从而更高效地开发地图应用。,即两个地图窗口共享同一个视图(View),从而实现同步缩放、拖动等操作。这可以确保 Vue 组件销毁时,OpenLayers 也正确销毁地图实例。,并且它们会同步缩放和拖动,达到地图联动的效果。这样,无论你拖动哪个地图,另一个都会同步变化。

小彭的博客 1943

【Spring IoC】深入解析类注解:@Service 、@Repository、 @Component 、@Configuration 的使用方法及 @Controller 类注解和以上类注解关系

【Spring IoC】深入解析类注解:@Service 、@Repository、 @Component 、@Configuration 的使用方法及 @Controller 类注解和以上类注解关系

OuO-1 的博客 1492

西安交通大学软件学院——分布式系统练习题(综合题)

摘要:本文探讨了分布式系统的核心特性与关键问题。首先阐述了分布式系统的8种透明性特性,包括访问、定位、迁移等。然后通过具体案例分析了分布式事务的回滚机制、域名解析的迭代与递归过程、不同分布式系统的异同比较。重点讨论了RPC通信中客户端/服务器崩溃的处理方法,包括消灭、再生和到期三种策略。最后介绍了Lamport时间戳算法在进程通信中的应用及问题解决方案。全文涵盖了分布式系统设计中的透明性、可靠性、一致性等核心问题。

qq_73044452的博客 204

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring Security Config : 注解 EnableWebSecurity 启用Web安全

@EnableWebSecurity是Spring Security用于启用Web安全的注解。通常将该注解用在某个Web安全配置类上(实现了接口WebSecurityConfigurer或者继承自WebSecurityConfigurerAdapter)。典型的使用例子如下 : @Configuration @EnableWebSecurity public class MyWebSecur...

Details Inside Spring 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot—常见注解总结

本文总结了SpringBoot的常见注解

qq_29356529的博客 1175

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring Boot 最核心的 25 个注解1、@SpringBootApplication这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个

这是 Spring 3.0 添加的新注解,用来导入一个或者多个 Spring 配置文件,这对 Spring Boot 兼容老项目非常有用,因为有些配置无法通过 Java Config 的形式来配置就只能用这个注解来导入。这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。

2403_88996764的博客 762

Spring学习笔记day02——注解注入

注解注入 注解是一个类,使用@注解名称 开发中使用注解取代xml配置文件 @Component @component取代<bean class=""> @Component(“id”) 取代<bean id="" class=""> web开发,提供三个@Component注解衍生注解 @Respository(“名称”) :dao层 @Service(“名称”):s...

weixin_42236535的博客 217

Spring注解驱动开发(一)

*** @param metadataReader 读取到当前正在扫描类的信息* @param metadataReaderFactory 可以获取其他任何类的信息*/@Override// 获取当前类注解的信息// 获取当前正在扫描类的信息// 获取当前类的资源信息(类的路径)BeanFactory,以Factory结尾,表示它是一个工厂类(接口),它负责生产和管理bean的一个工厂。在Spring中,

小孔靠得住的博客 1811

Spring 注解

Spring注解的使用

wo_1ca的博客 2327

Java Spring 框架技术从入门到放弃:Spring生态之Spring 常用注解学习笔记,Spring 组件注册与扫描类注解

Java Spring 框架技术从入门到放弃:Spring生态之Spring 常用注解学习笔记,Spring 组件注册与扫描类注解

zl515035644的博客 760

spring web项目中常用的注解

web注解

weixin_44143876的博客 1169

Spring基础 - Spring 常用七大类注解

如果想要延迟初始化一个bean,那么可以在此类上使用Lazy注解,表示此bean只有在第一次被使用的时候才会被创建和初始化。上使用此注解,并且使用属性来传递值时,Spring会自动把值赋给此field。后,如果一个类仅仅只有一个构造方法,那么即使不使用此注解,那么Spring也会自动注入相关的bean。当在构造方法上使用此注解的时候,需要注意的一点就是一个类中只允许有一个构造方法使用此注解。此注解使用在方法上,声明此方法会在一个单独的线程中执行。上,声明测试使用的配置文件,此外,也可以指定加载上下文的类。

深入Java世界:探索编程之美与技术深度 1598

Spring注解

1.声明bean的注解 Spring注解 描述 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在展现层使用,控制器的声明(C) @Controller 定义文档的主体 2.注入bean的注解 Spring注解 描述 @Autowired Spring提供的工具(由Spring的依赖注入工具(BeanPostProcess...

console_log_LGA的博客 2096

Spring 常用注解的使用

本文详细介绍了Spring框架中常用注解及其应用场景。核心注解包括@Component、@Service、@Repository和@Controller,分别用于组件扫描、服务层、数据访问层和控制器标记。依赖注入相关注解如@Autowired、@Qualifier和@Resource用于自动装配Bean。Web开发部分重点讲解了@RequestMapping及其衍生注解,以及@RequestBody和@ResponseBody的数据绑定功能。

2503_92145588的博客 1221
上一篇: spring事件发布,广播,监听
下一篇: IDEA使用习惯及小技巧记录
MrMoving
博客等级 码龄10年 54粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值