@RequestParam,@PathParam,@PathVariable 등 주해 의 차이 점 에 대해 이야기 합 니 다.

@RequestParam 과@PathVariable 주 해 는 request 에서 요청 을 받 는 데 사 용 됩 니 다.두 개 모두 인 자 를 받 을 수 있 습 니 다.관건 은@RequestParam 은 request 에서 값 을 가 져 오 는 것 이 고@PathVariable 은 하나의 URI 템 플 릿 에서 채 워 집 니 다.
@RequestParam
다음 코드 를 보십시오.
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
위의 이 URL 에 따라 이런 식 으로 가 져 올 수 있 습 니 다.

public String getDetails(
 @RequestParam(value="param1", required=true) String param1,
  @RequestParam(value="param2", required=false) String param2){
...
}
@RequestParam 은 다음 네 가지 인 자 를 지원 합 니 다.
defaultValue 이번 요청 에 이 인자 가 없 거나 인자 가 비어 있 으 면 기본 값 을 사용 합 니 다.
name 이 인자 의 이름 을 URL 위 에 있 는 것 과 같이 연결 합 니 다.
required 이 매개 변 수 는 필수 입 니까?
value 는 name 과 같은 역할 을 합 니 다.name 속성의 별명 입 니 다.
@PathVariable
이 주 해 는 URL 안의 템 플 릿 을 식별 할 수 있 습 니 다.우 리 는 아래 의 URL 을 봅 니 다.
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
위의 url 은 이렇게 쓸 수 있 습 니 다.

@RequestMapping("/hello/{id}")
 public String getDetails(@PathVariable(value="id") String id,
 @RequestParam(value="param1", required=true) String param1,
 @RequestParam(value="param2", required=false) String param2){
.......
}
구별 이 뚜렷 하 다
@PathParam
이 주 해 는 spring 의 pathVariable 과 같 고 템 플 릿 을 기반 으로 합 니 다.그러나 이것 은 jboss 가방 아래 의 실현 입 니 다.위 에 있 는 것 은 spring 의 실현 입 니 다.모두 가방 을 안내 해 야 합 니 다.
@QueryParam
@Query Param 은 JAX-RS 가 원래 제공 하 는 것 으로 Spring 의 RequestParam 역할 과 일치 합 니 다.
@ResponseBody
responseBody 는 서버 가 되 돌아 올 때 어떤 방식 으로 되 돌아 오 는 지 를 나타 내 며,내용 이나 대상 을 HTTP 응답 본문 으로 되 돌려 줍 니 다.값 은 매우 많 습 니 다.일반적으로 json 으로 설정 합 니 다.
@RequestBody
일반적으로 post 요청 시 이 요청 을 사용 합 니 다.인 자 를 requestbody 에 버 립 니 다.
추가:@pathvariable 매개 변수SpringMVC 5 가지 주해 파라미터 바 인 딩
@pathvariable 매개 변수SpringMVC 5 가지 주해 파라미터 바 인 딩
SpringMVC 매개 변 수 를 연결 합 니 다.쉽게 말 하면 클 라 이언 트 가 요청 한 key/value 데 이 터 를 contrller 방법의 인삼 에 연결 한 다음 에 contrller 에서 이 매개 변 수 를 사용 할 수 있 습 니 다.
다음 에 자주 사용 하 는 주석 5 개 를 통 해 매개 변 수 를 연결 하 는 방법 을 보 여 줍 니 다.
1.@PathVariable 주석
@PathVariable 은 URL 에 있 는 변 수 를 기능 처리 방법의 매개 변수 에 표시 할 수 있 는 요청 url 의 동적 매개 변 수 를 얻 는 데 사 용 됩 니 다.그 중에서 URL 에 있 는{xxx}자리 차지 부 호 는@PathVariable("xxx")을 통 해 조작 방법의 입력 에 연결 할 수 있 습 니 다.
예제 코드:

@ResponseBody
 @RequestMapping("/testUrlPathParam/{param1}/{param2}")public void testUrlPathParam(HttpServletRequest request, @PathVariable String param1,
         @PathVariable String param2) {
  System.out.println("  PathVariable     param1=" + param1);
  System.out.println("  PathVariable     param2=" + param2);
 }
출력 결과:
PathVariable 을 통 해 얻 은 인자 param 1=1
PathVariable 을 통 해 얻 은 인자 param 2=2
2.@RequestHeader 주석
@RequestHeader 주석,Request 요청 header 부분의 값 을 방법의 매개 변수 에 연결 할 수 있 습 니 다.
예제 코드:

@ResponseBody
 @RequestMapping("/testHeaderParam")public void testHeaderParam(HttpServletRequest request, @RequestHeader String param1) {
  System.out.println("  RequestHeader     param1=" + param1);
 }
출력 결과:
RequestHeader 를 통 해 얻 은 인자 param 1=abc
3.@CookieValue 주석
@CookieValue 는 Request header 에서 쿠키 에 대한 값 을 방법의 매개 변수 에 연결 할 수 있 습 니 다.
예제 코드:

@ResponseBody
 @RequestMapping("/testCookieParam")public void testCookieParam(HttpServletRequest request, HttpServletResponse response,
         @CookieValue String sessionid) {
  System.out.println("  CookieValue     sessionid=" + sessionid);
 }

출력 결과:
CookieValue 를 통 해 얻 은 인자 sessionid=ebef978eef6c46f8a95cc 0990d2d360a
4.@RequestParam 주석
@RequestParam 주 해 는 Content-type:application/x-www-form-urlencoded 인 코딩 의 내용 을 처리 하 는 데 사 용 됩 니 다.제출 방식 은 get 또는 post 입 니 다.(Http 프로 토 콜 에서 form 의 enctype 속성 은 인 코딩 방식 으로 두 가지 가 있 습 니 다.application/x-ww-form-urlencoded 와 multipart/form-data,기본 값 은 application/x-ww-form-urlencoded)입 니 다.
@RequestParam 주 해 는 실질 적 으로 Request.getParameter()의 Key-Value 매개 변수 Map 을 Spring 의 전환 메커니즘 ConversionService 설정 을 이용 하여 매개 변수 수신 대상 이나 필드 로 전환 하 는 것 입 니 다.
get 방식 에서 query String 의 값 과 post 방식 에서 body data 의 값 은 모두 Servlet 에 의 해 받 아들 여지 고 Request.getParameter()매개 변수 에 집중 되 기 때문에@RequestParam 에서 얻 을 수 있 습 니 다.
이 주 해 는 세 가지 속성 이 있 습 니 다:value,required,defaultValue;value 는 입력 할 값 의 id 이름 을 지정 합 니 다.required 는 매개 변 수 를 기록 할 지 여 부 를 표시 합 니 다.defaultValue 는 매개 변수 가 전달 되 지 않 을 때의 기본 값 을 표시 합 니 다.
예제 코드:

@ResponseBody
 @RequestMapping("/testRequestParam")public void testRequestParam(HttpServletRequest request,
         @RequestParam(value = "num", required = true, defaultValue = "0") int num) {
  System.out.println("  RequestParam     num=" + num);
 }
출력 결과:
RequestParam 을 통 해 얻 은 인자 num=10
5.@RequestBody 주석
@RequestBody 주 해 는 HttpEntity(요청 체)가 전달 한 데 이 터 를 처리 하 는 데 사 용 됩 니 다.일반적으로 비 Content-type:application/x-ww-form-urlencoded 인 코딩 형식의 데 이 터 를 처리 합 니 다.
GET 요청 중 HttpEntity 가 없 기 때문에@RequestBody 는 적용 되 지 않 습 니 다.
POST 요청 에서 HttpEntity 를 통 해 전달 되 는 매개 변 수 는 요청 헤더 에 데이터 의 종 류 를 밝 혀 야 합 니 다.Content-Type,SpringMVC 는 HandlerAdapter 가 설정 한 HttpMessageConverters 를 사용 하여 HttpEntity 의 데 이 터 를 분석 한 다음 해당 bean 에 연결 합 니 다.
예제 코드:

@ResponseBody
 @RequestMapping("/testRequestBody")public void testRequestBody(HttpServletRequest request, @RequestBody String bodyStr){
  System.out.println("  RequestBody     bodyStr=" + bodyStr); }
코드 실행 결과:
RequestBody 를 통 해 얻 은 인자 body Str=body 의 내용 입 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기