본문 바로가기

🌈 백엔드/스프링 MVC

스프링_MVC 패턴 원리 이해하기

반응형
SMALL

 

 

 

[1] MVC 패턴 원리 


(1) 컨트롤러 메서드가 별도로 있는 방법  

 

Controller : modelController를 별도로 설정함 

Model : map 으로 사용 

View : txtView2.txt 를 사용

 

Map 생성

main이 map 주소를 가리킨다 

컨트롤러를 통해 map에 값을 넣는다 

컨트롤러가 map을 가리키고 viewname인 txtView2를 반환하라 한다 

 

view를 읽어서 map에 있는 key , value를 맞춰 출력한다 

 

 

txtView1.jsp 

txtView2.jsp 

어떤 뷰 View를 선택하여 결과 형태를 다르게 출력할수 있다. 

 

 

(2) 정적 값 + Reflection API 이용한 방법 

정적으로 입력된 값을 Reflection API를 이용해서 컨트롤러를 직접 생성하고 메서드 호출한다

기존에 만들어놓은 YoilTellerMVC.java 파일을 가지고 

 

 

 

그 파일의 정보를 가지고 model map에 담아 view jsp로 출력한다

YoilTellerMVC.java 에서 반환하는 yoil.jsp 파일을 읽어온다

 

 

 

(3) 동적 값 + Reflection API 이용한 방법 

값을 동적으로 받아와서 Reflection API를 이용해서 컨트롤러를 직접 생성하고 메서드 호출한다.

 

클라이언트가 입력한 값을 가져올때 원래는 reguest.getParameterMap()으로 가져와야하지만

예시 작업을 위해 Map을 설정하여 값을 넣었다 

 

그 값들은 변할수가 있으며, 그 값을 동적으로 받아와서 저장하는 배열을 만든다. 

 

 

받아온 값들은 paramName / paramType 으로 key / value 로 나눠 입력되며 

원래 형식은 year , month , day , model 이기 때문에 

parameType이 model 일경우 새로운 model을 만들어 넣는다 

 

클라이언트가 입력한 값은 string으로 year, month, day에 입력된 값이 

자동으로 int 타입으로 변경되게끔 함수 메서드를 만든다 

 

 

 

(4) 원격프로그램으로 만들기 

 

@WebServlet 오류 발생 

@WebServlet은 @Controller + @RequestMapping을 합친 애너테이션이며 

Servlet 서블릿은 클래스 단위로만 맵핑이 되기때문에 이렇게 사용한다

 

오류는 maven 설정때문에 발생하였다 

해결방법으로

1. 컴파일을 변경하는 방법

2. 톰캣에 라이브러리를 추가하는 방법

이 있으며 2번으로 해결한다. 

'

@WebServlet 정상 작동확인 

 

서블릿해서는 필수로 빨간박스 구간이 들어가야한다 

 

 

브라우저에서 받은 값을 map에 담고 

YoilTellerMVC.java 파일의 객체를 생성한다 

map의 key, value 값을 읽어온다 

 

 

value 값의 경우 key가 똑같은데 다른 값이 여러개 들어올수 있기때문에 

타입이 배열로 되어있고 , 타입변환할때 배열을 int로 바꾸는 함수를 적용한다 

 

타입 변환 함수 

 

model을 map으로 변환해서 

map의 value 값이 출력되도록 반환한다. 

 

반응형
LIST