Maven 웹 프로젝트에 스프링프레임워크를 적용해 보기로 했습니다. 혼자 해보는거니 될 수 있는 한 최신 버전으로 올려봅니다.
스프링프레임워크를 설정하고 시작하는 방법은 xml 을 사용하는 방법과 Java 클래스를 사용하는 방법이 있습니다. 여기서는 클래스를 사용하는 방법으로 적용해봅니다. "스프링프레임웍의 시동" 을 읽어보시면 도움이 되실것입니다.
앞의 "Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기" 에서 만든 예제에 추가해서 작성합니다. 전체소스는 글 하단에 추가해 두었으니 참고하시가 바랍니다.
1. pom.xml 파일에 프로퍼티를 추가합니다.
프로퍼티는 자주 사용하는 값을 미리 정의해두는 방법입니다. Java 버전은 1.8을 사용하고, 스프링프레임워크 5.1.5.RELEASE 버전을 사용합니다.
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.1.5.RELEASE</org.springframework-version>
</properties>
2. pom.xml 파일에 스프링프레임웍 의존성을 추가합니다.
위에서 정의한 프로퍼티를 이용하여 버전을 지정했습니다. spring-webmvc는 spring-core, spring-context, spring-web, spring-aop, spring-beans, spring-expression에 대해 의존성이 있으므로 이 의존 라이브러리들이 자동으로 포함되어 집니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
3. 스프링 시작 클래스를 만듭니다.
Java 클래스와 Annotation 기반의 설정을 사용합니다. Root 컨텍스트 설정, Web 컨텍스트 설정, *.do 확장자를 처리하는 서블릿 디스패처 설정을 합니다.
package com.tistory.offbyone.init;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
/**
* 스프링프레임워크 시작파일
*/
public class SpringStarter implements WebApplicationInitializer {
/**
* 컨텍스트를 시작한다.
*/
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// Root Context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(com.tistory.offbyone.init.RootContextConfiguration.class);
servletContext.addListener(new ContextLoaderListener(rootContext));
// Web Context
AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
dispatcherContext.register(WebContextConfiguration.class);
// Dispatcher Servlet
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("*.do");
}
}
4. Root 컨텍스트 설정파일 입니다.
이 예제에서는 하는게 없습니다. 다음 글에서 이부분의 좀더 상세한 설정이 나오게 되겠습니다.
package com.tistory.offbyone.init;
import org.springframework.context.annotation.Configuration;
/**
* 루트 컨텍스트 설정파일
*/
@Configuration
public class RootContextConfiguration {
}
5. Web 컨텍스트 설정파일
웹 컨텍스트 설정에서는 컨트롤러를 스캔해서 올리고, 뷰 리졸버를 설정합니다.
package com.tistory.offbyone.init;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* 웹 컨텍스트 설정파일
*/
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.tistory.offbyone.web"})
public class WebContextConfiguration implements WebMvcConfigurer {
/**
* 뷰 리졸버를 설정한다.
* @return
*/
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
}
6. 컨트롤러를 만들어 봅니다.
이 컨트롤러는 단순히 뷰페이지로 보내는 역할만 합니다. http://localhost:8080/mavenweb/main/home.do 을 브라우저에서 요청하면 뷰 리졸버 설정에 따라 "/WEB-INF/jsp/main/home.jsp" 파일이 뷰로 실행됩니다.
package com.tistory.offbyone.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MainController {
@RequestMapping("/main/home.do")
public String home() {
return "main/home";
}
}
7. home.jsp 파일입니다.
별 내용이 없습니다. 호출되는지 확인용 입니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HOME</title>
</head>
<body>
<h2>Hello Home!</h2>
</body>
</html>
8. 실행결과 입니다.
스프링프레임워크가 정상적으로 동작하여 /main/home.do 요청에 대해 /WEB-INF/jsp/main/main.jsp 가 실행되었습니다.
※ 전체소스
'프로그래밍 > 스프링프레임워크' 카테고리의 다른 글
Java Config로 메세지소스(MessageSource) 설정하기(다국어 지원) (0) | 2019.03.19 |
---|---|
스프링프레임워크 Java config로 MyBatis 사용하기 (8) | 2019.03.17 |
Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기 (8) | 2019.03.10 |
Eclipse에서 Maven 웹 프로젝트 만들기 (9) | 2019.03.06 |
JSTL - <c:forEach>, <c:forTokens> 태그 사용법 (8) | 2019.01.11 |