-
Spring MVC(URI 패턴)웹개발/Spring 2020. 7. 26. 16:26
이 내용은 인프런의 스프링 웹 MVC강좌를 참고하여 만들었습니다.
1, @PathVariable사용법
이름을 같게 하면 spring내부에서 자동으로 찾아서 부여를 해 줌
예시 url : "/event/1"
@Controller public class SampleController { @GetMapping("/events/{id}") @ResponseBody public Event getEvent(@PathVariable Integer id){ Event event = new Event(); event.setId(id); return event; } }
이름을 다르게 하면 @PathVariable에 명시를 해 주워야 함
@Controller public class SampleController { @GetMapping("/events/{id}") @ResponseBody public Event getEvent(@PathVariable("id") Integer idValue){ Event event = new Event(); event.setId(idValue); return event; } }
2, @MatrixVariable사용법
초기 설정시에 url판단 시 세미콜론 판단을 안 해주도록 세팅이 되어 있으므로 초기 세팅을 해 주워야 함
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelper(); urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } }
예시 url : "/events/1;name=test"
';' 이후의 정보들을 MatrixVariable어노테이션을 이용하여 가져 올 수 있음
@Controller public class SampleController { @GetMapping("/events/{id}") @ResponseBody public Event getEvent(@PathVariable("id") Integer idValue,@MatrixVariable String name){ Event event = new Event(); event.setId(idValue); event.setName(name); return event; } }
파라미터를 이용하여 접근이 가능
예시 url : "/events1/1;name=test1/events2/2;name=test"
@Controller public class SampleController { @GetMapping("/events1/{id1}/events2/{id2}") @ResponseBody public ArrayList<Event> getEvent( @PathVariable int id1, @PathVariable int id2, @MatrixVariable(name = "name", pathVar = "id1") String n1, @MatrixVariable(name = "name", pathVar = "id2") String n2 ){ Event event1 = new Event(); event1.setId(id1); event1.setName(n1); Event event2 = new Event(); event2.setId(id2); event2.setName(n2); ArrayList<Event> res = new ArrayList<Event>(); res.add(event1); res.add(event2); return res; } }
MultiValueMap으로 인자들에 대하여 정리하여 뽑아내기 가능
예시 url : "/events1/1;name=test1;gender=man/events2/2;name=test2;gender=woman"
@Controller public class SampleController { @GetMapping("/events1/{id1}/events2/{id2}") @ResponseBody public ArrayList<Event> getEvent( @PathVariable Integer id1, @PathVariable Integer id2, @MatrixVariable MultiValueMap<String, String> matrixVariable, //전체 파라미터들을 리스트로 정리 @MatrixVariable(pathVar = "id1") MultiValueMap<String, String> MatrixVar1//해당 pathvariable에 해당하는 인자를 리스트로 정리 ){ List<String> nameList = matrixVariable.get("name"); List<String> genderList = matrixVariable.get("gender"); Event event1 = new Event(); event1.setId(id1); event1.setName(nameList.get(0)); event1.setGender(genderList.get(0)); Event event2 = new Event(); event2.setId(id2); event2.setName(nameList.get(1)); event2.setGender(genderList.get(1)); nameList = MatrixVar1.get("name"); genderList = MatrixVar1.get("gender"); Event event3 = new Event(); event3.setId(id1); event3.setName(nameList.get(0)); event3.setGender(genderList.get(0)); ArrayList<Event> res = new ArrayList<Event>(); res.add(event1); res.add(event2); res.add(event3); return res; } }
'웹개발 > Spring' 카테고리의 다른 글
Spring MVC(폼 서블릿 오류 해결) (0) 2020.07.28 Spring MVC(@ModelAttribute, @Valid, @Validated) (0) 2020.07.28 Spring MVC(html과의 매핑) (0) 2020.07.28 Spring MVC(요청 매개변수) (0) 2020.07.26 Spring MVC(매핑정리) (0) 2020.07.26