Spring framework 프로젝트 UTF-8 설정.

ITWeb/개발일반 2012. 3. 13. 18:38
mybatis 랑 hibernate 로 작업 하면서.. insert 하다.. 한글이 다 깨져서 DB 에 들어가길래.. 설정 점검 차원에서 article 공유 합니다.

[참고사이트]

[기본]

- eclipse 설정
- web.xml
- servlet-context.xml
- DB 설정
- WAS 나 Web Server 설정 



[참고사이트 글 스크랩]

1. Tomcat 및 서블릿 컨테이너 encoding 설정


$CATALINA_HOME/conf/server.xml (이클립스 IDE를 사용한다면 Servers폴더 밑에 server.xml)을 수정한다.

Connector에 URIEncoding="UTF-8" 을 추가한다.



2. web.xml에 encoding filter를 만든다.




filter-class : org.springframework.web.filter.CharacacterEncodingFilter


3. ViewResolver의 property 속성중에 contentType을 UTF-8로 추가한다.


4. JSP페이지의 contentType을 UTF-8로 설정한다. 그리고 HTML의 content을 UTF-8로 설정한다.


 

 

 

==========================================================================================================================
==========================================================================================================================

 

 

개발을 하다보면 캐릭터셋문제로 골머리를 앓는 경우가 많이 있다.  필자는 그래서 신규로 프로젝트를 시작할 경우 아예 모든 환경을 UTF-8로 셋팅해 버린다. 물론 UTF-8까지 필요가 있을까 하는 생각을 할 수도 있지만 나중에 다국어환경을 고려해도 아예 UTF-8로 시작하는게 나쁜 방법은 아닌것 같다.
다음은 UTF-8로 개발환경을 셋팅하는 방법이다.

1. 이클립스의 Content type을 UTF-8로 설정
   - 이렇게 설정하면 해당하는 type을 파일로 저장할 때 UTF-8형식으로 저장하게 된다.



2. Workspace의 Text file encoding을 UTF-8로 선택
   - 이렇게 설정해야 svn의 소스비교시 캐릭터셋이 깨지는 문제를 막을 수 있다.



3. 데이터베이스 인스턴스를 UTF-8형태로 생성
  - Mysql같은 경우 아래와 같은 방식으로 생성하면 된다.

CREATE DATABASE database_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


4. web.xml에 아래와 같이 인코딩 필터 셋팅
  - 서블릿과 통신할 때 데이터를 주고 받는 것에 대한 인코딩을 설정하는 부분이다.

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
  </filter> 
  <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping> 
</filter>


5. 톰캣설치디렉토리의 /conf/server.xml 에 URIEncoding 항목 추가
  - WAS와 get방식으로 데이터를 주고받는 것에 대한 인코딩 설정부분이다.

<Connector port="8080" URIEncoding="UTF-8" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />


6. JSP파일의 최상단에 UTF-8 directive 추가
  - JSP컴파일시 사용할 인코딩을 설정하는 부분이다.

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>


7. JSP파일의 meta태그에 UTF-8추가
  - 브라우저에서 인식할 캐릭터셋을 설정하는 부분이다.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>


8. 메이븐을 쓴다면 다음과 같이 plugin에 UTF-8 설정을 추가해 준다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
                <charset>UTF-8</charset>
                <docencoding>UTF-8</docencoding>
                <encoding>UTF-8</encoding>
                <quiet>true</quiet>
        </configuration>
</plugin>     
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-pmd-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <sourceEncoding>utf-8</sourceEncoding>
    <targetJdk>1.5</targetJdk>
    <minimumTokens>10</minimumTokens>
  </configuration>
</plugin>

 
: