POST방식은 패킷 내부에 데이터를 포함하여 전달하는 방식이다. 따라서 JSP 작성시
GET방식처럼
<%@ page language="java" contentType="text/html; charset=EUC-KR" %>
위 방법(지시어에 한글처리를 한다고 선언하는 방법)처럼 할 수 있는것이 아닌,
service() 메소드의 매개변수인 HttpServletRequest 타입의 request라는 객체변수에
메소드를 사용하여 한글처리를 해야 한다.
ex) <% request.setCharacterEncoding("EUC-KR"); %>
하지만 이 POST방식에서의 한글처리 방법은 매번 JSP 페이지마다 위의 코드를 삽입해야 한다는
번거로움이 존재한다. 이때 이러한 번거로움을 덜기 위해서 Filter를 제작하여 사용하면 된다.
다음 그림은 Filter에 대한 역할을 간단한 그림으로 표현한 것이다.
---------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
위 그림에서 알 수 있듯이 Filter는 말 그대로 중간에서 들어오는 데이터들에 대해서
한글처리를 하는 역할을 하게 된다. 이 필터를 만드는 방법은 먼저 java로 필터의 역할을
하는 클래스를 생성한 이후 web.xml 파일을 수정하면 된다. 아래를 참고해보자.
-----------------------------------------------------------------------------------------
package my.filter;
import java.io.*;
import javax.servlet.*;
public class EncodeFilter implements Filter
{
public EncodeFilter(){}
@Override
public void init(FilterConfig conf) throws ServletException{}
@Override
public void destroy(){}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException
{
/* request를 보내기 전에 전처리할 코드가 있다면 여기서 처리한다.
* response를 보낸 후 후처리할 코드가 있다면 여기서 처리한다. */
req.setCharacterEncoding("EUC-KR");
chain.doFilter(req, res);
}//doFilter()==================================================================
}/////////////////////////////////////////////////////////////////////////////
/** 서블릿 필터는 Servlet 2.3이상에서 사용가능하다.
* 필터는 웹 어플리케이션에서 사용하는 서블릿이나, jsp에 영향을 미치지 않고,
* request, response를 조작할 수 있도록 만들어 졌다.
* 서블릿 필터는 request, response가 서블릿이나 jsp에 도달하기 전에 필요한 전 처리를
* 가능하게 해주고, 필터들을 여러개 사용하면 연쇄적으로 사용할 수 있도록 해준다.
* 단, 필터를 등록하고 사용해야 한다.
* "컨텍스트/WEB-INF/web.xml" 에 필터등록을 해야한다. */
/* web.xml 파일에 다음과 같이 작성해야 한다.
*
<filter>
<description>Encode Filter</description> <!-- 필터설명 -->
<display-name>EncodeFilter</display-name>
<filter-name>EncodeFilter</filter-name>
<filter-class>my.filter.EncodeFilter</filter-class>
</filter>
<filter-mapping><!-- 모든 jsp파일에 대해서 필터를 걸어주었다. -->
<filter-name>EncodeFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
* */
-------------------------------------------------------------------------------------------
위와같이 하면 된다. 여기서 어려운점은 web.xml파일이 어디경로에 있는지 알 수 없다면
위의 방법을 적용하는데 힘들수 있다. 이클립스에서 작업하는 분들이라면
WebContent -> WEB-INF -> web.xml
에서 찾을 수 있다.
※ 참고로 url-pattern 의 내용에서 보면 단순히 파일의 포멧형식(확장자)에 대한 한글처리가 아닌 브라우져의 상단에서
확인할 수 있는 url에서 요청하는 경로가 마지막에 확장자가 .jsp에 대한 요청에 대해서만 한글 처리를 해주는것이다.
따라서 스프링의 경우 보통 url확장자를 htm으로 주는 경우가 많은데, 그럴 경우 *.htm을 추가해야 한다.
'JSP' 카테고리의 다른 글
JSP 한글파일명 다운로드 기능 구현 방법 (0) | 2013.08.01 |
---|---|
forward와 redirect의 차이점 (0) | 2013.07.25 |
DBCP 구현하기 (0) | 2013.07.25 |
JSP include 하는 방법 (총 2가지) (0) | 2013.07.25 |
서블릿에서 한국어 표현하기! (0) | 2013.07.25 |