마스터포유(Master4U)
Monday, 17 of January
 

로그인
한글! Win2003 + apache-tomcat 에서 한글 쓰기
관리자  2009-02-26 17:19:52 Hit:2302
링크 #1: http://blog.naver.com/gogojinny80/110036252163

한글! Win2003 + apache-tomcat 에서 한글 쓰기

예전 방식으로는 getByte 가지고 DB 넣을 때 뺄 때 변환해주는 식으로 한글을 깨지지 않게 했지만...

그건 완전 뻘짓 ;;

시스템이 변경되었을 때 그거 다 찾아서 바꾸려면 ㄷㄷㄷ

그래서 나름 신경 쓴다고 변환하는 함수를 공통함수로 빼서 거기에 인자값에 따라 인코딩을 하기도 하고 안하기도 하게 했지만,

그것 역시 뻘짓 ;;;



이걸 정리한다고 해서 어디다가 써먹을런지는 모르겠지만... 일단 정리...



이번에 개발하는 환경은...

OS : Window 2003 Server

DB : Oracle 10g

JAVA : jdk 1.5.x

WAS : Apache-Tomcat 5.x



위의 환경에서 아무 함수의 변환없이 퍼펙트하게 한글이 사용되도록 해보겠다.



1. Apache-Tomcat 설정

- server.xml 설정에 다음과 같은 부분 수정

   (아래 port 가 80인 것은 무시. iis를 죽이고 Apache-Tomcat을 웹서버로 써서 그렇게 된 것임)

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

- server.xml 설정에 다음과 같은 부분 추가

    당근 밑의 경로(kfda.common.EncodingFilter)의 클래스 파일은 그 위치에 있어야함(파일로 첨부~)

      <Host .... >

         .....
<filter>
           <filter-name>Encoding Filter</filter-name>
           <display-name>Encoding Filter</display-name>
           <filter-class>kfda.common.EncodingFilter</filter-class>
           <init-param>
             <param-name>encoding</param-name>
             <param-value>euc-kr</param-value>
           </init-param>
         </filter>

         <filter-mapping>
           <filter-name>Encoding Filter</filter-name>
           <url-pattern>/*</url-pattern>
         </filter-mapping>

         .....

      </Host>



2. Java 파일 작성시

- Bean 으로 쓰이는 파일에는 아무것도 할 것 없음

- Servlet 으로 쓰이는 파일에는 다음과 같이 추가

public class AdminManageServlet extends HttpServlet
{
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
{
  performTask(request, response);
}

public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
{
  performTask( request, response );
}

public void performTask( HttpServletRequest request, HttpServletResponse response )
{
  .....
try
  {
   session = request.getSession( true );

   response.setContentType( "text/html;charset=" + SetEnvCode.SERVLET_CHAR_SET );

   //SetEnvCode.SERVLET_CHAR_SET = "euc-kr" 는 static 으로 선언됨
   request.setCharacterEncoding( SetEnvCode.SERVLET_REQUEST_CHARSET );

   //SetEnvCode.SERVLET_REQUEST_CHARSET = "euc-kr" 는 static 으로 선언됨
   out = response.getWriter(); // <-- 이거 순서 중요!! 반드시 앞의 response 가 설정되고 객체가 생성되어야 함.

  

3. Jsp 파일 작성시

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.util.Vector"%>
<%
request.setCharacterEncoding("euc-kr"); //<-- request 로 파라메타를 받을 게 있는 경우

%>

<html>
<head>
  <title>로그인</title>
  <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">



4. servlet 이나 jsp 안에서 한글 인자값을 get으로 넘길 때에는 반드시 아래의 method를 사용하도록!!

- java.net.URLEncoder.encode(넘길 한글 문자열 혹은 변수, "euc-kr");



5. java 컴파일시 옵션

- javac -encoding euc-kr *.java



6. Oracle이랑 OS단에는 해줄건 없다.



단... 환경이 바뀌면 어떻게 될지는 안해봤다.

또 저렇게 하면 되겠지.







본문인쇄본문메일발송
돈받고 뭐 그런거 아니구여 3번이상 제대로 오르가즘 느끼게 해줄수 있는분만 쪽지 주세요
Apache Module Index [1]
Copyright 1999-2019 Zeroboard / skin by ChanBi