[B -2-7] 스프링 MVC 프로젝트의 기본 구조 1

2019. 9. 29. 12:29Project B (SPMS)/Project B 파트2

반응형

스프링 MVC

 

스프링 MVC는 스프링의 서브 프로젝트중 하나일 뿐이다.

스프링에는 여러가지 서브 프로젝트들이 존재한다.

 

[B-2-6] 까지는 스프링의 코어 설정을 한 것이다.

- RootConfig.class : Spring Core, MyBatis

 

[B-2-7] 부터는 스프링 MVC 프로젝트를 설정한다.

- ServletConfig.class : Spring MVC

 

스프링의 서브 프로젝트 리스트

https://spring.io/projects

 

Spring Projects

The Spring portfolio has many projects, including Spring Framework, Spring IO Platform, Spring Cloud, Spring Boot, Spring Data, Spring Security...

spring.io


서블릿 환경설정 파일 생성 : ServletConfig

 

src/main/java

com.spms.config

ServletConfig.java

 

...더보기
package com.spms.config;

import org.springframework.context.annotation.ComponentScan;
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;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@EnableWebMvc
@ComponentScan(basePackages = {"com.spms.controller"})
public class ServletConfig implements WebMvcConfigurer {
	
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		
		InternalResourceViewResolver bean = new InternalResourceViewResolver();
		bean.setViewClass(JstlView.class);
		bean.setPrefix("/WEB-INF/views/");
		bean.setSuffix(".jsp");
		registry.viewResolver(bean);
	}

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	}
	
}

 

웹 MVC 사용 허용 : @EnableWebMvc

 

컴포넌트 검색 : @ComponentScan

다른 패키지에 작성된 스프링의 빈 객체(Bean)을 인식할 수 있다.

기본 패키지는 컨트롤러로 설정 : com.spms.controller

 

웹 MVC 환경 설정자 : WebMvcConfigurer 인터페이스 구현

스프링 MVC 관련 설정을 메서드로 오버라이드하는 형태를 이용시 사용

 

configureViewResolvers() : 뷰(View) 관련 환경설정 (jsp) 위치

addResourceHandlers() : 뷰(View) 관련 환경설정 (javascript, css) 위치

 

 

위의 환경설정들을 지정한 후에, 환경설정에 적용(환경설정 빈 객체 리턴)한다.

 


웹 환경설정 파일 수정 : WebConfig

 

src/main/java

com.spms.config

WebConfig.java

getServletConfigClasses()

getServletMappings()

...더보기
package com.spms.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() {
		// TODO Auto-generated method stub
		return new Class[] { ServletConfig.class };
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[] { "/" };
	}
}

 

getServletConfigClasses()

서블릿 환경설정 클래스 지정 : ServletConfig.class

 

getServletMappings() 

서블릿 환경설정 URL 매핑 : /

 


웹 MVC 기동 테스트 : http://localhost/

MVC 서버 기동

기본 MVC 테스트가 문제없이 잘 됨을 알 수 있다.

하지만, ? 부분 문자가 깨져있는데, 사실은 한글문자이다.

대책방법은 UTF-8 캐릭터 인코딩 필터를 추가해야 한다.

 


웹 환경설정 파일 수정 (캐릭터 인코딩 필터 추가) : WebConfig 

 

src/main/java

com.spms.config

WebConfig.java

getServletConfigClasses()

 

...더보기
package com.spms.config;

import javax.servlet.Filter;

import org.springframework.web.filter.CharacterEncodingFilter;
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() {
		// TODO Auto-generated method stub
		return new Class[] { ServletConfig.class };
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[] { "/" };
	}

	@Override
	protected Filter[] getServletFilters() {
		// TODO Auto-generated method stub
		CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
		characterEncodingFilter.setEncoding("UTF-8");
		characterEncodingFilter.setForceEncoding(true);
		return new Filter[] { characterEncodingFilter };
	}
}

 

UTF-8 캐릭터 인코딩 필터를 만들어서 환경설정에 적용한다.

 


웹 MVC 기동 테스트 (캐릭터 인코딩 적용) : http://localhost/

 

웹 MVC 기동 테스트

한글 캐릭터까지 문제없이 나오는 것을 알 수 있다.

반응형