MVC 디자인 패턴 만들기
✒️ 2025-05-28 12:58 내용 수정
- MVC Pattern 참고.
MVC 패턴 만들기
- 년도, 월, 일을 입력하면 요일을 알려주는 페이지를 작성한다.
- JavaReflection API 원리 참조 : Inpa dev's 누구나 쉽게 배우는 Reflection API 사용법
- (Control) 입력받은 데이터를 처리할 MVC 클래스 작성
- 각 메소드가 SOLID의 SRP에 따라 각각 하나의 기능만 담당하고 있다.
- main() : 입력받은 데이터를 페이지로 전달
- isValid() : 들어온 값이 유효한지 판단
- getDate() : 들어온 값으로 요일을 계산
package com.nogroup.test;
import java.io.IOException;
import java.util.Calendar;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class DateTellerMVC {
@RequestMapping("/getDate")
// 요일을 알려주는 메소드
public String main(int year, int month, int day, Model model) throws IOException {
if(!isValid(year, month, day)) {
return "dateError"; // 에러 발생 시 연결될 페이지
}
char date = getDate(year, month, day);
model.addAttribute("year", year);
model.addAttribute("month", month);
model.addAttribute("day", day);
model.addAttribute("date", date);
// WEB-INF/views/date.jsp
return "date";
}
// 들어온 값을 확인하는 메소드
private boolean isValid(int year, int month, int day) {
if(year == -1 || month == -1 || day == -1) return false; // 잘못된 날짜 값
return ((1 <= month && month <= 12) && (1 <= day && day <= 31));
}
// 작업 처리를 메소드로 실행
private char getDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, day);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
char date = " 일월화수목금토".charAt(dayOfWeek);
return date;
}
}
- (View) 입력받은 값을 보여줄 JSP 페이지를 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DateTellerMVC</title>
</head>
<body>
<h1>${year}년 ${month}월 ${day}일은 ${date}요일 입니다.</h1>
</body>
</html>
- (View) 에러가 발생했을 때 보여줄 JSP 페이지를 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DateErrorMVC</title>
</head>
<body>
<h1>잘못된 요청입니다. 다시 요청해주세요.</h1>
<h1>year, month, day를 모두 올바른 값으로 입력하셔야 합니다.</h1>
<a href="getDate">뒤로 돌아가기</a> <!-- 임시로 넣어둔 부분 -->
</body>
</html>
-
첫 페이지는 서버 설정에서 기본 페이지로 설정된 페이지로 뜬다.
-
URL을 Control 클래스의
@RequestMapping("/getDate")에서 지정한 내용과 parameter 값으로 변경해주고 접속하면 만들었던 JSP 페이지가 뜬다.
-
만약 입력값이 유효하지 않으면 유효하지 않다고 알려주는 페이지가 뜬다.