본문 바로가기
카테고리 없음

a_mvc_controller : 기본 설정 1

by 쿡후 2023. 6. 8.
  • Dynamic Web Project 생성

 

  • 자바 버전 변경(11), spring-webmvc추가, 메이븐 업데이트
  <dependencies>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>5.2.22.RELEASE</version>
	</dependency>
  </dependencies>
  • WebConfig생성
  1. 패키지 : com.jafa.config
  2. 클래스 : WebConfig
package com.jafa.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
	
	//스프링 빈 설정 정보
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class[] {RootConfig.class};
	}

	//디스패처 서블릿 설정 정보
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class[] {ServletConfig.class};
	}

	//디스패처 서블릿 매핑 정보
	@Override
	protected String[] getServletMappings() {
		return new String[] {"/"};
	}
}
  • ServletConfig생성
  1. 패키지 : com.jafa.config
  2. 클래스 : ServletConfig
package com.jafa.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@EnableWebMvc //디스패처 설정 정보
@Configuration //스프링 설정 정보 전달
@ComponentScan("com.jafa") //com.jafa 밑의 모든 설정 정보. controller 만들 때 마다 bean등록 하지 않아도 된다.
public class ServletConfig implements WebMvcConfigurer {

	public void configureViewResolvers(ViewResolverRegistry registry) {
		registry.jsp("/WEB-INF/views/", ".jsp"); //등록
	} 
}
  • @ComponentScan
    • ServletConfig에서만 사용 가능
    • ComponentScan을 사용 하면 bean 등록을 안해도 된다.
    • @ComponentScan이 검색 가능 한 빈 
      • @Component
      • @Configuration
      • @Service
      • @Controller
      • @Repository

 

  • HomeController생성
  1. 패키지 : com.jafa.controller
  2. 클래스 : HomeController
package com.jafa.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
	
	@GetMapping("/") //루트 경로
	public String home() {
		return "index"; //ServletConfig에서 설정했던 /WEB-INF/views/index.jsp에 매핑
	}
}
  • 결과 (/WEB-INF/views/index.jsp를 생성하지 않아서 찾을 수 없는 오류)

  • /WEB-INF/views/index.jsp를 생성