리스트 페이지(list.jsp)
<%@page import="com.util.DBCPConn"%> <%@page import="java.net.URLEncoder"%> <%@page import="java.net.URLDecoder"%> <%@page import="com.util.MyUtil"%> <%@page import="com.board.BoardDTO"%> <%@page import="java.util.List"%> <%@page import="com.board.BoardDAO"%> <%@page import="com.util.DBConn"%> <%@page import="java.sql.Connection"%> <%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
Connection conn = DBCPConn.getConnection(); BoardDAO dao = new BoardDAO(conn); MyUtil myutil = new MyUtil();
//넘어온 페이지 번호(MyUtil,article,update,delete) String pageNum = request.getParameter("pageNum");
//첫시작시 현재페이지 1 int currentPage = 1;
//넘어온 페이지 번호가 존재할 경우 현재페이지에 값 넣어주기 if(pageNum!=null) currentPage = Integer.parseInt(pageNum);
//검색키와 값 String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue");
//검색어가 있을 경우 if(searchValue!=null){ if(request.getMethod().equalsIgnoreCase("GET")){ searchValue = URLDecoder.decode(searchValue,"UTF-8"); }
}else{//검색어가 없을 경우 searchKey="subject"; searchValue = ""; }
//전체데이터 갯수 구하기 int dataCount = dao.getDataCount(searchKey, searchValue);
//한페이지에 표시할 데이터의 갯수 int numPerPage = 5;
//전체 페이지수 구하기 int totalPage = myutil.getPageCount(numPerPage, dataCount);
//전체페이지수가 표시할 페이지수보다 큰 경우(삭제로 인해) if(currentPage>totalPage) currentPage = totalPage; //데이터베이스에서 가져올 rownum의 시작과 끝 int start = (currentPage-1)*numPerPage+1; int end = currentPage*numPerPage;
//데이터베이스에서 해당 페이지를 가져온다. List<BoardDTO> lists = dao.getLists(start, end, searchKey, searchValue);
//검색(기능을 사용할 경우 get방식의 주소에 추가로 적용시켜주겠다. 사용자정의) String param = ""; if(!searchValue.equals("")){ param = "?searchKey="+searchKey; param+= "&searchValue=" + URLEncoder.encode(searchValue, "UTF-8"); }
//페이징 처리 String listUrl = "list.jsp"+param; String pageIndexList = myutil.pageIndexList(currentPage, totalPage, listUrl);
//글내용 보기 주소 정리(html에서 onclick의 주소가 너무 기니까 한번에 정리) String articleUrl = cp+"/board/article.jsp"; if(param.equals("")){ articleUrl += "?pageNum="+currentPage; //board/article.jsp?pageNum=5 }else{ articleUrl += param + "&pageNum="+currentPage; //board/article.jsp?searchKey=name&searchValue=suzi&pageNum=5 } DBCPConn.close(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게 시 판</title> <link rel="stylesheet" href="<%=cp %>/board/css/style.css" type="text/css" /> <link rel="stylesheet" href="<%=cp %>/board/css/list.css" type="text/css" /> <script type="text/javascript"> function sendIt(){ var f = document.searchForm; f.action = "<%=cp %>/board/list.jsp"; 검색버튼을 누를경우 리스트페이지로 이동 f.submit(); } </script> </head> <body> <div id="bbsList"> <div id="bbsList_title"> 게 시 판(JSP) </div> <div id="bbsList_header"> <div id="leftHeader"> <form action="" name="searchForm" method="post"> <select name="searchKey" class="selectField"> <option value="subject">제목</option> <option value="name">작성자</option> <option value="content">내용</option> </select> <input type="text" name="searchValue" value="<%=searchValue %>" class="textField"/> <input type="button" value="검 색" class="btn2" onclick="sendIt()"/> </form> </div> <div id="rightHeader"> <input type="button" value=" 글올리기 " class="btn2" onclick="javascript:location.href='<%=cp %>/board/created.jsp';" /> </div> </div>
<div id="bbsList_list"> <div id="title"> <dl> <dt class="num">번호</dt> <dt class="subject">제목</dt> <dt class="name">작성자</dt> <dt class="created">작성일</dt> <dt class="hitCount">조회수</dt> </dl> </div>
<div id="lists"> <% for(BoardDTO dto: lists){ %> <dl> <dd class="num"><%=dto.getNum() %></dd> <dd class="subject"> <a href="<%=articleUrl %>&num=<%=dto.getNum() %>"> <%=dto.getSubject() %> </a> </dd> <dd class="name"><%=dto.getName() %></dd> <dd class="created"><%=dto.getCreated() %></dd> <dd class="hitCount"><%=dto.getHitCount() %></dd> </dl> <% } %> </div>
<div id="footer"> <p> <%=pageIndexList %> <!-- 마우스를 올려놨을때 주황색으로 바뀌도록 a:hover에 스타일 부여함 --> </p> </div> </div> </div> </body> </html> |
페이지 클래스(MyUtil.java)
package com.util; public class MyUtil {
//전체페이지수 구하기 //numPerPage : 한화면에 표시할 데이터 갯수 //dataCount : 전체 데이터 갯수 public int getPageCount(int numPerPage, int dataCount){
int pageCount=0; pageCount = dataCount/numPerPage;
if(dataCount % numPerPage!=0){ //나머지가 0이 아니면 페이지 하나 더 만듦 pageCount++; } return pageCount; }
//페이징 처리 메소드 //currentPage : 현재 표시할 페이지 //totalPage : 전체 페이지 수 //listUrl : 링크를 설정할 URL(list.jsp) public String pageIndexList(int currentPage, int totalPage, String listUrl){
int numPerBlock = 5; //리스트밑에 나오는 페이지번호 출력 갯수 int currentPageSetup; //표시할 첫 페이지의 -1 해준 값 int page; //하이퍼링크가 될 page index 숫자
StringBuffer sb = new StringBuffer(); if(currentPage==0 || totalPage==0){ //데이터 없을 경우 return ""; }
//list.jsp //list.jsp?searchKey=name&searchValue=suzi 검색한내용의 인수와 변수값이 붙음 if(listUrl.indexOf("?")!=-1){//물음표가 있으면 listUrl = listUrl + "&"; //list.jsp?searchKey=name&searchValue=suzi& }else{ listUrl = listUrl + "?"; //list.jsp? }
//표시할 첫페이지에서 -1 한 값 currentPageSetup = (currentPage/numPerBlock)*numPerBlock;
//currentPage가 numPerBlock으로 나누어 떨어질 경우 if(currentPage % numPerBlock == 0) currentPageSetup = currentPageSetup - numPerBlock ;
//◀이전 버튼 if(totalPage>numPerBlock && currentPageSetup>0){ sb.append("<a href=\""+listUrl + "pageNum=" + currentPageSetup + "\">◀이전</a> " ); //<a href="list.jsp?pageNum=5">◀이전</a> 역슬래시로 쌍따옴표가 문자로 인식되게함 }
//바로가기 페이지 page = currentPageSetup+1;//currentPageSetup에 +1한 값 부터 페이지번호가 시작됨
//바로가기 페이지는 전체페이지수보다 커질수없음 while(page<=totalPage && page<=(currentPageSetup+numPerBlock)){ if(page == currentPage){ sb.append("<font color=\"Fuchsia\">"+page+"</font> "); //<font color="Fuchsia">9</font> }else{ sb.append("<a href=\""+ listUrl + "pageNum=" + page+ "\">"+page+"</a> "); //<a href="list.jsp?pageNum=10">10</a> } page++; }
//다음▶,마지막페이지 if(totalPage - currentPageSetup > numPerBlock){ //총 페이지 12일때, 현재 페이지가 10페이지라면 //numPerBlock 5 보다 작으므로 다음버튼 생성하지않음 sb.append("<a href=\"" + listUrl +"pageNum=" +page + "\">다음▶</a> " ); //<a href="list.jsp?pageNum=11">다음▶</a> } return sb.toString(); } } |
인덱스 출력 html 태그
<a href="list.jsp?pageNum=5">◀이전</a> <a href="list.jsp?pageNum=6">6</a> <font color="Fuchsia">7</font> <a href="list.jsp?pageNum=8">8</a> <a href="list.jsp?pageNum=9">9</a> <a href="list.jsp?pageNum=10">10</a> <a href="list.jsp?pageNum=11">다음▶</a> |
'Dev > JSP & Servlet' 카테고리의 다른 글
JSP 게시판(3) - JSP 페이지 (0) | 2019.02.25 |
---|---|
JSP 게시판(2) - DTO, DAO 생성 (0) | 2019.02.25 |
JSP - 성적처리 페이지 만들기 (0) | 2019.02.19 |
이클립스 플러그인 설치(퀀텀DB) (0) | 2019.02.19 |
JSP - 액션태그를 활용하여 페이지 만들기 (0) | 2019.02.19 |