컨트롤러 구현

컨트롤러를 구현한다는 것은 클라이언트의 요청을 처리할 메소드를 구현한다는 것을 뜻한다.

과정은 다음과 같다.
1. @Controller 어노테이션을 클래스에 적용한다.
2. @RequestMapping 어노테이션을 이용해서 처리할 요청 경로를 지정한다.
3. 웹 브라우저의 요청을 처리할 메소드를 구현하고, 뷰 이름을 리턴한다.

++모델++
뷰에서 결과를 보여줄 때 필요한 데이터를 전달하기 위해 사용하는 것이 바로 모델이다.
컨트롤러는 뷰에서 필요로 하는 데이터를 모델에 담아서 전달하고, 뷰는 결과를 생성하는데 필요한 데이터를 모델에서 가져와 사용하게 된다.
컨트롤러는 다양한 방식으로 모델에 뎅터를 담을 수 있는데,
가장 간단한 방법은 Model을 파라미터로 추가하고, Model 파라미터에 데이터를 추가하는 것이다.

Model addAllAttribute(String attrName, Object attrValue)
: 이름이 attrname이고 값이 attrValue인 모델 속성을 추가한다.

Model addAllAttributes(Map<String,?> attributes)
: 맵의 <키, 값> 쌍들을 모델 속성 이름과 값으로 추가한다.

ModelMap 클래스는 Model 인터페이스와 동일한 메소드를 제공하고 있기 때문에, addAtribute()등의 메소드를 그대로 사용할 수 있다.

@RequestMaping을 이용한 요청 매핑

@RequestMapping 어노테이션 : 클라이언트는URL로 요청을 전송하는데, 요청 URL을 어떤 메소드가 처리할지 여부를 결정하는 역할을 한다.
컨트롤러와 메소드에 @RequestMapping 어노테이션을 모두 사용하면, 클래스에 적용한 값과 메소드에 적용한 값을 조합해서 매핑될 경로를 결정한다.
클래스에 @RequestMapping 어노테잇ㄴ을 적용하는 것은 컨트롤러 클래스가 특정 경로를 기준으로 그 하위 경로만을 처리한다는 것을 의미한다.

@Controller
	public class EventController {
	
	@RequestMapping(value="/event/create", method=RequestMethod.POST) //value = 경로 , method = HTTP전송방식
	public String regist(Model model){ //데이터를 담아 뷰에 전달하기위해 Model을 파라미터로 추가.
		
		List<Event> eventList = getOpenedEventList();
		model.addAttribute('eventList', eventList); //데이터를 담아 뷰에 전달하기위해 Model파라미터에 데이터추가
		
		return "member/registered";
	}
}

스프링 MVC 설정 기초

스프링 MVC를 이용하여 웹 어플리케이션을 개발할 때 가장 먼저 해야 할 일!!
스프링 MVC 설정 작성

1. web.xml에 DispatcherServlet 설정
2. web.xml에 캐릭터 인코딩 처리 위한 필터 설정
3. 스프링 MVC 설정
A. HandlerMapping, HandlerAdapter 설정
B. ViewResolver 설정

스프링 MVC 기본 흐름

DispatcherServlet : 클라이언트의 요청을 전달받는다. 컨트롤러에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.

HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정한다.

HandlerAdapter : DispatcherServlet의 처리 요청을 변환해서 컨트롤러에게 전달하고, 컨트롤러의 응답 결과를 DispatcherServlet이 요구하는 형식으로 변환한다. 웹브라우저 캐시 등의 설정도 담당한다.

Controller : 클라이언트의 요청을 처리한 뒤, 결과를 리턴한다. 응답 결과에서 보여줄 데이터를 모델에 담아 전달한다.

ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.

ViewResolver : 컨트롤러의 처리 결과를 보여줄 뷰를 결정한다.

View : 컨트롤러의 처리 결과 화면을 생성한다. JSP나 Velocity 템플릿 파일 등을 이용해서 클라이언트에 응답 결과를 전송한다.

빨강색 네모가 표시된 부분은 직접 구현해주는 부분이다.