게시글 목록 조회
01. board에 관한 .jsp 파일 생성
- webapp > views > board 밑에 생성
- list.jsp(게시글 목록 조회) | update.jsp(게시글 수정) | view.jsp(작성한 글 상세 보기) | write.jsp(게시글 작성)
- 목표
1) 파일 업로드, 파일 다운로드 구현
2) 댓글 기능 구현
- 데이터베이스 BOARD TABLE 생성, COMMENT 생성, 시퀀스 생성, PL/SQL 프로시저 (pk, fk 제약조건 참고 하기
2. list.jsp를 위한 서블리 생성 : ListServlet.java
- com > kh > mvc > board > controller
- URL Mappings : /board/list | doGet 체크
1) 게시글 리스트 조회
(1) 사용자 요청에 대해서 처리하는 역할, 결과만 전달하는 역할이기 때문에 forward로 처리한다.
request.getRequestDispatcher("/위치/list.jsp").forward(request, response);
(2) header.jsp
게시판으로 이동할 영역에 <a href="${ path }/board/list"> 작성한다.
2) 페이징 처리
(1) PageInfo.java 클래스 생성 : 페이징 처리에 대한 로직 구현
(2) PageInfo 객체를 만들고 정수형 변수 page에 사용자로부터 받아오는 값을 정수로 형변환 해서 담아준다.
== 여기까지만 하면 HTTP 500 에러 발생 : NumberFormatException : null
WHY? 최초에 게시판을 들어올 때는 page에 넘겨주는 파라미터 값이 없다. 그래서 null이 발생한다.
[해결 방법]
1. NULL 처리 구문 작성
// 삼항 연산자 사용
page = request.getParameter("page") != null ? Integer.partseInt(request.getParameter("page")) : 1;
2. try ~ catch 구문으로 처리
try {
page = Integer.parseInt(request.getParameter("page"));
} catch (NumberFormatException e) {
page = 1;
}
pageInfo = new PageInfo(int currentPage, int pageLimit, int listCount, int listLimit)
- currentPage : 현재 페이지
- pageLimit : 한 페이지에 보이는 페이지의 수
- listCount : 전체 리스트의 수
- listLimit : 한 페이지에 표시될 리스트의 수
- listCount를 서버에서 얻어오기 위해서, 서비스 객체를 만든다.
- BoardService() 객체 만들기
- listCount = service.getBoardCount(); : 게시글의 전체 개수를 리턴한다.
3. BoardService.java 만들기
- com > kh > mvc > board > model > service 밑에 생성
- BoardService 클래스에 getBoardCount() 메소드 생성
- 서비스에서도 직접 데이터 베이스에 접근해서 데이터를 가져오지 않고, DAO 객체에 위임한다.
- 따라서 BoardDao 객체를 생성
4. BoardDao.java 만들기
- com > kh > mvc > board > model > dao 밑에 생성
5. BoardService.java
- 데이터 베이스와 연결하기 위해 Connection(java.sql) 객체 생성한다.
- 정수형 변수 count를 선언하고 dao를 통해 데이터 베이스에 저장된 게시글의 개수를 얻어온다. 매개변수는 connection을 넘겨준다. count = dao.getBoardCount(connection);
- BoardDao 클래스에 getBoardCount() 메소드 생성
6. BoardDao.java
- 정수형 변수 count를 선언
- String query를 선언하고 회원들을 조회할 수 있는 SELECT 쿼리문 작성
- SELECT문을 사용하기 때문에 ResultSet 객체 필요하다.
- PreparedStatement 선언
- connection으로 prepareStatement(query)를 가져와서 pstmt 변수에 담아준다.
- ResultSet인 rs = pstmt.executeQuery();
- ResultSet은 한 개의 행을 검색하기 때문에 반복문 사용할 필요가 없다.
- if 문 활용한다.
'Programming > SERVER' 카테고리의 다른 글
DAY 125. MVC2 패턴 - 게시글 삭제, 게시글 수정 (0) | 2021.12.21 |
---|---|
DAY 124. MVC2 패턴 - 게시글 작성 (0) | 2021.12.20 |
DAY 120. MVC2 패턴 - 회원가입 (0) | 2021.12.16 |
DAY 119. MVC2 패턴 - JDBCTemplate (0) | 2021.12.15 |
DAY 118. MVC2 패턴 - 인코딩, 암호화 필터 (0) | 2021.12.14 |