-
[Spring] 간단한 웹 MVC 프로젝트Spring 2019. 5. 12. 23:07
메이븐과 JSP를 사용하여 간단한 스프링 웹 MVC 프로젝트를 작성한다.
maven 프로젝트를 생성
- 프로젝트 구조
~/webmvc$ tree . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ ├── RootConfig.java │ │ │ ├── WebConfig.java │ │ │ ├── WebInitializer.java │ │ │ └── controller │ │ │ └── HomeController.java │ │ ├── resources │ │ └── webapp │ │ └── WEB-INF │ │ └── views │ │ └── home.jsp │ └── test │ └── java │ └── HomeControllerTest.java
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tistroy.hilucky</groupId> <artifactId>web-mvc</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.19.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.14.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> </project>
DispatcherServlet 설정
- AbstractAnnotationConfigDispatcherServletInitializer를 상속
WebInitializer.java
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] { WebConfig.class }; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }
- WebInitializer#getRootConfigClasses : ContextLoaderListener가 생성한 애플리케이션 컨텍스트를 설정하는 빈으로 데이터 계층이나 백엔드를 구동하는데 사용되는 빈들에 대한 정의
- WebInitializer#getServletConfigClasses : DispatcherServlet의 애플리케이션 컨텍스트에서 사용되는 빈들에 대한 정의
- WebInitializer#getServletMappings의 "/" 매핑은 애플리케이션으로 오는 모든 요청을 처리
WebConfig.java
@Configuration @EnableWebMvc @ComponentScan("controller") public class WebConfig extends WebMvcConfigurerAdapter { @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } }
- @EnableWebMvc
- @ComponentScan : controller 디렉토리 아래에 컴포넌트들이 스캔될 수 있도록 설정
- WebConfig#viewResolver : /WEB-INF/views/home.jsp 란 파일을 찾을 수 있도록 뷰 리졸버를 등록
컨트롤러 설정
HomeController.java
@Controller @RequestMapping("/") public class HomeController { @RequestMapping(method = RequestMethod.GET) public String home() { return "home"; } }
- 뷰 이름은 home을 반환
'Spring' 카테고리의 다른 글
[Spring] 스프링 REST서버에서 에러를 처리하는 방법 (0) 2019.06.03 [Spring] @Resource, @Inject, @Autowired (0) 2019.05.26 [Spring] 스프링 웹 MVC 개요 (0) 2019.05.11 [Spring] 자바 코드로 설정 가능한 빈 의존성 주입 (0) 2019.05.11 [Spring] IntelliJ에서 SpringBoot 프로젝트 생성하기 (0) 2019.05.11 댓글