1. 분리
- 입력의 분리
// 년월일을 입력하면 요일을 알려주는 프로그램
@Controller
public class YoilTellerMVC { // http://localhost:8080/ch2/getYoilMVC?year=2021&month=10&day=1
@RequestMapping("/getYoilMVC")
public void main(int year, int month, int day,
HttpServletResponse response) throws IOException {
// 2. 작업
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
char yoil = " 일월화수목금토".charAt(dayOfWeek);
// 3. 출력
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter(); // response객체에서 브라우저로의 출력 스트림을 얻는다.
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println(year + "년 " + month + "월 " + day + "일은 ");
out.println(yoil + "요일입니다.");
out.println("</body>");
out.println("</html>");
}
}
- 출력의 분리
- jsp파일 경로
- yoil.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<P> ${year}년 ${month}월 ${day}일은 ${yoil}입니다. </P>
</body>
</html>
- yoilError.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
잘못된 요청입니다. 년, 월, 일을 모두 올바르게 입력해주세요.
</h1>
</body>
</html>
- 메서드 반환 타입 String - 뷰 이름을 반환
// 년월일을 입력하면 요일을 알려주는 프로그램
@Controller
public class YoilTellerMVC { // http://localhost:8080/ch2/getYoilMVC?year=2021&month=10&day=1
@RequestMapping("/getYoilMVC")
public String main(int year, int month, int day, Model model) throws IOException {
// 1. 유효성 검사
if(!isValid(year, month, day))
return "yoilError";
// 2. 요일 계산
char yoil = getYoil(year, month, day);
// 3. 계산한 결과를 model에 저장
model.addAttribute("year", year);
model.addAttribute("month", month);
model.addAttribute("day", day);
model.addAttribute("yoil", yoil);
return "yoil"; // WEB-INF/views/yoil.jsp
}
private boolean isValid(int year, int month, int day) {
// TODO Auto-generated method stub
return true;
}
private char getYoil(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
return " 일월화수목금토".charAt(dayOfWeek);
}
}
- jsp파일경로 지정 파일(코드 변경 가능)
- 메서드의 반환타입이 없을때 - 맵핑된 URL에 의해 결정됨
- getYoilMVC.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<P> getYoilMVC입니다. </P>
</body>
</html>
- YoilTellerMVC
@Controller
public class YoilTellerMVC { // http://localhost:8080/ch2/getYoilMVC?year=2021&month=10&day=1
@RequestMapping("/getYoilMVC")
public void main(int year, int month, int day, Model model) throws IOException {
// // 1. 유효성 검사
// if(!isValid(year, month, day))
// return "yoilError";
// 2. 요일 계산
char yoil = getYoil(year, month, day);
// 3. 계산한 결과를 model에 저장
model.addAttribute("year", year);
model.addAttribute("month", month);
model.addAttribute("day", day);
model.addAttribute("yoil", yoil);
// return "yoil"; // WEB-INF/views/yoil.jsp
}
private boolean isValid(int year, int month, int day) {
// TODO Auto-generated method stub
return true;
}
private char getYoil(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
return " 일월화수목금토".charAt(dayOfWeek);
}
}
- 메서드의 반환타입이 ModelAndView일때 - Model과 뷰 이름을 반환
@Controller
public class YoilTellerMVC { // http://localhost:8080/ch2/getYoilMVC?year=2021&month=10&day=1
@RequestMapping("/getYoilMVC")
public ModelAndView main(int year, int month, int day) throws IOException {
ModelAndView mv = new ModelAndView();
// 2. 요일 계산
char yoil = getYoil(year, month, day);
// 3. 계산한 결과를 model에 저장
mv.addObject("year", year);
mv.addObject("month", month);
mv.addObject("day", day);
mv.addObject("yoil", yoil);
// 4. 결과를 보여줄 view를 지정
mv.setViewName("yoil");
return mv;
}
}
'Spring' 카테고리의 다른 글
14. 관심사의 분리와 MVC패턴/원리(2) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.03 |
---|---|
13. 관심사의 분리와 MVC패턴/원리(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.02.02 |
11. 관심사의 분리와 MVC패턴/이론 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.01 |
10. 텍스트와 바이너리, MIME, Base64 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.02.01 |
9. HTTP 요청과 응답/이론 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.01 |