YoilTeller 복사해서 YoilTellerMVC 만든다. 

 

입력을 분리하면 HttpServletRequest request 매개변수를 String으로 year, month, day 각 각 받게 된다. 따라서 request 메서드인 request.getParmeter를 사용하지 않아도 된다.

 

Spring은 문자를 숫자로 자동 형변환 하므로 매개 변수를 int형으로 바꿔주고, 작업의 parseInt 메서드를 쓰지 않아도 된다.

코드의 수가 줄어든다.

 

이 상태로 실행시키면

 

500 Error가 발생한다. 당황하지 말고 Error 메시지를 읽어보자.

 

"Ambiguous mapping found."은 @Controller에서 @RequestMapping이 잘못되었을 때 발생하는 오류이다. YoilTeller의 mapping이 "/getYoil"이고 실행하려고 하는 YoilTellerMVC의 mapping도 "/getYoil" 이기 때문에 오류가 발생했다. 따라서 YoilTellerMVC의 mapping을 "/getYoilMVC"로 바꿔주자. 

 

출력되는 것을 볼 수 있다.

 

출력도 별도의 JSP 파일로 빼내자.

 

View의 위치는 'src/main/webapp/WEB-INF/views'에 만든다.

 

${year }을 EL(Expression Language) 한다. 값이 출력될 자리만 만들고, Model 객체를 받으면 이름에 해당하는 값을 꺼내서 응답으로 클라이언트에게 출력된다.

 

YoilTellerMVC에서 출력 코드를 걷어내고 return "yoil" 한 줄을 입력하면 Spring이 자동으로 우리가 만들었던 /WEB-INF/views/yoil.jsp을 실행한다. yoil은 문자열이기 때문에 main 메서드의 반환타입을 void에서 String으로 바꿔야 한다.

 

요일을 계산하는 코드를 메서드로 만들기 위해 해당 코드를 드래그해서 우클릭 -> Refactor -> Extract Method 하면 자동생성한다.

 

getYoil을 문자로 받아야 하기 때문에 위에만 고치고 실행한다.

 

오류는 아닌 듯한데 그렇다고 잘 나온 것 같지도 않다. 인코딩 형식이 맞지 않아서 그렇다.

 

출력은 yoil.jsp로 넘겼으므로 jsp파일 맨 상단에 '<%@ page contentType="text/html;charset=utf-8" %>'을 입력한다.

 

출력이 잘 된다. 인코딩에는 문제가 없다.

 

??? 숫자 어디 감??? jsp 파일은 잘 출력되었으므로 View에는 문제가 없다.

 

Controller에 Model을 만들지 않았다. 따라서 매개변수로 Model 객체를 만들고, addAttribute 메서드를 사용해서 model 객체에 값을 담아준다.

 

잘 출력된다.

+ Recent posts