zoukankan      html  css  js  c++  java
  • SpringBoot进阶之web进阶

    1.表单验证:

    实体类添加:
    @Min(value = 18 ,message = "未成年少女禁止入内!")最小值限制为18,如果小于18则返回message中的信息
    注入校验,获得校验结果信息
    public Girl girlAdd(@Valid  Girl girl , BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
            return  null;
        }
        girl.setCupSize(girl.getCupSize());
        girl.setAge(girl.getAge());
        return girlRepository.save(girl);
    }
    BindingResult 验证不通过时进行返回信息的对象

    2.使用AOP处理请求
    AOP
    将通用逻辑从业务逻辑中分离出来
    使用AOP第一步,添加依赖:
    
    spring-boot-starter-aop

    使用拦截器实例:

    拦截器的改进写法:
    
    为了避免代码重复书写,定义一个公用方法,@Pointcut注解声明切入点
    @Before @After 两注解直接复用该方法切入点
    @Aspect
    @Component
    public class HttpAspect {
        private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);
    
        @Pointcut("execution(public * com.example.project.web.CustomerContorller.*(..))")
        public void log(){
        }
        @Before("log()")
        public void doBefore(){
            logger.info("aaaa");
    
        }
        @After("log()")
        public void doAfter(){
            logger.info("bbbb");
        }
    
    }

    拦截请求:

    @Before("log()")
        public void doBefore(JoinPoint joinPoint) {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = (HttpServletRequest) attributes.getRequest();
            logger.info("url={}", request.getRequestURL());
            logger.info("method={}", request.getMethod());
            logger.info("ip={}", request.getRemoteAddr());
            logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
            logger.info("args ={}", joinPoint.getArgs());
    
            logger.info("111111111111111111111111111111");
        }
    
        @AfterReturning(returning = "object", pointcut = "log()")//获取请求结果的内容
        public void doAfterReturn(Object object) {
            logger.info("response={}", object);
        }
    把请求的返回结果写成工具类:

    3.统一异常处理

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

    业务层直接向外抛异常:

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

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

    4.单元测试:

    三个注解为,
    1. @RunWith(SpringRunner.class)现在要在测试环境中跑,底层使用的是junit测试工具
    2. @SpringBootTest   将启动整个spring工程
    3. @AutoConfigureMockMvc

    mock:仿制 perform:执行
    自动注入后,调用mockMvc.perform(MockMvcRequestBuilders.get("[url]")).andExpect(MockMvcResultMatchers.status().isOk());

    
    
  • 相关阅读:
    ASP.NET Session
    表格导入和导出
    C#根据当前时间获取其他时间
    SuperGridControl全局设置
    无框窗体移动
    窗体在屏幕边缘隐藏
    comboBoxEx
    CROSS JOIN
    supergirdcontrol单元格添加控件
    ADVtree
  • 原文地址:https://www.cnblogs.com/jiliunyongjin/p/7424758.html
Copyright © 2011-2022 走看看