Spring MVC 의@RequestMapping 상세 설명
이전 프로젝트 에 서 는 REST 스타일 로 프로그램 을 개발 하 였 으 나 POST,PUT 모드 로 데 이 터 를 제출 하 였 을 때 서버 측 에서 제출 한 데 이 터 를 받 아들 이지 못 하 는 것 을 발견 하 였 으 며,제출 방식 은 application/json 이 며,서버 측 에서 request.getReader()를 통 해 나 온 데이터 에는 브 라 우 저가 제출 한 데이터 가 확실히 존재 하 는 것 을 확인 하 였 다.원인 을 찾기 위해 매개 변수 바 인 딩(@RequestParam,@RequestBody,@RequestHeader,@PathVariable)에 대해 연 구 했 고 HttpMessageConverter 와 관련 된 내용 도 살 펴 보 았 습 니 다.
프로필:
@RequestMapping
RequestMapping 은 요청 주소 맵 을 처리 하 는 주석 으로 클래스 나 방법 에 사용 할 수 있 습 니 다.클래스 에 사용 할 때 클래스 의 모든 응답 요청 을 표시 하 는 방법 은 이 주 소 를 부모 경로 로 합 니 다.
RequestMapping 주 해 는 여섯 가지 속성 이 있 습 니 다.다음은 세 가지 유형 으로 나 누 어 설명 하 겠 습 니 다.
1、 value, method;
value: 요청 한 실제 주 소 를 지정 합 니 다.지정 한 주 소 는 URI Template 모드 일 수 있 습 니 다.
method: 요청 한 method 형식,GET,POST,PUT,DELETE 등 을 지정 합 니 다.
2、 consumes,produces;
consumes:요청 한 제출 내용 형식(Content-Type)을 지정 합 니 다.예 를 들 어 application/json,text/html;
produces: 되 돌아 오 는 콘 텐 츠 형식 을 지정 합 니 다.request 요청 헤더 에 있 는(Accept)형식 에 만 지정 한 형식 이 포함 되 어 있 을 때 되 돌아 갑 니 다.
3、 params,headers;
params:지정 한 request 에 일부 매개 변수 값 을 포함해 야 이 방법 을 처리 할 수 있 습 니 다.
headers:지정 한 request 에는 지정 한 header 값 이 포함 되 어 있어 야 요청 을 처리 할 수 있 습 니 다.
예시:
1、value / method 예제
기본 RequestMapping("...str...")은 value 의 값 입 니 다.
[java] view plain copy
@Controller
public class AppointmentsController {
private final AppointmentBook appointmentBook;
@Autowired
this.appointmentBook = appointmentBook;
public Map get() {
}
@RequestMapping(value="/{day}", method = RequestMethod.GET)
return appointmentBook.getAppointmentsForDay(day);
public AppointmentForm getNewForm() {
}
@RequestMapping(method = RequestMethod.POST)
if (result.hasErrors()) {
}
return "redirect:/appointments";
}
value 의 uri 값 은 다음 세 가지 입 니 다.
A)일반적인 구체 적 인 값 으로 지정 할 수 있다.
B) 변 수 를 포함 하 는 클래스 값(URI Template Patterns with Path Variables)으로 지정 할 수 있 습 니 다.
C)정규 표현 식 을 포함 하 는 클래스 값(URI Template Patterns with Regular Expressions)으로 지정 할 수 있 습 니 다.
example B)
[java] view plain copy
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
Owner owner = ownerService.findOwner(ownerId);
return "displayOwner";
example C)
[java] view plain copy
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
// ...
}
2 consumes,produces 예시
cousumes 의 예:
[java] view plain copy
@Controller
public void addPet(@RequestBody Pet pet, Model model) {
}
방법 은 request Content-type 이'application/json'형식의 요청 만 처리 합 니 다.
produces 의 사례:
[java] view plain copy
@Controller
@ResponseBody
// implementation omitted
방법 은 request 요청 에 Accept 헤더 에'application/json'의 요청 만 처리 하 는 동시에 되 돌아 오 는 내용 유형 이 application/json 임 을 암시 합 니 다.
3 params,headers 예제
params 의 사례:
[java] view plain copy
@Controller
public class RelativePathUriTemplateController {
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
// implementation omitted
}
처리 요청 에 만"my Param","my Value"라 는 요청 이 포함 되 어 있 습 니 다.
headers 의 예:
[java] view plain copy
@Controller
public class RelativePathUriTemplateController {
@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
// implementation omitted
}
request 만 처리 하 는 header 에는'Refer'요청 헤더 와 대응 하 는 값 이'
http://www.ifeng.com/
'인 요청 이 포함 되 어 있 습 니 다.위 에 서 는 RequestMapping 이 지정 한 방법 으로 어떤 요청 을 처리 하 는 지 만 소개 하 였 으 며,다음 편 에 서 는 request 가 제출 한 데이터(데이터 바 인 딩)와 되 돌아 오 는 데 이 터 를 어떻게 처리 하 는 지 설명 할 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.