원래 input 태그에서 HTTP요청은 GET과 POST 요청만 가능했다.
근데 HiddenHttpMethodFilter 로 config 설정을 한다면
input 태그에서도 속성값을 활용해서 PUT 이나 DELETE 요청을 보낼 수 있었다.
아래는 @Configuration 클래스에 추가한 필터 메서드 예시이다.
@Bean
FilterRegistrationBean<HiddenHttpMethodFilter> hiddenHttpMethodFilter( ) {
FilterRegistrationBean<HiddenHttpMethodFilter> filterRegistrationBean = new FilterRegistrationBean< >( );
HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter( );
filterRegistrationBean.setFilter(hiddenHttpMethodFilter);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
config 설정을 한 다음 input 태그에서는 아래와 같이 사용했다
<form method="post" action="/users/1">
<input type="hidden" name="_method" value="DELETE">
</form>
input 태그의 name 속성에 "_method", value 에는 HTTP 메서드(PUT이나 DELETE)를 적으면 된다.
만약 name="method" value="DELETE"라고 적으면 단순히 method 변수에 "DELETE"라는 문자열이 전달될 것이다.
하지만 name="_method" value="DELETE"라고 하면 hiddenHTTPMethodFilter 가 이를 가로채어 요청을 POST에서 DELETE로 바꿔서 요청을 보내게 된다.
Spring boot 2버전부터는 application.properties에 아래와 같이 추가하면 된다.
spring.mvc.hiddenmethod.filter.enabled=true
3 버전이나 이번 11월 출시된 Spring boot 4 버전에서도 쓰고 싶다면 위와 같이 설정해야 가능하다.
하지만 보통 fetch나 ajax 같은 메서드를 통해 put, delete 요청을 처리하기에 거의 사용하지 않는 기능이다.
다음으로 HTTP 요청이나 응답에 대한 인코딩을 지원하는 필터이다.
@Bean
FilterRegistrationBean<CharacterEncodingFilter> characterEncodingFilter( ) {
// HTTP의 요청, 응답에 대한 인코딩을 UTF-8로 고정
}
이 또한 이제는 Spring boot 2 버전부터는 자동으로 지원된다.
FIlter에 관해 배우고, Spring boot의 버전 업데이트에 따라 어떤 식으로 기능들이 개선되었는지
체감하기에 좋은 예제이기에 글로 정리했다.
Spring boot가 버전업이 되면서 어떤 것들이 개선되는지 확인해둬야 할 필요성을 깨달았다.
'Java' 카테고리의 다른 글
| 엔티티에서 @Builder 사용할 때 불변성에 대한 고찰 (0) | 2026.01.31 |
|---|---|
| [Spring Boot] Entity <-> DTO 변환 방법 4가지, Setter부터 @Builder, static Factory 메서드 패턴, 상속까지 (0) | 2026.01.23 |
| 카멜케이스와 스네이크케이스 언제 사용할까? (0) | 2026.01.08 |
| [Java] 날짜 타입(LocalDate, Date) 다루기, Servlet, Spring, Spring Boot (0) | 2025.09.01 |
| 백준 1931번 회의실 지정,Java 풀이 (4) | 2025.07.11 |
