博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot快速入门---(四)spring boot的表单验证以及AOP处理请求
阅读量:1887 次
发布时间:2019-04-26

本文共 2656 字,大约阅读时间需要 8 分钟。

一、使用@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@Componentpublic 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)结果展示

 

 

 

 

 

你可能感兴趣的文章
SecureCRT的安装和破解--亲试可用
查看>>
Leetcode--21. Merge Two Sorted Lists--Java
查看>>
Leetcode--26. Remove Duplicates from Sorted Array--Java
查看>>
Java的向上转型和向下转型
查看>>
Java-IO的几种方式的BIO、NIO、AIO
查看>>
创维电视 内存不足 手工清理
查看>>
Oracle 回滚(ROLLBACK)和撤销(UNDO)
查看>>
oracle undo与redo的区别
查看>>
Oracle的高水位线介绍
查看>>
Oracle 10g DBCA建库四个选项的区别------ 一般用途 事务处理 定制数据库数据仓库
查看>>
ora-01658 :无法为表空间USERS 中的段创建INITIAL区
查看>>
(总结)Linux的chattr与lsattr命令详解
查看>>
chattr和lsattr命令
查看>>
数据块(Data Block)原理深入剖析
查看>>
Oracle体系结构
查看>>
Database、User、Schema、Tables、Col、Row等之间的关系
查看>>
深入剖析oracle备份与恢复原理
查看>>
GIS数据库ORACLE的某些参数设置
查看>>
多元化控制文件和重做日志文件
查看>>
信令网
查看>>