본문 바로가기

Programming/Java & JSP & Spring

[Spring] HiddenMethod의 활용

REST방식을 사용하기 위해 GET, POST, PUT, PATCH, DELETE 방식등을 이용한다.

하지만 브라우저에 따라서 PUT, PATCH, DELETE 방식을 지원하지 않는 경우가 발생할 수 있다.


많은 브라우저가 GET, POST 방식만을 지원하기 때문에 REST 방식을 제대로

사용하려면 이러한 상황에 대해서 고려해야한다.


이러한 해결책으로는 브라우저에서 POST방식으로 전송하고, 추가적인 정보를 이용해서

PUT, PATCH, DELETE와 같은 정보를 같이 전송하는 것이다.

이를 'Overloaded POST'라고 한다.


예를 들어 Ajax를 이용해서 전송하는 경우에는 'X-HTTP-Method-Override' 정보를 이용하는데

코드는 아래와 같이 작성한다.

$.ajax({

type:'delete',

url:'/reply/' + no,

headers:{

"Content-Type": "application/json",

"X-HTTP-Method-Override": "DELETE"},

dataType='text',

....

....

....


<form> 태그를 이용해서 데이터를 전송하는 경우에는 '_method' 라는 정보를 이용한다.

스프링은 이를 위해 'HiddenHttpMethodFilter'를 제공한다.


HiddenHttpMethodFilter는 <form> 태그에서 '_method'의 추가정보를 사용해서

GET/POST 방식만을 지원하는 브라우저에서 REST방식을 사용할 수 있도록 해준다.

예를 들어 다음과 같이 사용할 수 있다.

<input tpye="hidden" name="_method" value="PUT">

<input tpye="hidden" name="_method" value="DELETE">


HiddenHttpMethodFilter를 설정하기 위해서는 web.xml에 필터를 추가해주어야 한다.

<filter>

<filter-name>hiddenHttpMethodFilter</filter-name>

<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>hiddenHttpMethodFilter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>







※ 참조 : 코드로 배우는 스프링 웹프로젝트

'Programming > Java & JSP & Spring' 카테고리의 다른 글

[Java] Jsoup 사용법  (0) 2017.03.16
[Spring] HttpSession과 인터셉터  (0) 2017.02.21
[Spring] @RequestParam 파라미터 매핑  (0) 2017.02.14
[Spring] VO와 DTO  (0) 2017.02.02
[Spring] 트랜잭션 처리  (0) 2017.02.02