Java Web, Spring Restful 웹서비스를 위한 web.xml 필수 설정

<!-- HTTP Method Filter -->
<filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

바로 이거….

현재의 웹브라우저는 Http protocol의 post, get 두 가지 방식밖에 인식을 하지 못한다. 그래서 프로그래밍적으로 처리를 해 주는 경우가 대부분이다. 보통 jquery의 ajax 함수를 이용한 방법을 많이 쓰는것으로 알고 있다.

 

<form method=”post” action=”/join”>

<input type=”hidden” name=”_method” value=”put”/>

</form>

이런식으로 전송을 한다.

그러면 위의 필터가 이를 편집해준다.

 

못믿겠으면 직접 소스를 보시라능..

 

이것만 딱 써놓으면 한글이 깨진다.

<!-- Filters -->
<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>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- HTTP Method Filter -->
<filter>
	<filter-name>httpMethodFilter</filter-name>
	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>httpMethodFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

이렇게 두개를 같이 써주면 한글이 안깨진다고 한다.

한글이 깨져서 이 필터 빼버린적은 있는데… 이렇게 하면 안깨지는지 아직 확인은 안해봤다.

 

둘다 단순한 기능을 하는 필터다. 캐릭터 인코딩 필터는 그냥 post로 전송된 내용을 인코딩해주는 필터고 rest filter는 http헤더의 메서드를 인식해서 변경해주거나
name=”_method” value=”post|get|put|delete…등”을 확인하고 http 헤더의 메서드를 변경해주는 역할을 한다.

Leave a Reply

Your email address will not be published. Required fields are marked *

 characters available