반응형
전체구조
pom.xml
->앞서 게시한 xml방식과 동일
SpringConfigClass.java
package com.springdrill.config;
//web.xml에 해당
import javax.servlet.Filter;
import javax.servlet.FilterRegistration;
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.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
//public class SpringConfigClass implements WebApplicationInitializer{
//
// @Override
// public void onStartup(ServletContext servletContext) throws ServletException {
//
// Spring MVC 프로젝트 설정을 위해 작성하는 클래스의 객체를 생성한다.
// AnnotationConfigWebApplicationContext servletAppContext = new AnnotationConfigWebApplicationContext();
// servletAppContext.register(ServletAppContext.class);
//
// // 요청 발생 시 요청을 처리하는 서블릿을 DispatcherServlet으로 설정해준다.
// DispatcherServlet dispatcherServlet = new DispatcherServlet(servletAppContext);
// ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", dispatcherServlet);
//
// // 부가 설정
// servlet.setLoadOnStartup(1);
// servlet.addMapping("/");
//
// // Bean을 정의하는 클래스를 지정한다
// AnnotationConfigWebApplicationContext rootAppContext = new AnnotationConfigWebApplicationContext();
// rootAppContext.register(RootAppContext.class);
//
// ContextLoaderListener listener = new ContextLoaderListener(rootAppContext);
// servletContext.addListener(listener);
//
// // 파라미터 인코딩 설정
// FilterRegistration.Dynamic filter = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
// filter.setInitParameter("encoding", "UTF-8");
// filter.addMappingForServletNames(null, false, "dispatcher");
// }
//}
public class SpringConfigClass extends AbstractAnnotationConfigDispatcherServletInitializer{
// DispatcherServlet에 매핑할 요청 주소를 셋팅한다.
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/"};
}
// Spring MVC 프로젝트 설정을 위한 클래스를 지정한다.
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {ServletAppContext.class};
}
// 프로젝트에서 사용할 Bean들을 정의기 위한 클래스를 지정한다.
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {RootAppContext.class};
}
// 파라미터 인코딩 필터 설정(한글설정)
@Override
protected Filter[] getServletFilters() {
// TODO Auto-generated method stub
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
return new Filter[] {encodingFilter};
}
}
package com.springdrill.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;
// Spring MVC 프로젝트에 관련된 설정을 하는 클래스, config/servlet-context.xml에 해당
@Configuration
// Controller 어노테이션이 셋팅되어 있는 클래스를 Controller로 등록한다.
@EnableWebMvc
// 스캔할 패키지를 지정한다.
@ComponentScan("com.springdrill.controller")
public class ServletAppContext implements WebMvcConfigurer{
// Controller의 메서드가 반환하는 jsp의 이름 앞뒤에 경로와 확장자를 붙혀주도록 설정한다.
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
WebMvcConfigurer.super.configureViewResolvers(registry);
registry.jsp("/WEB-INF/views/", ".jsp");
}
// 정적 파일의 경로를 매핑한다.
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
WebMvcConfigurer.super.addResourceHandlers(registry);
registry.addResourceHandler("/**").addResourceLocations("/resources/");
}
}
RootAppContext.java
package com.springdrill.config;
import org.springframework.context.annotation.Configuration;
// 프로젝트 작업시 사용할 bean을 정의하는 클래스
@Configuration
public class RootAppContext {
}