@RequestMapping
@RequestMapping은 Http 요청 매핑에 사용되는 기본적인 어노테이션이다. 클래스와 메서드 모두에서 사용할 수 있는데, 다음 속성을 이용하여 제어한다.
속성
**예시
@Controller
@RequestMapping("/board")
@Log4j
public class SampleController{
@RequestMapping("/view.do", method=RequestMethod.GET)
public void ex01(Long no, String id){
log.info("글 번호: "+no);
log.info("ID: "+id);
}
}
메서드 파라미터 변수명을 uri 파라미터와 동일하게 두면 자동으로 Mapping이 된다. 이 경우, 콘솔에 다음과 같은 log가 찍힐 것이다.
INFO: ... 글 번호: 124
INFO: ... 글 번호: velog
개념
앞에서 설명한 바와 같이 메서드 파라미터의 변수명와 uri 파라미터가 같으면 자동 매핑이 되지만, 모종의 이유로 메서드 파라미터와 uri 파라미터가 같지 않을 수도 있다. 이럴 때 사용하는 것이 RequestParam이다. @RequestParam은 uri 파라미터와 메서드의 매개변수를 바인딩하는 어노테이션이다.
사용법
//uri: localhost/board/view.do?no=124&id=velog
public class SampleController{
@RequestMapping("/view.do", method=RequestMethod.GET)
public void ex01(@RequestParam("no") Long num, String id){
log.info("글 번호: "+num);
log.info("ID: "+id);
}
}
위 코드와 같이 @RequestParam(//uri파라미터)를 이용하면 메서드의 매개변수의 변수명과 uri의 파라미터명이 서로 달라도 매핑이 가능하다.
//uri: localhost/board/view.do?no=124&id=velog
public class SampleController{
@RequestMapping("/view.do", method=RequestMethod.GET)
public void ex01(@RequestParam(defulatValue="1") Long no, String id){
log.info("글 번호: "+num);
log.info("ID: "+id);
}
}
uri로 반드시 파라미터 값을 전달해야 하는 경우, 파라미터 누락을 고려하여 기본값을 지정할 수 있다. 위 코드는 no의 기본값을 1로 설정하고 있다.
개요
uri가 다음과 같다고 가정하자.
localhost/board/write.do?tel=010&tel=1234&tel=5678
파라미터명이 여러 번 사용되면 Controller는 배열형태로 파라미터를 수집해야 한다. 배열 파라미터를 수집하는 방법은 크게 두 가지로 나뉜다.List
public class SampleController{
@RequestMapping("/write.do", method=RequestMethod.GET)
public void write(@RequestParam("tel") ArrayList<String> tel){
log.info("tel: "+tel);
}
}
ArrayList는 @RequestParam으로 uri 파라미터와 메서드의 매개변수를 바인딩해야 한다. 이 코드의 실행 결과는 다음과 같다.
INFO: ... tel: [010, 1234, 5678]
public class SampleController{
@RequestMapping("/write.do", method=RequestMethod.GET)
public void write(String[] tel){
log.info("tel: "+Array.toString(tel));
}
}
배열은 별도의 바인딩이 필요없다. 이 코드를 실행한 결과는 ArrayList의 결과와 동일하다.
INFO: ... tel: [010, 1234, 5678]