<post 방식의 한글 처리>

새로운 jsp 페이지를 하나 만든다. - han.jsp

텍스트 입력창과 전송 버튼을 만든다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%String cp = request.getContextPath(); %>




Insert title here


사용자 삽입 이미지

이제 HanServlet 에서 doPost 메소드를 만들어 준다.

package han;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HanServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = request.getParameter("name");
		
		byte[] b = name.getBytes("iso-8859-1");
		name = new String(b, "euc-kr");
		
		response.setCharacterEncoding("euc-kr");
		response.setContentType("text/html; charset=euc-kr");
		
		PrintWriter pw =  response.getWriter();
		pw.write(name);
		System.out.println("#파라메터 값은 "+name);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = request.getParameter("name");
		PrintWriter pw = response.getWriter();
		pw.write(name);
		System.out.println("파라메터 값은 "+name);
	}
}

이렇게 하면 브라우저에서는 한글이 나올지라도 콘솔창에서는 한글이 깨진다.

사용자 삽입 이미지

여기서 request 에 대한 한글처리는

request.setCharacterEncoding("euc-kr");

만해주면 된다.

get 방식은 iso-8859-1 로 들어온것을 byte 단위로 쪼개었다가 다시 재조합하는 과정을 거치는데 반해

byte[] b = name.getBytes("iso-8859-1");

name = new String(b, "euc-kr");

post 방식에서는 request.setCharacterEncoding("euc-kr"); 한줄로 간단하게 처리가 됨을 알 수 있다.

더불어 파라메터 값이 하나가 아니고 여러개일때 get방식에서는 파라메터 하나하나를

각각 처리 해주어야하지만

post 방식에서는 저 한줄만으로 모두 처리가 되므로 아주 편리하다.

package han;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HanServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = request.getParameter("name");
		
		byte[] b = name.getBytes("iso-8859-1");
		name = new String(b, "euc-kr");
		
		response.setCharacterEncoding("euc-kr");
		response.setContentType("text/html; charset=euc-kr");
		
		PrintWriter pw =  response.getWriter();
		pw.write(name);
		System.out.println("#파라메터 값은 "+name);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("euc-kr");
		
		String name = request.getParameter("name");
		PrintWriter pw = response.getWriter();
		pw.write(name);
		System.out.println("파라메터 값은 "+name);
	}
}

실행하여 보면...

콘솔창에는 한글이 잘나오고 브라우져에서는 아직 response에대한 처리를 하지 않았기때문에

깨져나옴을 알 수 있다.

사용자 삽입 이미지

사용자 삽입 이미지

이제 response 에 대한 한글처리를 해주면 완성이다.

package han;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HanServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = request.getParameter("name");
		
		byte[] b = name.getBytes("iso-8859-1");
		name = new String(b, "euc-kr");
		
		response.setCharacterEncoding("euc-kr");
		response.setContentType("text/html; charset=euc-kr");
		
		PrintWriter pw =  response.getWriter();
		pw.write(name);
		System.out.println("#파라메터 값은 "+name);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("euc-kr");
		
		response.setCharacterEncoding("euc-kr");
		response.setContentType("text/html; charset=euc-kr");
		
		String name = request.getParameter("name");
		PrintWriter pw = response.getWriter();
		pw.write(name);
		System.out.println("파라메터 값은 "+name);
	}
}

실행을 하여 보면....

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

콘솔창과 브라우져 둘다 잘 됨을 알 수 있다.

get 방식에 비해 post 방식은 간단하고

보안적으로 비교적 좋고....

한번에 보낼수 있는 파라메터 값의 용량 자체가 get 방식은 한계가 있고, post 방식은 한계가 없다.

특정 페이지의 즐겨찾기를 지원하고 싶은경우에는 특정페이지에 필요한 파라메터가

주소창에 있어야하므로 get 방식을 이용....

정리하자면....

get 방식은 파라메터가 http 메시지의 header 부분에 담겨서 전송되고

post 방식은 파라메터가 http 메시지의 body 부분에 담겨서 전송된다.

사용자 삽입 이미지

그렇기 때문에 post 방식은 메소드 하나만 호출하면 파라메터가 몇개든 처리가 되는것이고

(request.setCharacterEncoding("euc-kr");)

get 방식은 주소에 이어서 나오는 파라메터들을 각각 따로따로 처리를 하여주어야한다.

05 2, 2009 06:00 05 2, 2009 06:00
iamback 이 작성.

Trackback URL : http://pippen80.cafe24.com/trackback/161

Trackback RSS : http://pippen80.cafe24.com/rss/trackback/161

Trackback ATOM : http://pippen80.cafe24.com/atom/trackback/161


« Prev : 1 : ... 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : 123 : ... 251 : Next »