五,搭建環境:輔助功能

Rainbow-Sea發表於2024-08-09

五,搭建環境:輔助功能

@

目錄
  • 五,搭建環境:輔助功能
  • 編寫登入失敗異常
  • 編寫常量類
  • 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部落格

  • 對應順序是下一節內容:✏️✏️✏️