프로필사진
RESTful(1) - @PathVariable 사용하기

2019. 11. 25. 11:05🔴 Spring

300x250

@PathVariable → URL경로에 변수 넣어주기

= RESTful 서비스의 URL형태

 

사용방법:

@RequestMapping의 URL 정의 & Method내의 파라미터 부분의 정의

→ @RequestMapping 어노테이션 값으로 {템플릿변수} 를 사용

→ @PathVariable 어노테이션을 이용해서 {템플릿 변수} 와 동일한 이름을 갖는 파라미터를 추가

⇒ RequestMapping에 있는 변수는 PathVariable이 적용된 동일한 이름의 파라미터에 매핑됨

 

*주의:

  • null이나 공백값이 들어가는 파라미터는 적용 XXX
  • @PathVariable으로 값을 넘겨받을때 값에 '.'가 포함되어 있으면 '.'가 포함하여 그 뒤가 잘려서 들어옴

예제

<memberList.jsp>

<script>
		function delMember(idx){
			if(confirm("삭제하시겠습니까?")){
				//location.href='memberDelete?memberId='+idx;
				location.href='delete/'+idx;
			}
		}
	</script>

location.href를 통해 idx값을 url 뒷부분에 추가해서 보내는 것이다.
'delete/'주소는 변하지 않되 뒤에 idx는 delMember(idx)에서 주입되는 idx값에 따라 변하는 것이다.

<MemberDeleteController.java>

package com.bitcamp.mm.member.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.bitcamp.mm.member.service.MemberDeleteService;

@Controller
public class MemberDeleteController {
	
	@Autowired
	private MemberDeleteService deleteService;
	
	@RequestMapping("/member/memberDelete")
	public String delete(
			@RequestParam("memberId") int id
			) {
		
		deleteService.memberDelete(id);
		
		return "redirect:/member/memberList";
	}
	
	@RequestMapping("/member/delete/{idx}") -> delete?idx=어쩌구 대신 사용
	public String del(@PathVariable("idx") int idx) {

		deleteService.memberDelete(idx);
		
		return "redirect:/member/memberList";
	}
}

@PathVariable을 통해 'idx'값을 전달받았다.
'delete?idx=OOO' 이런식으로 값을 보내줄 수도 있지만 이렇게  @PathVariable을 사용하면 더 간편하다.

300x250