소개
휴식은 표현 상태 전달입니다. (자원) 성능 계층 상태 변환. 현재 가장 인기있는 인터넷 소프트웨어 아키텍처입니다. 명확한 구조, 표준을 준수하며 이해하기 쉬우 며 확장하기 쉬우므로 점점 더 많은 웹 사이트, 게시, 삭제, PIT 및 CRUD에 해당합니다. Spring3.0은 REST 스타일 요청을 지원하기 시작하여 게시물 요청을 Org.SpringFramework.web.filter.hiddenhttpmethodfilter를 통해 Put and Delete 요청으로 변환했습니다. 이 실험은 Spring 4.0을 사용합니다.
hiddenhttpmethodfilter 소스 코드
public static final string default_method_param = "_method";@재정의 보호 void dofilterinternal (httpservletrequest request, httpservletreponse 응답, Filterchain Filterchain) servletexception, ioexception {string paramvalue = request. getparameter); ( "post".equals (request.getMethod ()) && stringUtil.haslength (paramvalue)) {문자열 메서드 = paramvalue.toupperCase (locale.english); httpservletRequest 래퍼 = 새로운 httpmethodrequestWrapper (요청, 메소드); rapper, wrapper); {filterchain.dofilter (요청, 응답);}}hiddenhttpmethodfilter의 소스 코드에서, 스프링은 요청의 _method 매개 변수에 따라 그것을 변환한다는 것을 알 수 있습니다. 따라서 REST 스타일 삭제 또는 PUT 요청을 시작하려면 양식에 _Method 매개 변수를 포함시키고 _Method의 값을 삭제 또는 PIT (CAPS)로 설정하면됩니다. 자세한 예는 다음과 같습니다.
web.xml에서 hiddenhttpmethodfilter를 구성하십시오
핸들러 코드 작성 페이지를 작성하십시오
<!-org.springframework.web.filter.hiddenhttpmethodfilter를 구성하여 게시물 요청을 put 또는 삭제 요청으로 변환합니다-> <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>
패키지 rex.springmvc.handlers; import org.apache.log4j.logger; import org.springframework.steretype.controller; import org.springframework.beb.bind.annotation.requestmapping; import org.springframework.bind.annotation.requestmeptmation; org.springframework.web.bind.annotation.requestparam; @requestmapping (value = "/resttest")@controllerpublic class resttesthandler {private static final logger = logger.getLogger (restTestHandler.class);@value =/restget/{id}, method = requestmethod.get) public string restget (@requestparam (value = "id", required = false) integer id) {logger.debug ( "restget :" + id); return success;}@requestmapping (value = "/retput/{retput/{retput/{requestparam (value = requestparam)" id) {logger.debug ( "retput :" + id); return success;}@requestMapping (value = "/retdelete/{id}", method = restdelete.delete) public string retdelete (@requestparam (value = "id", restire = false) 정수 id) {rostdelete : " + id); success;}@requestMapping (value = "/retpost", method = requestmethod.post) public string retpost () {logger.debug ( "retpost"); 반환 성공;}}<%@ page language = "java"contmenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtml 4.01 Transitional // en" "http://www.w3.org/tr/tr/html4/loose.dtd"> html> html> http-tequiv ="content-type "content ="text/html; charset = utf-8 "> <title> rest test> </head> <brf ="Restest/1 " rel = "외부 nofollow"> 테스트 레스트 get get get get </a> <br> </a> <br> <form action = "resttest/retput/1"method = "post"> <입력 유형 = "hidden"name = "_ method"value = "put"> <입력 유형 = "value ="submit "> </form> <br> <form action ="restteSt/retdelete/1 " 이름 = "_ 메소드"value = "delete"> <입력 유형 = "제출"value = "제출"> </form> <br> <form action = "resttest/restpost"method = "post"> <입력 유형 = "value ="제출 "> </body> </html>
참고 : 핸들러의 @requestparam 주석은 필요한 매개 변수와 함께 추가해야합니다. 그렇지 않으면 페이지에 액세스 할 때 400 오류가 발생합니다.
요약
위는 SpringMVC REST 스타일 및 구현 코드 예제의 도입에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
SpringMVC 시작 예제
SpringMVC 개발을위한 사용자 쿼리 코드에 대한 자세한 설명 RESTFUL API
multipartfile을 사용하여 비동기 업로드를 구현하는 SpringMVC의 소개
단점이 있으면 메시지를 남겨 두십시오.