当前位置: 首页 > news >正文

五,搭建环境:辅助功能

五,搭建环境:辅助功能

文章目录

  • 五,搭建环境:辅助功能
  • 编写登录失败异常
  • 编写常量类
  • MD5 工具 (加密工具类)
  • 日志配置文件


编写登录失败异常

我们在 demo-module04-util 模块下,创建一个名为:com.rainbowsea.imperial.court.exception的包下,创建一个名为:LoginFailedException 的异常类——> 作为登录异常的处理。

在这里插入图片描述

package com.rainbowsea.imperial.court.exception;public class LoginFailedException  extends RuntimeException {public LoginFailedException() {}public LoginFailedException(String message) {super(message);}public LoginFailedException(String message, Throwable cause) {super(message, cause);}public LoginFailedException(Throwable cause) {super(cause);}public LoginFailedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);}
}

编写常量类

我们在 demo-module04-util 模块下,创建一个名为:com.rainbowsea.imperial.court.utils的包下,创建一个名为:ImperialCourtConst类——> 作为常量类,定义我们项目中所需要的一些常量信息。

在这里插入图片描述

package com.rainbowsea.imperial.court.utils;public class ImperialCourtConst {public static final String LOGIN_FAILED_MESSAGE = "账号、密码错误,不可进宫!";public static final String ACCESS_DENIED_MESSAGE = "宫闱禁地,不得擅入!";public static final String LOGIN_EMP_ATTR_NAME = "loginInfo";
}

MD5 工具 (加密工具类)

我们在 demo-module04-util 模块下,创建一个名为:com.rainbowsea.imperial.court.utils的包下,创建一个名为:MD5Util类——> 作为工具类,定义我们项目中所需要的一些工具方法。

在这里插入图片描述

package com.rainbowsea.imperial.court.utils;import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class MD5Util {/*** 针对明文字符串执行MD5加密** @param source* @return*/public static String encode(String source) {// 1.判断明文字符串是否有效if (source == null || "".equals(source)) {throw new RuntimeException("用于加密的明文不可为空");}// 2.声明算法名称String algorithm = "md5";// 3.获取MessageDigest对象MessageDigest messageDigest = null;try {messageDigest = MessageDigest.getInstance(algorithm);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}// 4.获取明文字符串对应的字节数组byte[] input = source.getBytes();// 5.执行加密byte[] output = messageDigest.digest(input);// 6.创建BigInteger对象int signum = 1;BigInteger bigInteger = new BigInteger(signum, output);// 7.按照16进制将bigInteger的值转换为字符串int radix = 16;String encoded = bigInteger.toString(radix).toUpperCase();return encoded;}
}

日志配置文件

在该 demo-module01-web 模块下的src/main/resources根路径下,创建一个名为logback.xml 的日志配置文件。注意:文件名就是为logback.xml不可以是其他的,必须是这个

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true"><!-- 指定日志输出的位置 --><appender name="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 日志输出的格式 --><!-- 按照顺序分别是:时间、日志级别、线程名称、打印日志的类、日志主体内容、换行 --><pattern>[%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 设置全局日志级别。日志级别按顺序分别是:DEBUG、INFO、WARN、ERROR --><!-- 指定任何一个日志级别都只打印当前级别和后面级别的日志。 --><root level="INFO"><!-- 指定打印日志的appender,这里通过“STDOUT”引用了前面配置的appender --><appender-ref ref="STDOUT" /></root><!-- 专门给某一个包指定日志级别 --><logger name="com.atguigu" level="DEBUG" additivity="false"><appender-ref ref="STDOUT" /></logger></configuration>
  • 对应顺序上一节内容:✏️✏️✏️ 四,搭建环境:表述层-CSDN博客

  • 对应顺序是下一节内容:✏️✏️✏️ 六,业务功能:登录-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 亚信安慧入选2024信创产业白皮书,AntDB荣获数据库卓越品牌
  • 云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本
  • Win11+docker+gpu+vscode+pytorch配置
  • LeetCode——3131.找出与数组相加的整数I
  • Base64在线解码工具
  • three.js 模型高亮效果实现说明(结合react)
  • Java基础之文件字节流
  • OpenCV 读取 MP4 视频
  • MySQL:触发器(Trigger)
  • C# 枚举 扩展方法
  • 【乐吾乐大屏可视化组态编辑器】数据绑定
  • Mac 连接 Synology NAS【Finder】
  • 【C语言篇】自定义类型:联合体和枚举详细介绍
  • 【django升级】django从2.2.6版本升级到3.2.25
  • 【ubuntu20.04 运行sudo apt-get upgrade报错】
  • [nginx文档翻译系列] 控制nginx
  • __proto__ 和 prototype的关系
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Fundebug计费标准解释:事件数是如何定义的?
  • HomeBrew常规使用教程
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • LintCode 31. partitionArray 数组划分
  • opencv python Meanshift 和 Camshift
  • ReactNative开发常用的三方模块
  • Redis的resp协议
  • vue-router 实现分析
  • 聚簇索引和非聚簇索引
  • 模型微调
  • 一文看透浏览器架构
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云服务器如何修改远程端口?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • ###C语言程序设计-----C语言学习(6)#
  • #if 1...#endif
  • (vue)页面文件上传获取:action地址
  • (ZT)出版业改革:该死的死,该生的生
  • (八)Flink Join 连接
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (规划)24届春招和25届暑假实习路线准备规划
  • (九)c52学习之旅-定时器
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (四)模仿学习-完成后台管理页面查询
  • (学习日记)2024.01.09
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)shell调试方法
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)跟我一起学习VIM - The Life Changing Editor