Spring - 스프링 MVC 기초

MVC란?

Model View Controller의 약자이다.

  • 모델, Model
    애플리케이션의 정보, 데이터를 나타내고 이는 데이버테이스, 정의한 상수, 초기화값, 변수 등을 뜻한다. 그리고 데이터, 정보들의 가공을 책임지는 컴포넌트를 말한다.
  • 뷰, View
    데이터 및 객체의 입력 그리고 출력을 담당하는 부분으로서 사용자 인터페이스 요소를 나타낸다. 즉, 사용자들이 볼 수 있는 화면이다.
  • 컨트롤러, Controller
    사용자가 데이터를 클릭하고, 수정하는 것에 대해 일어나는 이벤트드ㅡㄹ을 처리하는 부분을 뜻한다.

스프링 MVC

스프링은 MVC 프레임워크를 지원한다.

스프링을 이용해서 웹 어플리케이션을 개발하는데 여러 의존이 필요하여 pom.xml에서 몇가지 의존을 설정해야한다.

javax.servlet-api, javax.servlet.jsp-api, jstl, spring-webmvc

스프링 MVC를 위한 설정

스프링 MVC를 실행하는데 있어 최소한의 설정이 있다.

  • 스프링 MVC의 주요 설정(HandlerMapping, ViewResolver 등)
  • 스프링의 DispatcherServlet 설정
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer{
	
	 @Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}
	 
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		registry.jsp("/WEB-INF/view/", ".jsp");
	}
}
  • @EnablerWebMvc 어노테이션은 스프링 MVC 설정을 활성화하고 스프링 MVC를 사용하느데 필요한 다양한 설정을 생성한다.

  • WebMvcConfigurer 인터페이스는 스프링 MVC의 개별 설정을 조정할 때 사용한다.

  • configureDefaultServletHandling() 메서드는 인터페이스에 정의된 메서드로 디폴트 서블릿과 관련된 설정을 조정한다.

  • configureViewResolvers() 메서드는 ViewResolver와 관련된 설정을 조정한다.

web.xml 파일에 DispatcherServlet 설정

스프링 MVC가 웹 요청을 처리하려면 DispatcherServlet을 통해서 웹 요청을 받아야한다. 이를 위해 web.xml 파일에 DispatcherServlet을 등록한다.

코드구현에 필요한 사항들

  • @Controller 어노테이션
    해당 어노테이션을 적용한 클래스는 스프링 MVC에서 컨트롤러로 사용한다.
  • @GetMapping 어노테이션
    해당 어노테이션은 메서드가 처리할 요청 결로를 지정한다.
  • @RequestParam 어노테이션은 HTTP 요청 파라미터의 값을 메서드의 파라미터로 전달할 때 사용된다.
@Controller
// Controller 어노테이션으로 스프링 MVC에서 컨트롤러로 사용한다.
public class HelloController {
	
	@GetMapping("/hello") // 메서드가 처리할 요청 결로를 지정
	public String hello(Model model,
			@RequestParam(value = "name", required = false) String name) {
		
		model.addAttribute("greeting", "안녕하세요, " + name);
		return "hello";
	}
}
  • addAttribute()
    "greeting"이라는 모델 속성에 값을 설정한다. JSP 파일에서 해당 속성을 이용하여 값을 출려한다.

위에서 컨트롤러를 작성했다면 이에 대한 Bean 객체를 생성해야 하기에 Config 클래스를 생성해 Bean으로 등록한다.

0개의 댓글