컨트롤러 매개변수 앞에 붙일 수 있는 애노테이션은 두 가지가 있다. 이 애노테이션은 HTTP 요청 파라미터와 매개변수를 연결해주는 역할을 한다.
@RequestParam
매개변수 타입이 String, 기본형일 경우 HTTP 요청 파라미터와 연결할 매개변수 앞에 작성하는 애노테이션
매개변수 타입이 String, 기본형일 때 생략되어있음.
속성
- name : 파라미터 이름, 생략 시 매개변수 이름과 동일
- required : 파라미터 필수 여부 (true/ false), 생략 시 디폴트는 true
- defaultValue : 파라미터 디폴트 값 지정
@RequestMapping("/rp")
public String main(@RequestParam(name="year", required=true) int year){
return "yoil";
}
required= true 일 때, 파라미터 값을 반드시 줘야하므로 클라이언트가 잘못된 값을 전달할 경우를 대비하여 예외처리 해줘야함.
@GetMapping("/rp")
public String main(@RequestParam(name="year",required=false, defaultValue="1") int year){
return "yoil";
}
required=false 일때, 클라이언트가 값을 전달하지 않을 때를 대비하여 defaultValue로 디폴트값 지정해줘야함.
@ModelAttribute
매개변수를 Model 속성으로 자동 추가해주는 애노테이션. 매개변수, 반환 타입에 적용 가능함.
매개변수 타입이 참조형일 때 생략되어있음.
@RequestMapping("/getYoil")
// @ModelAttribute("myDate")와 같음
public String main(@ModelAttribute MyDate date, Model m){
char yoil=getYoil(date)
//m.addAttribute("myDate",date);
//m.addAttribute("yiol",yoil);
return "yoil";
}
private @ModelAttribute("yoil") char getYoil(MyDate date){
Calendar cal = Calendar.getInstance();
cal.set(date.getYear(),date.getMonth() - 1,date.getDay());
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
return " 일월화수목금토".charAt(dayOfWeek);
}
date를 모델 속성에 추가하는 코드 생략 가능.
WebDataBinder
WebDataBinder에서 하는 역할은 두 가지다. 타입 변환과 데이터 검증.
1. 타입변환
String인 year을 int로 변환하여 그 결과값을 BindingResult에 저장
2. 데이터 검증
데이터가 유효한지 검증한 후 BindingResult에 저장.
BindingReuslt를 컨트롤러에 전달하고 바인딩할 객체 뒤에 BindingResult를 작성하여 그 결과값을 볼 수 있음.
@RequestMapping("/getYoil")
public String main(@ModelAttribute MyDate date, BindingResult result){}
'Spring' 카테고리의 다른 글
[Spring]쿠키(Cookie) (0) | 2022.08.09 |
---|---|
[Spring] redirect와 forward (0) | 2022.08.09 |
[Spring] 요청 URL 경로 출력하기(feat. Filter) (0) | 2022.07.14 |
[Spring] DispatcherServlet 구현하기 (0) | 2022.07.05 |
[Spring] HttpServletResquest, HttpServletResponse (0) | 2022.07.03 |
댓글