ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.