Jsp-MVC2- ListAction, paging(페이징)
2020. 8. 10. 20:32ㆍJSP-MVC model2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package action;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import svc.BoardListService;
import vo.ActionForward;
import vo.BoardDTO;
import vo.PageInfo;
public class BoardListAction implements Action {
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
//BoardListService 클래스를 통해 게시물 전체 목록을 조회하여
//조회된 결과를 request 객체에 저장 후 qna_board_list.jsp 페이지로 포워딩
System.out.println("BoardListAction");
request.setCharacterEncoding("utf-8");
ActionForward forward=null;
// 페이징 처리를 위한 변수 선언
int page=1;// 현재 페이지 번호를 저장할 변수
int limit=10;// 한 페이지에 표시할 게시물 수
// 전달된 request 객체의 파라미터 중 "page" 파라미터가 null 이 아닐 경우
// 해당 파라미터 값을 page 변수에 저장
if(request.getParameter("page") != null) {
page=Integer.parseInt(request.getParameter("page"));
}
//BoardListService 클래스의 인스턴스 생성
BoardListService boardListService=new BoardListService();
// 전체 게시물 수 조회를 위해 BoardListService 객체의 getListCount() 메서드 호출
// 파라미터 : 없음, 리턴타입 : int(listCount)
int listCount=boardListService.selectListCount();
// 전체 게시물 목록 조회를 위해 BoardListService 객체의 getArticleList() 메서드 호출
// 파라미터 : 현재 페이지번호(page), 페이지당 게시물 수(limit)
// 리턴타입 : ArrayList<BoardDTO> (articleList)
ArrayList<BoardDTO> articleList=boardListService.getArticleList(page,limit);
//페이지 목록 처리를 위한 계산 작업
// 1.전페 페이지 수 계산( 총 게시물 수/ 페이지 당 게시물 수+ 0.95)
int maxPage=(int)((double)listCount/limit+0.95);//소수점 둘째자리 반올림을 위해 0.95
// 2.현재 페이지에서 보여줄 시작 페이지 번호(1,11,21,... 등)
int startPage=((int)((double)page/10+0.9)-1)*10+1;
// 3.현재 페이지에서 보여줄 끝 페이지 번호(10,20,30,...등)
int endPage=startPage+10-1;
// 4. 마지막 페이지가 현재 페이지에서 표시할 최대 페이지 수 (전체 페이지 수) 보다
// 클 경우 마지막 페이지 번호를 전체 페이지 번호로 교체
if(endPage>maxPage) {
endPage=maxPage;
}
// 계산된 페이지 정보들을 PageInfo 객체에 저장
PageInfo pageInfo=new PageInfo(page, maxPage, startPage, endPage, listCount);
// 페이지 정보 객체(PageInfo) 와 게시물 목록 저장된 객체(ArrayList<BoardDTO>) 를
// request 객체의 setAttribute() 메서드로 저장
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("articleList", articleList);
// ActionForward 객체 생성 후 board 폴더의 qna_board_list.jsp 페이지로 포워딩
// -> 서블릿 주소를 유지하고, request 객체를 유지해야하므로 Dispatch 방식 포워딩
forward=new ActionForward();
forward.setPath("/board/qna_board_list.jsp");
// forward.setRedirect(false);// 기본값이므로 생략가능.
return forward;
}
}
|
cs |
글 목록을 ArrayList로 넘겨받는데 DAO에서 작업한 값을 저장한 Service에서 리턴 값으로 넘겨받아서 그대로 표현해 준다. 그리고 이 곳에서 페이징 기법을 활용해서 게시글의 목록수를 정해주고 다음 페이지와 이전 페이지를 정해준다. 이 곳에선 글목록이 다음 페이지로 넘어가기 때문에 정보를 저장한 상태에서 이동하기 때문에 request.setAttribute()로 값을 생성하여 저장한 후 이동도 Dispatch방식으로 포워딩하게 값을 지정해 준다.
'JSP-MVC model2' 카테고리의 다른 글
Jsp-MVC2-PageInfo (0) | 2020.08.10 |
---|---|
Jsp-MVC2-ListSerivice (0) | 2020.08.10 |
Jsp-MVC2- ProService (0) | 2020.08.10 |
Jsp-MVC2-WriteProAction (0) | 2020.08.10 |
Jsp-MVC2-JdbcUtil (0) | 2020.08.10 |