Contorller에서 Request를 받는방식에는 @RequesetMapping, @PostMapping, @GetMapping이 있다.

 

 

 

@RequestMapping의 사용형태

ex)

value는 Request해주는 요청값이고(form태그의 action="test1"이렇게 받았다면 위의 RequestMapping이 받는다.) method는 요청시 Request방식이 GET인지 POST인지에 따라서 설정할 수있다.

 

 

 

@PostMapping의 사용형태

ex)

전송방식이 애초에 post형식으로 받겠다고 PostMapping을 쓴거니까 method는 따로 필요가 없다. value도 생략.

 

 

 

@GetMapping의 사용형태

ex)

전송방식이 애초에 get형식으로 받겠다고 GetMapping을 쓴거니까 method는 따로 필요가 없다. value도 생략.

 

 

위와같은 어노테이션을 사용하여 Request를 받긴하는데.. 어떻게, 어떤 Parameter를 사용하여 Request를 처리할 수 있는지를 알아보자. 

 

 

 

HttpServletRequest

 

Spring MVC는 필요한 객체나 데이터를 주입받아서 사용하게 된다. Servlet / JSP에서 파라메터를 추출할 때 HttpServletRequest객체를 통하여 Spring MVC에서 이 객체를 주입받아 사용할 수 있다. 파라메터 추출 뿐만 아니라 HttpServletRequest객체가 필요할 경우 사용하면 된다. (지금 생각나는건 session을 사용할 때.. 정도..) 

 

 

이런식으로 파라메터로 받아서 JSP Servlet에서 사용했던것처럼 request.getParameter()하여 추출하면 된다.

 

 

WebRequest

 

Servlet에서 사용했던 HttpServletRequest클래스를 확장한 클래스이다. HttpServletRequest와 거의 비슷하지만 기능이 몇개 더 있는 형태이다. 비슷하기 때문에 예제는 생략한다.

 

 

 

@PathVariable

 

요청주소 /값1/값2/값3 형태로 사용된다. 예를 들어, http://test.com/sub1/sub2/sub3 이러한 요청주소가 있으면 /이하는 하위 폴더를 의미하는 것으로 sub1아래의 sub2아래의 sub3폴더를 의미하는것이지만, @PathVariable 을 사용하면 /이하를 값으로서 인식하게 된다. 

 

<a href="test/100/200/300" /> 이렇게 요청했다고 하면, 

 

이렇게 사용할 수 있다. /test/{data1}/{data2}/{data3} 이렇게 받아오면 @PathVariable로써 같은 변수의 이름으로 바인딩할 수 있겠다. 만약 추출하는 데이터값을 정수형으로 받고 싶다면 @PathVariable int data1 과 같은 형태로 받아주면 된다 자동으로 형변환을 해준다!

 

 

 

@RequestParam

 

RequestParam은 value속성에 가져올 데이터의 이름을 적어주고 뒤에 그 데이터를 담을 변수를 선언해주는 형태로 사용한다. 주의할점은 넘어오는 데이터는 @RequestParam으로 받지 않아도 아무 문제 없다. (예를들어 Request 데이터가 data3까지 있을 때)

그런데.. 있지 않는 요청값을 @RequestParam으로 받으면 오류가 난다. (예를들어 Request 데이터가 data1밖에 없을 때)
오류 안나게 하려면.. @RequestParam (required=false) String data2 해주면 아무것도 넘어오지 않으면 null값이 들어가게 된다. (defaultValue="default")하면 아무것도 넘어오지 않으면 default라는 문자열이 주입된다!!!

 

 

 


RESTful API 같은경우에는 보통 @PathVariable 을 주로 사용하고, 파라메터 양식으로 넘어올때는 @RequestParam을 사용하면 된다.

'JAVA > Spring MVC' 카테고리의 다른 글

Redirect와 Forward  (0) 2020.04.24
Form 커스텀 태그  (0) 2020.04.24
ViewResolver 에게 전달하기  (0) 2020.04.24
객체로 파라미터 주입받기, Command Object 이용하기  (0) 2020.04.24
Spring MVC xml설정하기  (0) 2020.04.23

+ Recent posts