HiddenHttpMethodFilter

배세훈·2021년 8월 15일
0

Spring

목록 보기
8/38

HiddenHttpMethodFilter란?

PUT, PATCH, DELETE 방식의 메소드를 지원하지 않는 브라우저가 있을 때 이를 위해 스프링 진영에서 HiddenHttpMethodFilter라는 것을 제공한다.

HiddenHttpMethodFilter는 HiddenMethod(지원이 안되는 메소드명을 _method라는 이름에 담아서) + POST 요청을 스프링 컨트롤러에 전송하는 방법이다.

정확히 말해서 HiddenHttpMethodFilter는 Hidden 타입의 input 태그의 속성들을 읽어서 HttpServletRequestWraaper.getMethod() 반환값을 변경해 요청된 HTTP 메소드의 타입을 PUT, DELETE, PATCH로 변경해주는 필터이다.
  • HTML Form에서는 GET과 POST방식의 Methods만 지원한다.
  • HTML Form이 다른 Methods를 지원하지 않는 이유는 Form의 역할과는 거리가 멀기 때문이다.

HiddenHttpMethodFilter 추가하기

  1. xml 방식
<filter>
	<filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    
    <filter-mapping>
    	<filter-name>hiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</filter>
  1. java 방식
@Configuration
public class MvcConfig extends WebMvcConfigurationSupport {
	@Bean
    public HiddenHttpMethodFilter httpMethodFilter(){
    	HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
        return hiddenHttpMethodFilter;
    }
}

Form 태그에 사용하기

<form action="/user/delete" method="post">
	<input type="hidden" name="_method" value="delete">
    <input type="text" name="id">
    <input type="submit" value="사용자 삭제">
</form>
profile
성장형 인간

0개의 댓글