![[블로그 만들기] 19. error 구현: 동적 페이지로 만들기](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255B%25EB%25B8%2594%25EB%25A1%259C%25EA%25B7%25B8%2520%25EB%25A7%258C%25EB%2593%25A4%25EA%25B8%25B0%255D%252019.%2520error%2520%25EA%25B5%25AC%25ED%2598%2584%253A%2520%25EB%258F%2599%25EC%25A0%2581%2520%25ED%258E%2598%25EC%259D%25B4%25EC%25A7%2580%25EB%25A1%259C%2520%25EB%25A7%258C%25EB%2593%25A4%25EA%25B8%25B0%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3DCoding_study&w=2048&q=75)
1. 40x.mustache 만들기

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{msg}} : {{status}}</h1>
</body>
</html>
2. DTO에 담아야 함
package shop.mtcoding.blog.board;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import shop.mtcoding.blog.user.User;
import java.util.List;
@RequiredArgsConstructor
@Controller
public class BoardController {
private final HttpSession session; // DI
private final BoardRepository boardRepository; // DI
@PostMapping("board/save") //save 주소 만들기
public String save(BoardRequest.SaveDTO requestDTO, HttpServletRequest request) { // 정보 담아오기
System.out.println(requestDTO); // 정보 받아왔는지 확인하기
// 유효성 검사하기
if(requestDTO.getTitle().length() > 30) {
request.setAttribute("status",400);
request.setAttribute("msg","title의 길이가 30자를 초과해서는 안되요");
return "error/40X"; //
}
return "redirect:/index"; // 인덱스 페이지로 리다이렉션시키기
}
// http://localhost:8080?page=0
@GetMapping({"/", "/board"})
public String index(HttpServletRequest request) {
List<Board> boardList = boardRepository.findAll();
request.setAttribute("boardList", boardList);
return "index";
}
@GetMapping("/board/saveForm") // /board/saveForm Get요청이 옴
public String saveForm() { // session 영역에 접근하기 위한
// 1. session 영역에 sessionUser 키 값에 user 객체가 있는지 체크하기
User sessionUser = (User) session.getAttribute("sessionUser");
// 2. 값이 null이면 로그인 페이지로 리다이렉션
if (sessionUser == null) {
return "redirect:/loginForm";
}
// 3. null이 아니면 /board/saveForm으로 이동
return "board/saveForm";
}
// 상세보기시 호출
@GetMapping("/board/{id}") // 1이 프라이머리키 -> 뭐든 넣어도 실행시키려면 변수화시켜서 {}
public String detail(@PathVariable int id) {
System.out.println("id : " + id);
return "board/detail";
}
}

3. 403 에러 만들기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>권한이 없습니다. 403</h1>
</body>
</html>
Share article