반응형

@notepad_jj2

츄르사려고 코딩하는집사입니다.


스프링 프레임워크(Spring Framework)의 MVC 패턴

스프링 프레임워크(Spring Framework)에서는 MVC(Model - View - Controller) 패턴을 사용하고 있습니다.

MVC(Model - View - Controller)는 사용자의 인터페이스와 비지니스 로직 구현 및 제어를 하는데 사용되고 있습니다. 이 MVC(Model - View - Controller)는 사용자 관점에서 보는 화면과 비지니스 로직을 구분하는 것이 가장 중요합니다.

 

여기서, MVC(Model - View - Controller)의 사용자 관점에서 보는 화면은 View 즉, 개발을 하는데 *.jsp 이며, MVC(Model - View - Controller)의 비지니스 로직은 Model *.java 단에서 service 로직을 구현하고 있습니다. 여기서, Controller가 이 화면(View)과 비지니스 로직(Model)을 연결시켜 주는 Routing 역할을 해주고 있습니다.


스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)

스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)는 사용자가 화면(VIEW) 단에서 입력이나 어떤 이벤트를 했을 경우, 그 이벤트에 맞는 화면(VIEW)이나 비지니스 로직(MODEL)을 실행할 수 있도록 업데이트를 해주도록 하는 역할을 하고 있습니다.

 

즉, 스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 역할은 아래와 같습니다.

 

1. Data receive

2. Interpret

3. Validate input data

4. Update View

5. Modify Model

 

단순히 말하자면, 스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 역할은 Model과 View를 이어주는 다리 역할이라고 보면 된다.

 


스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 생성(@Controller 어노테이션)

스프링 프레임워크(Spring Framework)에서 컨트롤러(Controller)는 @Controller 어노테이션을 추가하여 사용합니다.

이 @Controller 어노테이션은 어노테이션이 적용된 클래스를 컨트롤러(Controller)임을 나타내고, 자동으로 bean이 등록되어 @Controller 어노테이션이 적용된 클래스를 Controller로 사용할 수 있습니다.

 

@Controller 어노테이션을 사용하려면, 아래의 코드를 import하면 된다.

import org.springframework.stereotype.Controller;

 

위의 코드를 import 하려면 spring-context-x.x.x.RELEASE.jar 파일이 있어야 한다.

 

@Controller
public class Test_Controller extends BaseController {
	
}

 

위의 코드처럼, 컨트롤러 클래스를 1개 만들어 그 위에 @Controller 어노테이션을 추가하면 됩니다.


스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 라우팅(Routing)(@RequestMapping 어노테이션)

@Controller 어노테이션을 사용하여 만들어진 컨트롤러 클래스에 이제, 라우팅(Routing)을 할 수 있도록, 요청 URL에 대해 해당하는 메소드를 매핑해줄 수 있도록 하기 위해 @RequestMapping 어노테이션을 사용합니다.

 

여기서 매핑에 관한 것은 스프링 프레임워크(Spring Framework)의 HandlerMapping이라는 클래스 파일에 정의되어 있습니다.

 

@RequestMapping 어노테이션을 사용하려면, 아래의 코드를 import하면 된다.

import org.springframework.web.bind.annotation.RequestMapping;

 

위의 코드를 import 하려면 spring-web-x.x.x.RELEASE.jar 파일이 있어야 한다.

 

@Controller
public class Test_Controller extends BaseController {
	
	@RequestMapping("/a/b/json/test.*")
	public String test(HttpServletRequest request, Map model) throws SQLException{
		
		return JSON_VIEW;
	}
}

 

위의 코드처럼, 컨트롤러 클래스를 1개 만들어 클래스 안에 메소드를 만들고, 그 위에 @RequestMapping 어노테이션을 추가하고, 호출 URL을 넣어주면 됩니다.

 

즉, @RequestMapping 어노테이션은 @RequestMapping("/a/b/json/test.*") 에서 /a/b/json 경로와 해당하는 컨트롤러와 매핑을 할 수 있도록 해주는 기능을 한다.

그래서, /a/b/json 경로에 있는 test라는 이름의 모든 확장자가 호출을 하면 test라는 메소드가 /a/b/json 경로를 맡게 되고, 이 메소드를 타서 비지니스 로직을 타게 되어 JSON_VIEW라는 값을 리턴하게 된다.


스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 리턴(Return)

아래의 컨트롤러 클래스 코드를 보면 test라는 Method 안에 return이라는 부분이 있다.

이 return은 VIEW에서 호출하여 그에 맞는 비지니스 로직을 타게 되고, JSON_VIEW로 리턴을 한다.

여기서 return을 하게 되면, 스프링 프레임워크(Spring Framework)에서의 ViewResolver를 통해 비지니스 로직의 결과를 출력할 뷰(VIEW)와 객체를 전달할 ModelAndView를 DispatcherServlet에 리턴합니다.

 

즉, DispatcherServlet은 ViewResolver를 호출하여 뷰(VIEW)와 ModelAndView를 리턴받습니다.

 

https://yongku.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring-MVCModel-View-Controller-%ED%8C%A8%ED%84%B4

 

스프링(Spring) MVC(Model-View-Controller) 패턴

츄르사려고 코딩하는 코집사입니다. 1. 스프링(Spring) MVC(Model-View-Controller) 패턴 - MVC 패턴은 Model, View, Controller로 총 3가지 영역으로 분리를 한다. - MVC 패턴을 사용하는 이유는 유지보수가..

yongku.tistory.com

 

@Controller
public class Test_Controller extends BaseController {
	
	@RequestMapping("/a/b/json/test.*")
	public String test(HttpServletRequest request, Map model) throws SQLException{
		
		return JSON_VIEW;
	}
}

 

그래서, 스프링 프레임워크(Spring Framework)의 컨트롤러(Controller)의 Return은 viewResolver를 이용한다. viewResolver 같은 경우는 servlet-*.xml에 정의되어 있다.

 

그래서 servlet-*.xml에 들어가면, bean으로 viewResolver가 등록되어 있다.

<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="order" value="2" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
</bean>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기