본문 바로가기
spring

@RequestParam과 @PathVariable

by 신방동불주먹 2023. 8. 24.

@RequestParam과 @PathVariable은 주로 사용하는 형태의 파라미터를 전달하는 경우 사용한다. 

 

Case 1 ) http://xxx.x.x?index=1&page=2

파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용

 

Case 2 ) http://xxxx.x.x/index/1

 Rest api에서 값을 호출할 때 주로 많이 사용

 

 


 

@RequestParam ?

 url뒤에 붙는 파라미터의 값을 가져올 때 사용한다.

 

ex) /getDriver?name="name에 담긴 value"

 url이 전달될 때 name 파라미터(name에 담긴 value)를 받아오게 된다.

 

- Case 1의 경우 사용

- 어노테이션 괄호 안에 전달인자 이름(실제값)

- 하나 이상의 파라미터에서 사용할 수 있음.

- 스프링에서 지원하는 변환기에서 지원되는 모든 타입 가능.

 

@GetMapping("getBoard")
public String viewName( @RequestParam("name") String name, 
			@RequestParam("name2") String name2){
}

 

**만약 RequestParam에 key값이 존재하지 않을 경우

"BadRequest 로 4**" error가 발생. 이를 방지하기 위해 default 값을 설정해준다.  " required=false " 속성을 꼭 명시)

@GetMapping("getDriver")
public String viewName( @RequestParam("name",required=false,defaultValue="")String name, 
			@RequestParam("name2",required="false,defaultValue="") String name2){
}

 

 


 

@PathVariable ?

url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용한다. 

 

@PostMapping("delete/{idx}")
@ResponseBody
public void testMethod(@PathVariable("idx") int id ){
	return testService.deleteId(id);
}

- Case 2의 경우에 사용

 

중요 ! 

WAS같은 경우 URL에 특수문자나 구분기호 " , , ` , . " 등을 사용하면 인식을 못한다.

따라서 URL에 태우지 말고 JSON 형태로 HTTP BODY에 실어 보내야 한다 .!!

그러므로 여러개의 파라미터값을 삭제할 때 ex)1,2,3,4 이런식으로 url에 요청하면 안된다.

'spring' 카테고리의 다른 글

[SpringSecurity] 필터  (0) 2023.08.22
[SpringSecurity] FailureHandler 구현  (0) 2023.08.02
[Spring Security] Exception  (0) 2023.07.26
서버 재기동시 세션  (0) 2023.02.14
Mybatis쿼리문 다중 파라미터 사용  (0) 2023.02.11