RequestParam, ModelAttribute

뫄뫄(ahk)·2022년 9월 17일
0

Spring

목록 보기
7/18
post-thumbnail

이 게시글은 남궁성강사님의 '스프링의 정석' 강의를 정리, 요약했습니다

@RequestParam

요청의 queryString에 담겨있는 특정한 값과 메서드 파라미터가 관련있음을 알려주는 에너테이션이다.

@RequestMapping("/hello")
//public String main(@RequestParam(name="year", required=true) int year){
public String main(@RequestParam int year){
	...
}

//public String main(@RequestParam(name="year", required=false) int year{
public String main(int year){
	...
}
  • 생략 가능
    • String, 기본형일 때 생략 가능. 사실 생략되어있다.
    • 생략하면 @RequestParam(name="변수이름", required="false") 와 동일
  • 옵션을 다 외울 필요 는 없고 필요할 때 required옵션을 주면 된다.
@RequestMapping("/hello")
public String main(@RequestParam(name="year", required="?") int year){
	...
}
  • required = false ch2/hello —> year = null / 500 error / int로 형변환해야 하는데 null ch2/hello?year —> year = “” / 400 error / int로 형변환 해야하는데 빈문자열 → 값이 안 들어왔을 때(null or “”)를 대비하여 defaultValue 옵션을 줘야 한다.
    • defaultValue ≠ request.getParameter(”year”)

      defaultValue를 설정한다고 위와 같이 year값을 가져올 수 없다. model객체로 값을 넘기거나 해야 한다.

  • required = true ch2/hello —> year = null / 404 not found ch2/hello?year —> year = “” / 500 error / “”을 int 로 형변환 불가 → 형변환 예외나 nullException일 때를 대비해 예외처리를 해야한다.

ModelAttribute

@RequestMapping("/hello")
public String main(@ModelAttribute("myDate") MyDate myDate){
	...
}

public @ModelAttribute("yoil") String getYoil(MyDate myDate){
	...
}
  • key(괄호안 문자열) 생략 시 첫 글자를 소문자로 바꾼 타입을 key로 자동 설정
  • 반환 타입과 (url과 매핑된 메서드의) 매개변수에 작성 가능하며, 적용 대상을 model에 자동 저장
  • 참조형 매개변수 앞의 @ModelAttribute 를 생략가능하다. → 이때까지 파라미터에 작성한 참조변수가 다 model에 자동저장 됐던 것.
  • spring이
  • 기본형, String의 파라미터 값은 이 애너테이션으로 model에 저장할 필요가 없다. jsp에서 param.(변수이름) 으로 바로 사용 가능
profile
NONONONONONOYes!

0개의 댓글