[Spring 3.0] HiddenHttpMethodFilter
Spring/3.0 : 2009. 6. 10. 10:47
어제 밤에 스프링 ROO가 제공하는 REST 코드를 보다가 잠들었는데, 아침에 사부님 댓글을 보니, DELETE와 PUT method를 현재 브라우저와 HTML에서는 완전히 지원하지를 않더군요. 그래서 스프링 레퍼런스를 봤더니 역시나..
org.springframework.web.filter.HiddenHttpMethodFilter
이 녀석을 제공해주고 있었습니다. 사용하는 방법은 간단합니다.
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
이렇게 web.xml에 추가해주면 되죠. 어젯밤엔 졸려서 이부분을 그냥 지나간것 같습니다.
해주는 일은 post method로 넘겨온 파라메터 중에 _method가 가지고 온 값으로 HTTP method를 실제 원하는 method로 바꿔주는 겁니다.
<form:form method="delete">
<p class="submit"><input type="submit" value="Delete Pet"/></p>
</form:form>
스프링 폼 태그를 이용해서 저렇게 method를 명시해주면 히든 필드 _method에 delete라는 값을 요청에 같이 포함해서 보내주며 실제 보내는 요청은 post가 됩니다. 하지만 이 필터가 _method의 값인 delete를 읽고서 HTTP method를 DELETE로 변경해주고, 그 결과 아래에 있는 핸들러가 이 요청을 처리하게 됩니다.
@RequestMapping(method = RequestMethod.DELETE)
public String deletePet(@PathVariable int ownerId, @PathVariable int petId) {
this.clinic.deletePet(petId);
return "redirect:/owners/" + ownerId;
}
REST 스타일을 적용할 때 꼭 필요한 라이브러리 인 듯 합니다.
org.springframework.web.filter.HiddenHttpMethodFilter
이 녀석을 제공해주고 있었습니다. 사용하는 방법은 간단합니다.
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
이렇게 web.xml에 추가해주면 되죠. 어젯밤엔 졸려서 이부분을 그냥 지나간것 같습니다.
해주는 일은 post method로 넘겨온 파라메터 중에 _method가 가지고 온 값으로 HTTP method를 실제 원하는 method로 바꿔주는 겁니다.
<form:form method="delete">
<p class="submit"><input type="submit" value="Delete Pet"/></p>
</form:form>
스프링 폼 태그를 이용해서 저렇게 method를 명시해주면 히든 필드 _method에 delete라는 값을 요청에 같이 포함해서 보내주며 실제 보내는 요청은 post가 됩니다. 하지만 이 필터가 _method의 값인 delete를 읽고서 HTTP method를 DELETE로 변경해주고, 그 결과 아래에 있는 핸들러가 이 요청을 처리하게 됩니다.
@RequestMapping(method = RequestMethod.DELETE)
public String deletePet(@PathVariable int ownerId, @PathVariable int petId) {
this.clinic.deletePet(petId);
return "redirect:/owners/" + ownerId;
}
REST 스타일을 적용할 때 꼭 필요한 라이브러리 인 듯 합니다.
'Spring > 3.0' 카테고리의 다른 글
[스프링 3.0] RC2 릴리즈~ (0) | 2009.11.16 |
---|---|
[스프링 3.0] @Valid 실습 (0) | 2009.10.18 |
[스프링 3.0] @Valid 이론 (0) | 2009.10.18 |
[스프링 3.0] 애노테이션 기반 스케줄링 (2) | 2009.09.28 |
드이어 스프링 3.0 RC1이 나왔습니다. (3) | 2009.09.26 |
[스프링 3.0 OXM] 14. Marshalling XML using O/X Mappers 4 (0) | 2009.08.20 |
[스프링 3.0 OXM] 14. Marshalling XML using O/X Mappers 3 (0) | 2009.08.19 |
[스프링 3.0 OXM] 14. Marshalling XML using O/X Mappers 2 (0) | 2009.08.13 |
[스프링 3.0 OXM] 14. Marshalling XML using O/X Mappers 1 (0) | 2009.08.13 |
[Spring 3.0] HiddenHttpMethodFilter (4) | 2009.06.10 |
Spring Expression Language(SpEL) (2) | 2009.04.21 |
ssimini에서도 restful을 지원할때 별도의 파라미터(_http__method)를 이용 하빈다...
restful 정말 매력적인듯 하네요.
오호 ssimini도 REST를 지원하는군요~
저기 HiddenHttpMethodFilter 랑 org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 가 무슨상관인지 잘 모르겠어요... org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 를 설정하면 자동으로 HiddenHttpMethodFilter가 적용되는건가요??
UrlRewriteFilter랑은 아무 관계가 없는 것 같습니다. 다만 이 글을 올릴 때 제가 전에 못 봤었던 부분을 같이 긁어다 붙인것 같네요.