BACK-END/JSP
#5 게시판 만들기 - 페이징
단비_danbee
2020. 7. 29. 15:31
1. 하단에 1페이지부터 10페이지까지 출력 및 기능 구현
2. 페이지 양쪽에 [이전] [다음] 페이지 출력 및 기능 구현
3. 이름 또는 제목으로 검색 기능 구현
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ include file ="ssi.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[geustList.jsp]</title>
<style type="text/css">
*{font-size:16pt;}
a{ font-size: 16pt; color:black; text-decoration:none;}
a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}
</style>
<script type="text/javascript">
function key_record(){
}
</script>
</head>
<body> <!-- 이 파일은 단독실행 가능 -->
<%
int pageNUM, pagecount;
int start, end;
int startpage, endpage;
int tmp;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dt = new Date();
//=========================================================================================================
msg="select count(*) as cnt from guest";
ST=CN.createStatement();
RS=ST.executeQuery(msg);
RS.next();
GGtotal = RS.getInt("cnt"); //Gtotal 은 지금 316을 가지고 있다. 레코드 갯수니까.
System.out.println("[guestList22] GGtotal : " + GGtotal);
//=========================================================================================================
String sqry="";
String skey= request.getParameter("keyword");
String sval= request.getParameter("keyfield");
if(skey==null || skey=="" || sval==null || sval==""){
skey="";
sval="";
sqry=" where name like '%%' "; //null 이면 모두 출력
} else { sqry=" where "+sval+" like '%"+skey+"%'"; }
System.out.println("[guestList22] sqry : " + sqry);
String returnpage = "&keyfield="+sval+"&keyword="+skey;
System.out.println("[guestList22] returnpage : " + returnpage);
//=========================================================================================================
msg="select count(*) as cnt from guest " + sqry;
ST=CN.createStatement();
RS=ST.executeQuery(msg);
RS.next();
Gtotal = RS.getInt("cnt");
System.out.println("[guestList22] Gtotal : " + Gtotal);
//=========================================================================================================
String pnum = request.getParameter("pageNum");
if (pnum==null||pnum==""){pnum="1";}
pageNUM = Integer.parseInt(pnum);
System.out.println("[guestList22] 클릭한 페이지 : " + pageNUM);
start = (pageNUM-1)*10+1;
end = (pageNUM*10);
tmp = (pageNUM-1)%10;
startpage = (pageNUM-tmp);
endpage = (startpage+9);
if(Gtotal%10==0){pagecount=Gtotal/10;}
else {pagecount=(Gtotal/10)+1;}
String a="select * from ( ";
String b=" select rownum rn, sabun,name,title,wdate,pay,hit, email from ( ";
String y=" select * from guest "+ sqry +" order by sabun ) ";
String d=" ) where rn between " + start + " and " + end ;
msg = a + b + y + d;
ST=CN.createStatement();
RS=ST.executeQuery(msg);
%>
<p id="Pline">
<table width=900 border="1" cellspacing="0">
<tr align="center">
<td colspan="8">총 레코드 갯수 [<%= Gtotal %> / <%= GGtotal %>]</td>
</tr>
<tr align="center" bgcolor="yellow">
<td>행번호</td> <td>사번</td> <td>이름</td> <td>제목</td> <td>이메일</td> <td>날짜</td> <td>조회수</td> <td>삭제</td>
</tr>
<%
while(RS.next()){
Gsabun=RS.getInt("sabun");
Gtitle=RS.getString("title");
Gemail=RS.getString("email");
%>
<tr align="center" onmouseover="style.backgroundColor='rgb(0,200,200)'" onmouseout="style.backgroundColor=''">
<td><%= RS.getInt("rn") %></td>
<td><%= RS.getInt("sabun") %></td>
<td><%= RS.getString("name") %></td>
<td><a href="guestDetail.jsp?idx=<%=Gsabun%>"><%= RS.getString("title") %></a></td>
<td><%= RS.getString("email") %></td>
<td><%= RS.getDate("wdate") %></td>
<td><%= RS.getInt("hit") %></td>
<td align="center"><input type="button" value="삭제" onclick="location.href='guestDelete.jsp?idx=<%=Gsabun %>'"></td>
</tr>
<% } %>
<tr>
<td colspan="8" align="center"><p>
<%
if(startpage > 10){
out.println("<a href=guestList22.jsp?pageNum="+(startpage-10)+returnpage+">[이전]</a>");
}
for (int i=startpage; i<=endpage; i++){
if(i == pageNUM){out.println("<font style='font-size:17pt; color:red;'>["+i+"]</font>");}
else {out.println("<a href=guestList22.jsp?pageNum="+i+returnpage+">["+i+"]</a>");}
if(i == pagecount){ break; }
}
if(endpage < pagecount){
out.println("<a href=guestList22.jsp?pageNum="+(startpage+10)+returnpage+">[다음]</a>");
}
%><p>
</td>
</tr>
<tr>
<td colspan="8" align="center">
<a href="guestWriteCheck.jsp">[회원등록]</a>
<a href="index.jsp">[index]</a>
<a href="Login.jsp">[로그인]</a>
<a href="guestList22.jsp">[전체출력]</a>
[현재페이지 : <%=pageNUM %>]
</td>
</tr>
<tr>
<td colspan="8" align="center">
<form>
<select name = "keyfield">
<option value="">검색항목</option>
<option value="name">이름검색</option>
<option value="title">제목검색</option>
</select>
<input type="text" name="keyword" placeholder="검색어 입력">
<input type="submit" value="검색">
</form>
</td>
</tr>
</table>
</body>
</html>