[Spring] RequestMapping 방법 - url 매핑
🧶 𝗪𝗲𝗯/Spring

[Spring] RequestMapping 방법 - url 매핑

RequestMapping 을 이용하여 url 을 메서드 레벨에서 매핑하는 방법을 알아보도록 하겠습니다.


 

 

 

 RequestMapping 

Mapping 단위

1. Class 단위
2. Method 단위

@RequestMapping Annotaion 은 Class 에서 매핑을 할 수 있고, method 별로 매핑할 수 있습니다.

해당 Annotation 을 쓰기 위해 @Controller Annotation 을 먼저 Class 에 매핑을 해야합니다.

 

 

@RequestMapping("/hello")

아무런 옵션을 주지 않은 기본 상태입니다.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class UrlMappingController {

	@RequestMapping("/hello")
	public void m1() {
		System.out.println("/hello");
	}
}

아무것도 주지 않은 상태라면 GET, POST, PUT, DELETE 어떤 HTTP method 든 다 받을 수 있습니다.

딱 url 을 /hello 로만 들어가야 오류가 나지 않습니다.

이는 @RequestMapping(value="/hello") 와 동일합니다.

 

 

@RequestMapping("/hello/hi")

package com.mycom.myapp;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class UrlMappingController {
	@RequestMapping("/hello/hi")
	public void m2() {
		System.out.println("/hello/hi");
	}
}

이도 마찬가지로 /hello/hi 에 들어가야만 오류가 나지 않습니다.

 

 

@RequestMapping({"/hello", "/hi"})

package com.mycom.myapp;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class UrlMappingController {

	@RequestMapping({ "/hello", "/hi" })
	public void m2() {
		System.out.println("/hello, /hi");
	}
}

복합적인 url 매핑을 하고싶다면 {} 배열을 사용하면 됩니다.

이도 마찬가지로 value={"/hello", "/hi"} 와 같습니다. hi, hello url 둘 다에서 매핑이 됩니다.

 

 

@RequestMapping(value="/httpMethod", method=RequestMethod.GET)

package com.mycom.myapp;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@Controller
public class UrlMappingController {

	@RequestMapping(value = "/httpMethod", method = RequestMethod.GET)
	public void m2() {
		System.out.println("GET 방식");
	}


	@RequestMapping(value = "/httpMethod", method = RequestMethod.POST)
	public void m3() {
		System.out.println("POST 방식");
	}


	@RequestMapping(value = "/httpMethod", method = RequestMethod.PUT)
	public void m4() {
		System.out.println("PUT 방식");
	}


	@RequestMapping(value = "/httpMethod", method = RequestMethod.DELETE)
	public void m5() {
		System.out.println("DELETE 방식");
	}
}

만약 각각의 HTTP method 방식과 매핑되는 method 를 만들고 싶다면 method 옵션을 주시면 됩니다.

이때 value 도 꼭 붙여야합니다. value="/httpMethod1" 이런식으로 적어야하지, 그냥 "/httpMethod1" 만 적으면 오류가 납니다.

각각의 방식으로 보내지 않으면 warn 로그가 찍힙니다. 즉 오류가 납니다.

GET 방식을 쓰고 싶다면 @RequestMapping 이 아니라 그냥 @GetMapping 을 써도 됩니다. POST 도 마찬가지 입니다.

 

 

@RequestMapping(value="/hello/{no}", method=RequestMethod.GET)

package com.mycom.myapp;


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.RequestMethod;


@Controller
public class UrlMappingController {

	@RequestMapping(value = "/hello/{no}", method = RequestMethod.GET)
	public void m1(@PathVariable String no) {
		System.out.println("GET: " + no);
	}


	@RequestMapping(value = "/hello/{no}", method = RequestMethod.DELETE)
	public void m1(@PathVariable int no) {
		System.out.println("DELETE: " + no);
	}

}

만약 들어오는 method 방식은 다르되, 같은 url 을 가지고 싶다면 다음과 같이 설정합니다.

@PathVariable 로 path 를 받을 수 있습니다.

 

 

Class 에 @RequestMapping

package com.mycom.myapp;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@RequestMapping("/hihi")
@Controller
public class UrlMappingController {

	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	public void m1() {
		System.out.println("/hihi/hello");
	}

}

Class 에 @RequestMapping 을 하면 method 상위에 path 를 설정할 수 있습니다.

 

 

 

 

 

 

 

 

# Spring RequestMapping 방법 # 스프링 requestmapping path # spring requestmapping # spring RequestMapping url


 

 

 

 

728x90