Spring Boot快速入门---(四)spring boot的表单验证以及AOP处理请求

Spring Boot 2 快速教程:WebFlux 快速入门(一) 本文主要讲了 Spring Boot 2.0 WebFlux 背景和快速入门使用。用的是基于功能性端点去创建一个服务,但这个有点代码偏多。下一章一个 CRUD 我们使用注解控制层,让开发更方便。 阅读详情

一、使用@Valid表单验证

1.将我们的项目重新整理一下

 

2.在Girljava类中进行添加限制

 

3.在GirlController类的添加女生的方法中添加@Valid

 

4.模拟请求结果返回为空

 

 

 

二、AOP处理请求

AOP是一种编程范式,与语言无关,是一种程序设计思想。

面向切面(AOP)Aspect Oriented Programming

面向对象(OOP)Object Oriented Programming

 

面向过程到面向对象

换个角度看世界,换个姿势处理问题

将通用逻辑从业务逻辑中分离出来。

 

 

例:记录每一个http请求

1.先添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.在项目中新建一个aspect包下HttpAspect类

(1)添加注解

@Aspect
@Component

(2)简便代码

@Before("execution(public * com.lcz.controller.GirlController.*(..))")
public void doBefore(){
    System.out.println("开始了");
}
@After("execution(public * com.lcz.controller.GirlController.*(..))")
public void doAfter(){
    System.out.println("结束了");
}

(3)获取请求代码

package com.lcz.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author:Coding Chaozhang
 */
@Aspect
@Component
public class HttpAspect {
    private final static Logger logger=LoggerFactory.getLogger(HttpAspect.class);
//    @Before("execution(public * com.lcz.controller.GirlController.*(..))")
//    public void doBefore(){
//        System.out.println("开始了");
//    }
//    @After("execution(public * com.lcz.controller.GirlController.*(..))")
//    public void doAfter(){
//        System.out.println("结束了");
//    }


    @Pointcut("execution(public * com.lcz.controller.GirlController.*(..))")
    public void log(){

    }

    @Before("log()")
    public void doBefore(JoinPoint joinPoint){
        //System.out.println("开始了");
        //logger.info("开始了");

        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request=attributes.getRequest();
        //url
        logger.info("url={}",request.getRequestURI());
        //method
        logger.info("method={}",request.getMethod());
        //ip
        logger.info("ip={}",request.getRemoteAddr());
        //类方法
        logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
        //参数
        logger.info("args={}",joinPoint.getArgs());
    }

    @After("log()")
    public void doAfter(){
        //System.out.println("结束了");
        logger.info("结束了");
    }

    @AfterReturning(returning = "object",pointcut = "log()")
    public void doAfterReturning(Object object){
        logger.info("response={}",object.toString());
    }
}

(4)结果展示

 

 


 

 

 


Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南) Spring框架自诞生以来,凭借其独特的设计理念和广泛的适用性,在Java企业级应用开发领域占据主导地位。Spring框架的核心设计理念体现在IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两个关键技术上。IoC通过容器管理对象的生命周期和依赖关系,从而降低耦合度;而AOP则允许我们将横切关注点(如日志、事务管理、权限验证等)从核心业务逻辑中分离出来,实现业务逻辑与系统服务的解耦。 阅读详情

相关推荐

Spring Boot 请求处理:技术细节与优化策略

在当今互联网时代,应用程序的性能和响应速度是决定用户体验和业务成功的关键因素。随着用户基数的不断增长和业务复杂性的提升,如何高效、稳定地处理大量请求成为了一个重要的技术挑战。Spring Boot 作为一个现代化的 Java 框架,凭借其简洁的配置、强大的生态系统和丰富的功能,成为了构建高性能、高可用性 Web 应用的首选工具之一。

jsjbrdzhh的博客 1409

SpringBoot中Form表单提交测试

在RESTful架构中,HTTP动词(GET、POST、PUT、DELETE等)代表了对资源的不同操作,而在HTML表单中,仅支持GET和POST两种HTTP方法。但是有些情况下,我们需要使用PUT、DELETE等其他HTTP方法来操作资源,这时可以通过在表单中添加一个名为"_method"的隐藏域,并将其值设置为PUT、DELETE等方法来实现。在服务器端接收到表单提交的请求时,可以通过解析"_method"参数来确定客户端请求的HTTP方法。2.form表单提交时 method="post"

tiantiantbtb的博客 1491

Spring Boot 默认可以同时处理多少个请求?

我们来探讨一下 Spring Boot 的请求处理能力。

I am rushuni. 1255

Spring Boot(三):RestTemplate提交表单数据的三种方法

在REST接口的设计中,利用RestTemplate进行接口测试是种常见的方法,但在使用过程中,由于其方法参数众多,很多同学又混淆了表单提交与Payload提交方式的差别,而且接口设计与传统的浏览器使用的提交方式又有差异,经常出现各种各样的错误,如405错误,或者根本就得不到提交的数据,错误样例如下:Exception in thread "main" org.springframework.web

甘焕的博客 9万+

spring boot 2.0 快速入门

spring boot快速入门 一、Spring Boot 2.0入门 文章目录一、Spring Boot 2.0入门1、介绍Spring Boot2、使用IDEA Spring Initializer快速创建Spring Boot项目![在这里插入图片描述](https://img-blog.csdnimg.cn/20200716001555414.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH

Berwin的博客 877

Spring Boot核心注解大全:从入门到精通(四)

Spring Boot是一个开源的Java框架,它被设计用来简化Spring应用的创建和开发过程。它基于Spring框架,通过自动配置和约定大于配置的方式,提供了一种快速创建独立的、可部署的Spring应用的方法。本文将跟随《Spring Boot核心注解大全:从入门到精通(三)》的进度,继续介绍Spring Boot核心注解。

凛鼕将至的博客 1184

如何在我们的SpringBoot上配置我们的表单请求PUT、DELETE

我们默认在SpringBoot中是不开启的,因为我们通常在开发中只有用到表单的时候才会需要开启。因为表单中是没有POST和DELETE请求。我们知道在我们之前的Spring中若想要开启我们的REST风格,使用表单PUT和DELETE请求,我们就必须配置过滤,很是麻烦。而在开发中,我们通常是与我们前端进行分离的,前端给我们一个接口,我们只需要给前端返回一个JSON数据即可。即可开启我们SpringBoot请求。.........

ebdbbd的博客 671

STM32控制舵机SG-5010转动,HAL库

首先设置时钟为72Mhz,预分频系数为72-1,自动重装载计数器的值为5000-1,这样的话就可以得到一个5ms的脉冲宽度,5000的计数值可以让舵机的旋转角度变得更加易控且相对精准,计算旋转角度的时候也可以更加精确。所以我们5ms脉宽,period是5000脉宽-------------角度----------pulse0.5ms-------------0度----------500;1.0ms------------45度---------1000;

qq_73783264的博客 1292

软件测试学习笔记丨业务架构分析思路

技术架构:技术组件之间的关系与通讯方式。plantuml(UNL中的用例图)业务架构:业务模块之间的关系。组织架构:协作团队的组织关系。数据架构:数据的关联关系。

Ceshiren666的博客 1206

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4747

东华大学2020考研计算机OJ题目解答分享——进阶篇(4)

4 一个月的天数 作者: Turbo时间限制: 1S章节: 分支结构 问题描述 : 输入年和月,输出该月有几天。 输入说明 : 输入两个整数,中间以空格分隔,第一个整数表示年,第二个整数表示月。 输出说明 : 输出该年该月的天数,输出时,行首与行尾均无空格,仅输出一个整数。 输入范例 : 2000 2 输出范例 : 29 解答思路: 闰年和质数出题一样频繁,简单必会 AC代码 #include...

qq_38344326的博客 472

SpringBoot---请求参数处理(1)

表单提交会带上_method=PUT请求过来被HiddenHttpMethodFilter拦截请求是否正常,并且是POST获取到_method的值兼容以下请求;原生request(post),包装模式requesWrapper重写了getMethod方法,返回的是传入的值。过滤器链放行的时候用wrapper。以后的方法调用getMethod是调用requesWrapper的。@Bean从这里我们可以知道只要我们自己配置了bean,那么就用我们自己的。

zhendeC1的博客 968

UA-DETRAC数据集转YOLO格式

UA-DETRAC转YOLO

lafsca5的博客 9107

【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程

本期主要讲解了关于Spring AOP入门概念,以及快速入门,以及Spring AOP的代码的详细介绍:切点,连接点,通知,以及切面的概念,还有通知类型等其他注解的介绍~~~

GGBond778的博客 5648

linux arm64 Debian12移植操作手册

2023年6月10号Debian官方出了debian12 arm64版本的。如果需要完全适配这个系统的话,需要linux6.10版本。应客户的需求,需要在Debian11升级为Debian12版本。

qq_45147279的博客 2169

YOLOv11改进 | Conv篇 | 图像去雾卷积DEConv助力yolov11有效涨点(部署零额外开销)

本文介绍了一种最新改进机制用于低层视觉任务的细节增强卷积(DEConv)机制。DEConv在训练阶段采用"普通卷积+差分卷积"的多分支并联结构,增强网络对边缘、纹理等细节特征的学习能力;在推理阶段可折叠为标准3×3卷积,保持与普通卷积相同的计算效率。文中详细阐述了DEConv的工作原理、实现方法以及在YOLOv11中的应用步骤,包括核心代码解析、模型修改方法和训练配置。实验表明,该机制在去雾、去噪、超分等强调细节重建的任务中具有显著优势。文章还提供了完整的代码实现和训练指导.

Snu77的博客 2436

spring boot快速入门 7: 使用aop处理请求

样例:登陆拦截(aop简单样例) 第一步:在pom 文件中加入aop依赖 <!-- spring aop --> <dependency> <groupId>org.springframework.boot</groupId> ...

abcd198203的博客 200

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2604

Spring Boot 入门:解锁 Spring 全家桶

Spring 全家桶是现代 Java 开发者不可或缺的工具集,它提供了从轻量级的框架到微服务架构的完整支持。本文将带你快速了解 Spring 框架、核心概念如 IoC(控制反转)和 AOP(面向切面编程),并深入介绍 Spring Boot、Spring MVC、Spring Cloud 及其在企业应用开发中的优势。Spring 框架诞生于 2003 年,最初的目标是简化企业级 Java 开发,它通过去除冗余的 Java EE 代码,并提供灵活的配置方式,迅速成为了开发者心中的首选。

m0_61118741的博客 3238

IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】持续更新,建议收藏

IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】 导读:行测、综合知识、英语和性格测试。综合知识,包括货币学、金融、会计、计算机等内容。  行政能力测试,内容大家可以参考公务员考试,包括逻辑推理、数字推理、图形推理、文字推理。英语测试,包括语法和词汇30题、完型填空20题、10篇阅读理解50题,阅读理解文章特别长,生词特别多。 (1)、英语可以Ctrl+F...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring boot中使用aop详解教程

ioc和aop是spring的两大核心功能模块,功能非常强大,aop为解耦提供了非常优秀的解决方案,而ioc则提供的强大的依赖注入功能 现在就以springboot中aop的使用来了解一下aop。 一:使用aop来完成全局请求日志处理 使用IDEA或者STS的快速创建项目功能,则创建一个springboot的web项目,勾选aop和web,pom.xml文件内容如下: &lt;?xml ...

S&Y_shhy_QQ_1127833416 1077

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot 表单验证项目教程

Spring Boot 表单验证项目教程 项目介绍 gs-validating-form-input 是一个基于 Spring Boot 的开源项目,旨在演示如何在 Spring Boot 应用中进行表单输入验证。该项目通过一个简单的表单提交示例,展示了如何使用 Spring 的验证框架来确保用户输入的数据符合预定义的规则。 项目快速启动 环境准备 JDK 1.8 或更高版本 Gradle 4+...

gitblog_00376的博客 826

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

spring boot快速入门

springboot快速入门,主要讲解springweb基础,控制器基础,常用注解,RESTful API,swagger文档创建,主要是为了之前讲mybatis进行基础知识补充,以及为下面快速入门mybatisplus做铺垫

随便写写 5139

springboot-表单验证Valid|AOP|统一异常处理

@PostMapping(value = &amp;amp;amp;amp;amp;amp;amp;quot;/girls&amp;amp;amp;amp;amp;amp;amp;quot;) public Object addGirl(Girl girl) {//此处不用使用多个@RequestParam(&amp;amp;amp;amp;amp;amp;amp;quot;name&amp;amp;amp;amp;amp;amp;amp;quot;)

橘子味的阳光 3225

Spring Boot入门

Author:Dawn_T17🥥 ​ Why Spring? Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it theworld's most popularJava framework.

2303_80480614的博客 1203
上一篇: Spring Boot快速入门---(三)spring boot的快速连接数据库之spring data jpa以及事务管理
下一篇: 【物联网实训项目】------(一)家庭智慧安防系统之前期项目工作准备
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值