일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이터 조회
- 정보처리기사
- Linux
- Java
- 메서드
- 백엔드
- html
- 프로그래밍
- select문
- mybatis
- github
- sql문
- DML
- StringBuilder
- where
- 알고리즘
- 프론트엔드
- 프로그래머스 sql 고득점 kit
- 형변환
- JavaScript
- 백준
- 정보처리기사필기요약
- 스프링
- order by
- BufferedReader
- 자바스크립트
- SQL
- 리눅스
- select
- 자바
- 개발자
- MySQL
- String클래스
- 프로그래머스 SQL
- 클래스
- Git
- scanner
- 입출력
- 예외처리
- 웹개발
- Today
- Total
ToBe끝판왕
[ SPRING ] 어노테이션 @PathVariable 과 @RequestParam 본문
[ SPRING ] 어노테이션 @PathVariable 과 @RequestParam
업그레이드중 2024. 5. 22. 02:33
@PathVariable 어노테이션
▶ 정의
• SpringFramework 에서 자주 사용되는 어노테이션
• URL 경로에 포함된 변수를 메서드 매개변수로 바인딩 할때 사용
▶ @PathVariable 예시
• 아래의 Java 소스와 같이 Controller 에서 학생이름을 기준으로 학생정보를 삭제하는 요청을 처리
• URL의 {stuName} 을 @PathVariable String stuName 으로 매핑
• 따라서, HTTP DELETE 메서드로 student/홍길동 요청이 오면 stuName 매개변수는 "홍길동" 값을 가지게 된다.
@ResponseBody
@RequestMapping(value = "student/{stuName}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable String stuName) throws Exception {
int resultCnt = crudApiService.deleteApiData(stuName);
}
▶ @PathVariable 속성
• 'value' 속성을 사용하여 URL 경로 변수와 메서드의 매개변수 이름이 다를 경우, 아래와 같이 처리할 수 있다.
@ResponseBody
@RequestMapping(value = "student/{name}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable("name") String stuName) throws Exception {
int resultCnt = crudApiService.deleteApiData(stuName);
}
• 'required' 속성을 사용하여 변수값이 필수 여부 설정 가능 ( default 는 true 이다. )
@ResponseBody
@RequestMapping(value = "student/{name}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable(value="name", required=false) String stuName) throws Exception {
int resultCnt = crudApiService.deleteApiData(stuName);
}
@RequestParam 어노테이션
▶ 정의
• SpringFramework 에서 자주 사용되는 어노테이션
• URL 경로에 포함된 변수를 메서드 매개변수로 바인딩 할때 사용
• 주로 HTTP GET / POST 요청의 쿼리파라미터를 처리할때 주로 사용
▶ @RequestParam 예시
• 아래의 Java 소스와 같이 Controller 에서 학생이름을 기준으로 학생정보를 조회하는 요청을 처리
• stuName을 매개변수로 사용한다고 하면 'student?stuName=홍길동' 와 같이 쿼리스트링을 통해 전달된다.
• 따라서, HTTP GET 메서드로 'student?stuName=홍길동' 요청이 오면 stuName 매개변수는 "홍길동" 값을 가지게 된다.
@ResponseBody
@RequestMapping(value = "student", method = RequestMethod.GET)
public List<CrudApiDto> crudSelect(@RequestParam(value = "stuName", required = false)String stuName) throws Exception {
if( stuName != null ) {
return crudApiService.selectApiListByName(stuName);
}
return crudApiService.selectApiList();
}
▶ @RequestParm 속성
• @PathVariable 속성과 기본적으로 사용방법이 동일하다.
• default 속성도 가지고 있다. ( 요청 파라미터가 제공되지 않은 경우, 해당 defaultValue 값을 기본값으로 사용 )
@ResponseBody
@RequestMapping(value = "student", method = RequestMethod.GET)
public List<CrudApiDto> crudSelect(@RequestParam(value = "stuName", required = false,
defaultValue = "김영수" )String stuName) throws Exception {
if( stuName != null ) {
return crudApiService.selectApiListByName(stuName);
}
return crudApiService.selectApiList();
}
결론
▶ 공통점
• 데이터를 전달하기 위해 URI을 통해 전달된 값을 파라미터로 받아오는 역할
▶ 차이점
• 쿼리스트링( ex : student?stuName=홍길동 ) 을 통해 데이터를 받아오는 경우에는 @RequestParam 사용
• URI Path( student/{stuName} )을 통해 데이터를 받아오는 경우에는 @PathVariable 사용
• defaultValue 값이 필요한 경우에는 @RequestParam 사용
• 1개의 필수값이 필요한 경우에는 @PathVariable 사용
▶ 두가지를 혼용해서 사용하는 경우도 많으니 각가의 특징과 사용법 명심할 것 !
'■ 프로그래밍 SKILLS > SPRING FRAMEWORK' 카테고리의 다른 글
[ 스프링 시큐리티 ] Spring Security 개념 및 설정 (1) | 2024.12.16 |
---|---|
[ SPRING ] 스프링 개념 , 특징 , 환경설정( 이클립스 설치 ) (0) | 2022.06.06 |