- 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생성
- 패키지 : com.jafa.config
- 클래스 : 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생성
- 패키지 : com.jafa.config
- 클래스 : 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생성
- 패키지 : com.jafa.controller
- 클래스 : 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를 생성