> Java > java지도 시간 > SpringBoot2의 PUT 요청이 매개변수를 수신할 수 없는 문제를 해결하는 방법

SpringBoot2의 PUT 요청이 매개변수를 수신할 수 없는 문제를 해결하는 방법

WBOY
풀어 주다: 2023-05-20 20:38:43
앞으로
1642명이 탐색했습니다.

HiddenHttpMethodFilter

SpringBoot2의 PUT 요청이 매개변수를 수신할 수 없는 문제를 해결하는 방법

HTML의 양식 양식은 GET 및 POST 요청만 지원하지만 DELETE 및 PUT와 같은 메소드는 지원되지 않습니다. Spring3에는 이러한 요청을 표준 http 메소드로 변환할 수 있는 필터가 추가되어 지원이 가능해졌습니다. GET, POST, PUT 및 DELETE 요청.

    @Bean
    public FilterRegistrationBean<HiddenHttpMethodFilter> testFilterRegistration3() {
        FilterRegistrationBean<HiddenHttpMethodFilter> registration = new FilterRegistrationBean<HiddenHttpMethodFilter>();
        registration.setFilter(new HiddenHttpMethodFilter());//添加过滤器
        registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
        registration.setName("HiddenHttpMethodFilter");//设置优先级
        registration.setOrder(2);//设置优先级
        return registration;
    }
로그인 후 복사

페이지의 양식 형태에서 메소드를 Post로 설정하고, 다음과 같이 히든 필드를 추가합니다.

<input type="hidden" name="_method" value="put" />
로그인 후 복사

HiddenHttpMethodFilter 소스 코드 보기

        String paramValue = request.getParameter(methodParam);  
        if("POST".equals(request.getMethod()) && StringUtils.hasLength(paramValue)) {  
            String method = paramValue.toUpperCase(Locale.ENGLISH);  
            HttpServletRequest wrapper = new HttpMethodRequestWrapper(request, method); 
            filterChain.doFilter(wrapper, response);  
        } else  
        {  
            filterChain.doFilter(request, response);  
        }  
}
로그인 후 복사

소스 코드에서 볼 수 있듯이 필터는 Post만 필터링합니다. _method의 숨겨진 필드로 다른 매개변수 이름을 설정할 수도 있습니다. 예를 들어 _method_로 설정하려는 경우 HiddenHttpMethodFilter 구성 클래스에서 초기화 매개변수를 설정할 수 있습니다. , "_method_")

HttpPutFormContentFilter

SpringBoot2의 PUT 요청이 매개변수를 수신할 수 없는 문제를 해결하는 방법

HiddenHttpMethodFilter에서 알려져 있으며, html의 양식 메소드 값은 HiddenHttpMethodFilter를 통해 put 양식의 매개변수 키-값 쌍을 가져올 수 있습니다. Spring 3에서 put 폼의 매개변수 키-값 쌍을 얻는 또 다른 방법은 HttpPutFormContentFilter 필터를 사용하는 것이다.

    @Bean
    public FilterRegistrationBean<HttpPutFormContentFilter> testFilterRegistration2() {
        FilterRegistrationBean<HttpPutFormContentFilter> registration = new FilterRegistrationBean<HttpPutFormContentFilter>();
        registration.setFilter(new HttpPutFormContentFilter());//添加过滤器
        registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
        registration.setName("HttpPutFormContentFilter");//设置优先级
        registration.setOrder(2);//设置优先级
        return registration;
    }
로그인 후 복사

HttpPutFormContentFilter 필터의 목적은 Put 형식의 값을 가져와 RequestMethod.put 메서드로 표시된 컨트롤러의 메서드에 전달하는 것입니다.

HiddenHttpMethodFilter와 다르게, 양식에 매개변수 이름이 _method인 숨겨진 필드를 추가할 필요가 없으며 메소드가 post일 필요도 없고 put으로 직접 작성되지만 이 필터는 enctype 값만 허용할 수 있습니다. application/x-www-form-urlencoded 양식, 즉 이 필터를 사용할 때 양식 양식의 코드는 다음과 같아야 합니다.

<form action="" method="put" enctype="application/x-www-form-urlencoded">  
    ......  
</form>
로그인 후 복사

또한 테스트 후 json 데이터도 괜찮습니다. enctype="application/json"도 괜찮습니다

위 내용은 SpringBoot2의 PUT 요청이 매개변수를 수신할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿