1. myframework 워크스페이스 생성
  2. 자체 프레임워크 구성 설계
  3. 게시판 구현
    1. 글쓰기
    2. 목록 보기
    3. 본문 보기
    4. 페이징
  4. 관점의 변화(페이징)
    1. MVC M(model) V(view)
      • Model과 View를 나눠서 페이징을 진행하는 방법
      1. 페이징 관련 로직 분리하기.
        • page 패키지 새로 만들기
        • pageModule 클래스 생성하기
        • static 메서드와 String 리턴으로 메서드 만들고 StringBuffer 이용하기
          • 이유
            • static : 공통 로직, 객체 생성 불필요
            • String : JSP 출력용 HTML 반환
            • StringBuffer : String은 불변 객체라 반복적인 문자열 결합 시 객체가 계속 생성되지만, StringBuffer는 하나의 객체에서 문자열을 누적할 수 있다.
        • totalPage, userGroup, startPage, endPage에 대한 공식 만들기
        • 이전 버튼, 페이징, 다음 버튼 로직 구현하기
        • return sb.toString();
      2. Action에서 처리하기.
        • totalCnt, listSize, pageSize, cp 구하기
        • String 타입의 변수 만들어서 위에 만들어 놓은 pageModule의 인자값으로 넣어주기
        • 목록 출력 관련 메서드(DAO)에 인자값 cp, listSize를 넘기고 쿼리 수정하기.
        • req.setAttribute를 이용해 arr과 pageModule에서 리턴 받은 String 변수를 세팅 해주기
        • return jsp페이지로 이동
      3. JSP에서 처리하기.
        1. <tbody>
        • <tbody>태그 안에 JSTL Core 태그(<c:set>) 이용하고, value값에 EL 언어 이용해서 requestScope.arr 넣어주기

        • 만약 empty 라면 [등록된 게시글이 없습니다.]

        • <c:forEach> 태그 이용해서 확장형 for문으로 값 출력하기 이 때 제목을 클릭하면 내용을 볼 수 있어야 함. 그러려면 idx값을 넘겨줘야 하는데 이 때?

          • 쿼리스트링으로 넘기는 방식 보다 <c:url> 태그를 이용하는 방식을 추천함.

          b. <tfoot>

        • 페이징 된 결과를 가져와서 출력해주기만 하면 끝.

        • EL언어 이용해서 requestScope.pageStr 출력

절차 트레이닝

  1. myframework 워크스페이스 생성
    1. Servers 생성
      • 아파치 톰캣 연결
    2. Dynamic Web Project 생성
      • java17로 변경
  2. 자체 프레임워크 구성 설계
    1. java 패키지 생성 (com.beom.controller)

    2. java 클래스 생성 (CommandHandler.java)

      public interface CommandHandler {
      	public String process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
      }