컨트룰러

- @controller선언
- @RequestMapping (클라가 들어오는 주소라고 생각하면 좋다)
- Model은 결과 데이트를 화면에 전달하기 위해 사용한다
※ 스프링 MVC는 파라미터를 자동으로 수집해 주는 기능이 있으므로 Page와 size 라는 파라미터를 전달하면 PageRequestDTO 객체로 자동 수집 된다.
즉 엔티티 컬럼에 맞는 파라미터를 보내면 자동으로 수집되는 기능이다. servlet/jsp 를 해보신 사람들이라면 너무 편한 기능이다. 코드량도 많이 줄고 너무 좋은 기능 같다.
화면(view)

- 간단히 static 은 css 나 javascrpit 가 들어가고 templates에는 html 뼈대가 들어간다고 생각하면 좋다.
list.html

- 화면에 데이터를 나타낼때는 thymeleaf를 사용 했다.
- th:eachg를 이용해서 PageResultDTO 안에 있는 dtoList를 반복 처리한다.
- 마지막에 시간처리는 년/월/일/ 순으로 포맷하여 출력한다.
잠깐! tr, th ,td 가 뭐지???
※ 박스모델 = https://aboooks.tistory.com/59
목록 페이지 처리+페이지 번호 링크처리
- /list?page=2 처럼 페이지 번호를 변경하면 해당 페이지가 나오는 코드를 만든다.

-
페이지의 '이전(previous)'와 '다음(next)' 부분은 타임리프 if 를 이용해서 처리한다.
-
페이지 중간에 현재 페이지 여부를 체크해서 'active' 라는 이름의 클래스가 출력 되도록 한다.
-
'이전(previous)'의 경우에는 pageResultDTO 의 start 값에서 1보다 적은 값으로 지정하고 '다음(next)' 은 반대로 pageResultDTO의 end값보다 1이크도록 지정한다.
등록 페이지와 등록 처리

- 등록 작업은 GET방식에서는 화면을 보여주고, POST방식은 처히루에 목록 페이지로 이동하도록 만든다.
RedirectAttribute ??? addFlashAttribute ?? 처음보는데!?
- 별거없다. addAttriubute 처럼 redirect되는 페이지에(view) 정보를 보내기 위한 RedirectAttribute 라 고 생각하면 된다.
- addFlashaAttriburte 는 단한번만 데이터를 전달하는 용도로 사용한다.
- 브라우저에 전달되는 'msg'를 이용해서 화면상에 모달 창이 보이게 처리한다.
register.html

- form 태그로 method 를 post로 지정해 데이터를 전송 할수있도록 한다.
- Servlet/JSP 에서는 Input name값에 맞춰서 getParamether를 받고해야 하지만 여기서는 DTO에 수집될 데이터이므로 동일하게 맞춰주기만 하면 자동으로 수집 된다. 코드양도 많이 줄고 너무 편한 기능이다.
등록 처리와 목록 페이지의 모달창


-list페이지 일부-
-
등록이 처리된후 모달 창을 이용해 '처리되었다' 라는 결과를 보여준다.
-
Thymeleaf의 inline 속성을 이용해서 처리하면 별도의 타입 처리가 필요없다..
-
등록 후에는 msg 변수에 새로 생성된 글의 번호가 할당 되므로 msg를 이용해 모달창을 실행 한다.
등록 페이지의 링크와 조회 페이지 링크 처리
목록 페이지에서 남은 작업으 등록버튼(링크) 제공과 목록에 있는 각 글의 번호나 제목을 클릭했을때 조회 페이지(detail) 로 이동 하는 작업이다.

- 조회 페이지로 이동하는 링크를 작성 할때는 항상 다시 목록 페이지로 돌아오는 것을 염두에 두고 작업한다.
