1.表单验证:

  1. 实体类添加:
  2. @Min(value = 18 ,message = "未成年少女禁止入内!")最小值限制为18,如果小于18则返回message中的信息
  3. 注入校验,获得校验结果信息
  1. public Girl girlAdd(@Valid Girl girl , BindingResult bindingResult){
  2. if(bindingResult.hasErrors()){
  3. System.out.println(bindingResult.getFieldError().getDefaultMessage());
  4. return null;
  5. }
  6. girl.setCupSize(girl.getCupSize());
  7. girl.setAge(girl.getAge());
  8. return girlRepository.save(girl);
  9. }
  1. BindingResult 验证不通过时进行返回信息的对象
  2.  
  3. 2.使用AOP处理请求
  1. AOP
  2. 将通用逻辑从业务逻辑中分离出来
  1. 使用AOP第一步,添加依赖:
  2.  
  3. spring-boot-starter-aop

  1. 使用拦截器实例:

  1. 拦截器的改进写法:
  2.  
  3. 为了避免代码重复书写,定义一个公用方法,@Pointcut注解声明切入点
  4. @Before @After 两注解直接复用该方法切入点
  1. @Aspect
  2. @Component
  3. public class HttpAspect {
  4. private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);
  5.  
  6. @Pointcut("execution(public * com.example.project.web.CustomerContorller.*(..))")
  7. public void log(){
  8. }
  9. @Before("log()")
  10. public void doBefore(){
  11. logger.info("aaaa");
  12.  
  13. }
  14. @After("log()")
  15. public void doAfter(){
  16. logger.info("bbbb");
  17. }
  18.  
  19. }

拦截请求:

  1. @Before("log()")
  2. public void doBefore(JoinPoint joinPoint) {
  3. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  4. HttpServletRequest request = (HttpServletRequest) attributes.getRequest();
  5. logger.info("url={}", request.getRequestURL());
  6. logger.info("method={}", request.getMethod());
  7. logger.info("ip={}", request.getRemoteAddr());
  8. logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
  9. logger.info("args ={}", joinPoint.getArgs());
  10.  
  11. logger.info("111111111111111111111111111111");
  12. }
  13.  
  14. @AfterReturning(returning = "object", pointcut = "log()")//获取请求结果的内容
  15. public void doAfterReturn(Object object) {
  16. logger.info("response={}", object);
  17. }
  1. 把请求的返回结果写成工具类:

3.统一异常处理:

  1. 自定义异常类:为什么要继承,因为spring只对RunTimeException进行事务回滚

  1. 业务层直接向外抛异常:

  1. 自定义异常处理类:遮盖部分是getMessage()

  1. 自定义枚举类,统一异常的管理:
  2.  
  3. 没有set方法哦,因为不需要set

4.单元测试:

  1. 三个注解为,
  2. 1. @RunWith(SpringRunner.class)现在要在测试环境中跑,底层使用的是junit测试工具
  3. 2. @SpringBootTest 将启动整个spring工程
  4. 3. @AutoConfigureMockMvc
  5.  
  6. mock:仿制 perform:执行
  1. 自动注入后,调用mockMvc.perform(MockMvcRequestBuilders.get("[url]")).andExpect(MockMvcResultMatchers.status().isOk());

  1.  

SpringBoot进阶之web进阶的更多相关文章

  1. 2小时学会spring boot 以及spring boot进阶之web进阶(已完成)

    1:更换Maven默认中心仓库的方法 <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirr ...

  2. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  3. XCTF攻防世界web进阶练习—mfw

    XCTF攻防世界web进阶练习-mfw题目为mfw,没有任何提示.直接打开题目,是一个网站 大概浏览一下其中的内容,看到其中url变化其实只是get的参数的变化查看它的源码,看到有一个?page=fl ...

  4. C1 能力认证——Web进阶

    C1 能力认证--Web进阶 DOM节点操作-上 名称 描述 getElementById() 获取带有指定id的节点 getElementsByTagName() 获取带有指定标签名的节点集合 qu ...

  5. 攻防世界web进阶题—unfinish

    攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...

  6. 攻防世界web进阶题—bug

    攻防世界web进阶题-bug 1.打开题目看一下源码,没有问题 2.扫一下目录,没有问题 3.查一下网站的组成:php+Apache+Ubuntu 只有登录界面 这里可以可以想到:爆破.万能密码.进行 ...

  7. Python:什么是进阶,如何进阶?

    目录 Python:什么是进阶,如何进阶? 1. 什么是进阶? 2. 如何进阶? 3. 除此之外呢? Python:什么是进阶,如何进阶? 1. 什么是进阶? 一门编程语言的基础部分,往往非常简单.如 ...

  8. springboot情操陶冶-web配置(九)

    承接前文springboot情操陶冶-web配置(八),本文在前文的基础上深入了解下WebSecurity类的运作逻辑 WebSecurityConfigurerAdapter 在剖析WebSecur ...

  9. springboot情操陶冶-web配置(七)

    参数校验通常是OpenApi必做的操作,其会对不合法的输入做统一的校验以防止恶意的请求.本文则对参数校验这方面作下简单的分析 spring.factories 读者应该对此文件加以深刻的印象,很多sp ...

随机推荐

  1. [BUG]数据库日期格式, 到页面是毫秒值

    springboot 配置文件

  2. AOP记录方法的执行时间

    作用AOP监控方法的运行时间如下: @Component @Aspect public class LogAop { private Logger log = LoggerFactory.getLog ...

  3. JS之鼠标改变img

    代码用途: 通过点击图片,来改变图片内容 代码: <!DOCTYPE html> <html> <body> <script> function cha ...

  4. 百练6376-二维数组右上左下遍历-2015正式C题

    C:二维数组右上左下遍历 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺 ...

  5. 利用selenium模拟登录webqq

    from selenium import webdriver import selenium.webdriver.support.ui as ui import time opt = webdrive ...

  6. [LeetCode&Python] Problem 1: Two Sum

    Problem Description: Given an array of integers, return indices of the two numbers such that they ad ...

  7. Gym .101933 Nordic Collegiate Programming Contest (NCPC 2018) (寒假gym自训第四场)

    (本套题算是比较温和吧,就是罚时有点高. B .Baby Bites 题意:给出一个婴儿给出的数组,有一些数字听不清楚,让你还原,问它是否是一个从1开始的一次增加的数组. 思路:从左往右依次固定,看是 ...

  8. 20155219 2016-2017-2 《Java程序设计》第6周学习总结

    20155219 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 串流设计 1.串流:Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对 ...

  9. xdoj 1237 (贪心+逆向思维)

    提示:  当有的元素分裂的同时,其他元素也可以+1 分析: 逆向思维,把当前数列变成一个0: 相应得操作相反: 每个元素减1 相同得两个元素可以合并 设数列中最大的数是max,则一共需要减max次才可 ...

  10. HDU4328 Cut the cake(动规:最大子矩形问题/悬线法)

    题目链接:传送门 题目大意: 给出N*M的字符矩阵(由字符B/R组成),求符合下图条件的子矩阵的最大周长. 1 ≤ N,M ≤ 1000. 思路: 悬线法. #include <iostream ...