설치&설정 관련/Spring Framework

[Spring-3]UTF-8 Filter 적용 및 ViewResolver 설정

lahuman 2014. 10. 20. 17:54
728x90

본 포스팅은 SLF4j + LogBack 에서 UTF-8 Encoding Filter와 ViewResolver 설정을 추가하는 내용입니다.

GIT 주소 : https://github.com/lahuman/SpringBoot.Sample


UTF-8 Filter 설정 이유


각 서버의 환경이 다르기 때문에 A 서버에서 문제없었던 한글 문제가 B 서버에서 이용시 깨지는 현상이 발생 할 수 있다.

따라서 어떠한 환경에서든, 하나의 Encoding을 사용하는 것을 추천하며, 각 request와 response마다 설정할 필요 없이 Filter에 설정을 하는 방법이 추천한다.

참고 URL : http://dertompson.com/2007/01/29/encoding-filter-for-java-web-applications/


ViewResolver란?


사용자에게 결과를 랜더링하여 보여주기 위하여 사용한다.

참고 URL : http://isstory83.tistory.com/117


준비 사항

  • JDK 1.6 이상
  • Gradle 1.11 이상
  • IntelliJ


UTF-8 Filter 적용 및 ViewResolver 설정


1. UTF-8 Filter 설정

Application class 에 CharacterEncodingFilter 등록 한다.



    @Bean
    public CharacterEncodingFilter characterEncodingFilter() {
        final CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return characterEncodingFilter;
    }



참고 URL : http://emflant.tistory.com/97


2. ViewResolver 설정

우선 WEB 관련 디렉토리를 생성한다. 

가장 많이 이용하는 webapp/WEB-INF로 디렉토리를 생성하였다.



위와 같이 샘플 jsp파일을 생성한다. ViewResolver에 위치로 "/WEB-INF/views/"


그리고 사용할 ViewResolver를 등록한다.



    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }


TIP-1 : JSP 파일을 찾지 못할 경우

jsp 파일을 찾지 못하는 문제가 발생할 경우, 다음과 같이 처리 할 수 있다.

Application class에서 WebMvcConfigurerAdapter를 extends(상속) 한다.



@EnableWebMvc
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application  extends WebMvcConfigurerAdapter {
....


이후 다음과 같이 설정한다.



 @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

XML 이용시 사용하는 다음 태그와 같은 의미 이다.

<!-- This tag allows for mapping the DispatcherServlet to "/" -->

<mvc:default-servlet-handler/>

참고 URL : http://www.luckyryan.com/2013/02/07/migrate-spring-mvc-servlet-xml-to-java-config/


TIP-2 : JSP 데이터가 그대로 표출될 경우

이문제는 Spring-boot를 사용할 경우 기본적으로 tomcat-embed-jasper 가 dependencie 되지 않아 발생하는 문제 이다.

간단하게 gradle에 다음과 같이 추가 해준다.



compile('org.apache.tomcat.embed:tomcat-embed-jasper:8.0.14')


3. 테스트

테스트를 위해, 기존에 사용했던 HelloController에 다음과 같이 메소드를 추가 한 후 서버를 기동하여 접속 테스트를 한다.


    @RequestMapping("/test.do")
    public String helloWorld(){
        return "test";
    }









728x90