[SPRING] 게시판만들기 10 [ Command객체/ RequestParam / Model]

🐷Jinie (juniorDeveloper)·2020년 12월 3일
0

JSP/MVC/SPRING

목록 보기
60/81

1. JSP 에서 Command 객체 사용하기

  • Command 객체에 저장된 데이터를 JSP에서 사용하려면 "${}"구문을 이용한다.
  • SchoolVO에 있는 변수명과 Command객체가 자동연결된다.
  • Controller에서 SchoolVO에 id값을 직접입력해본다.
  • JSP파일에서는 schoolVO. 으로 앞글자를 소문자로한 VO의 이름으로 호출한다.
    schoolVO.id를 이용해 Controller에서 Command객체를 이용해 입력한 값을 불러오자
  • 화면에 값이 잘 표기되는 것을 볼 수 있다.

    ${ } <--- EL 표기법 !!
    방법1 . ${ boardList.id } <-- 권장 방법
    방법2 . ${ boardList.getId() } <--- JSP 에서 EL 로 변경할때는 편하다.

2. @ModelAttribute

  • 스프링 컨테이너가 생성하는 Command객체의 이름은 클래스의 이름을 첫 글자를 소문자로 변경한 이름이 자동 설정된다. 그런데 이부분이 혼란이 생길 수 있어서
    확실하게 내가 사용하고자 하는 이름을 지정해버릴 수 있다.
  • 이때 @ModelAttribute 를 사용하면 된다.
  • @ModelAttribute로 이름은 "school"로 지정해준다.
  • JSP파일에서도 schoolVO대신 지정한 이름인 school로 호출한다.
  • 결과확인

3. Controller의 리턴타입

  • 기존에는 String 과 ModelAndView 의 두가지 리턴타입을 혼용했다.
  • 하지만 이제는 String으로 통일하고 싶다.
  • ModelAndView 리턴타입을 String으로 변경하고 매개변수 ModelAndView를 Model로 사용하면 된다.
  • 결과확인
  • 그렇다면 ModelAndView 와 Model의 차이점이 무엇일까?
    '데이터만 저장한다 vs 데이터와 이동하고자 하는 View Page를 같이 저장한다.'
    의 차이점을 가지고있다.
    ModelAndView는 기존 코드에서 볼 수 있듯 return할 View페이지를 같이 저장하고 있다.
    이름처럼 View 부분이 포함되는 것이다.
    하지만 View가 사라진 Model형은 addAttribute를 통해서 데이터만 저장한다.

    참고자료
    Model, ModelMap 차이점

    • Model - 인터페이스
    • ModelMap - 클래스

4. 기타 어노테이션 (@RequestParam)

  • Command 객체를 이용하면 클라이언트에서 넘겨준 요청 파라미터 정보를 받아낼 수 있다.
  • 하지만, 이를 위해서는 반드시 요청 파라미터와 매핑될 변수와 Setter 메서드가 Command 클래스에 반드시 선언되어야한다.
  • 즉, 한두번 사용하기 위해서 VO 클래스에 Setter/Getter를 하나하나 전부 추가하기 번거롭다는 뜻이다.
  • 예를 들어 목록보기의 검색창 부분에 사용하던 ch1 , ch2 같은 변수같은 것들은 매번 사용하는 변수가 아니기때문에 @RequestParam을 이용하면 좀 더 간편하다.
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글