에러 페이지와 

 

최종 테스트 qr 페이지

 

버그수정

 

에러 페이지

java

package kr.ganjuproject.controller;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request, Model model) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
        String errorMessage = "알 수 없는 오류가 발생했습니다.";
        int statusCode = 0; // 초기 상태 코드 값 설정

        if (status != null) {
            statusCode = Integer.valueOf(status.toString());

            switch (HttpStatus.valueOf(statusCode)) {
                case NOT_FOUND:
                    errorMessage = "페이지를 찾을 수 없습니다.";
                    break;
                case INTERNAL_SERVER_ERROR:
                    errorMessage = "서버 내부 오류가 발생했습니다.";
                    break;
                case FORBIDDEN:
                    errorMessage = "접근이 금지되었습니다.";
                    break;
                case UNAUTHORIZED:
                    errorMessage = "인증이 필요합니다.";
                    break;
                case BAD_REQUEST:
                    errorMessage = "잘못된 요청입니다.";
                    break;
                case METHOD_NOT_ALLOWED:
                    errorMessage = "허용되지 않는 메소드입니다.";
                    break;
                // 여기에 더 많은 오류 상태를 추가할 수 있습니다.
                default:
                    errorMessage = "예기치 못한 오류가 발생했습니다.";
            }
        }

        model.addAttribute("statusCode", statusCode);
        model.addAttribute("errorMessage", errorMessage);

        // 모든 오류를 'error/errorPage.html' 템플릿을 통해 처리
        return "error/errorPage";
    }
}

 

html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title th:text="${statusCode} + ' 에러'">오류</title>
    <link rel="stylesheet" href="/css/style.css">
    <link rel="stylesheet" href="/css/home/home.css">
    <style>
        h1, .button.home{
           margin: 30px 0;
        }
    </style>
</head>
<body>
<div class="innerBox">
    <div class="container">
        <div class="logo"><img src="/images/logo.svg" alt="logo"></div>
        <h1 th:text="${statusCode} + ' 에러'">오류 제목</h1>
        <p th:text="${errorMessage}">오류 메시지</p>
        <a th:href="@{/}" class="button home">홈으로 돌아가기</a>
    </div>
</div>
</body>
</html>

+ Recent posts