<!--
10페이지 단위로 표시
-->
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.io.Console"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="src.koreait.DbUtil.DBUtil"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>출첵 게시판</title>
<style type="text/css">
.button{
background: white; /*배경색*/
border: 1px solid white; /*테두리 => 선두꼐 선종류 선색상*/
color: black; /*글자색*/
padding: 6px;/*안여백*/
text-align: center; /*텍스트정렬*/
text-decoration:none; /*줄여부*/
/* display:block;*/
/* display:Inline; */
display:Inline-block;/* 같은줄에표시되게한다 */
font-size:15px; /*텍스트크기*/
margin: 0px 2px; /*바깥여백*/
width: 50px; /*가로 크기*/
height: 35px; /*높이 크기*/
cursor: pointer; /*마우스 갖다 댈때 손까락모양으로 변경됨*/
transition-duration: 0.4s; /*애니메이션 재생시간 , 0.4초 동안변경됨*/
}
.button1{
background: tomato;
color: yellow;
font-weight: bold; /*글꼴 두께*/
border: 1px solid white;
}
.button1:hover{
background: yellow;
color: tomato;
}
.button2{
background: skyblue;
color: white;
font-weight: bold; /*글꼴 두께*/
border: 1px solid white;
}
tr{
height:40px;
}
.input{
height: 25px;
}
</style>
</head>
<body>
<!-- ------------------------------------------------------입력 화면 설계----------------------------------------------------------- -->
<form action="memoinsert.jsp" method="post">
<table width="1000" align="center" border="1" cellpadding="5" cellspacing="0">
<tr>
<th colspan="3">페이지당 표시할 글의 개수 변경 기능도 구현된 출첵 게시판 ver0.99</th>
</tr>
<tr>
<td width="100" align="center">이름</td>
<td width="100" align="center">비밀번호</td>
<td width="800" align="center">메모</td>
</tr>
<tr>
<td align="center">
<input type="text" name="name" style="width: 90%"/>
</td>
<td>
<input type="password" name="password" style="width: 90%"/>
</td>
<td>
<input type="text" name="memo" style="width: 80%"/>
<input class="button button1" type="submit" value="저장"/>
</td>
</tr>
</table>
</form>
<!-- ------------------------------------------------------입력 화면 설계 끝----------------------------------------------------------- -->
<hr size="3" color="red"/>
<!--------------------------------------------------------- JSP 처리 시작 ---------------------------------------------------------------->
<%
int pageSize = 10; // 한 페이지에 표시할 글(튜플)의 갯수
int totalCount = 0; // 테이블에 저장된 전체 글(튜플)의 갯수
int totalPage = 0; //전체 페이지의 개수
int currentPage = 1; //현재 브라우저에 표시되는 페이지 번호
int startNo = 0; //현재 브라우저에 표시되는 글의 시작 인덱스 번호 => 인덱스는 0부터 시작됨
int endNo = 0; //현재 브라우저에 표시되는 글의 마지막 인덱스 번호
int startPage = 0; //페이지 이동 하이퍼링크 또는 버튼에 표시될 시작 페이지 번호
int endPage =0 ; //페이지 이동 하이퍼링크 또는 버튼에 표시될 마지막 페이지 번호
Connection conn = DBUtil.getMysqlConnection();//이것은 한번만 선언
String sql = "select count(*) from memoList";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
rs.next();
totalCount = rs.getInt(1);
out.println("테이블에 저장된 전체 글의 갯수 : " + totalCount + "개<br/>");
try{
pageSize=Integer.valueOf(request.getParameter("pageSize"));
session.setAttribute("pageSize", pageSize+"");
}catch(NumberFormatException e){
String temp=(String)session.getAttribute("pageSize");
if(temp != null){
pageSize= Integer.valueOf(temp);
}
}
totalPage= (totalCount - 1) / pageSize + 1;
try{
currentPage = Integer.valueOf(request.getParameter("currentPage"));
//currentPage 가 범위를 넘어갈시처리
currentPage = currentPage > totalPage ? totalPage: currentPage;//보안기능
}catch (NumberFormatException e){
}
startNo = (currentPage-1) * pageSize; // oracle은 결과에 1을 더한다.
sql = "select * from memolist order by idx DESC limit ?,?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, startNo);
pstmt.setInt(2, pageSize);
rs=pstmt.executeQuery();
%>
<!--------------------------------------------------------- JSP 처리 끝 ---------------------------------------------------------------->
<!--------------------------------------------------------- 게시판 시작 ---------------------------------------------------------------->
<table width="1300" align="center" border="1" cellpadding="5" cellspacing="0">
<tr>
<th width="80">글번호</th>
<th width="80">이름</th>
<th width="780">메모</th>
<th width="120">작성일</th>
<th width="120">IP</th>
<th width="120"> </th>
</tr>
<tr>
<td colspan="3">
<form action="?" method="post">
페이지당 표시할 글의 갯수를 선택하세요
<select name="pageSize" style="width: 100px; height: 25px;">
<option>3</option>
<option>5</option>
<option selected="selected">10</option>
<option>15</option>
<option>20</option>
</select>
<input class="button button1" type="submit" value="보기"/>
</form>
</td>
<td colspan="3" align="right">
<%=totalCount%>개(<%=currentPage%> / <%=totalPage%>)
</td>
</tr>
<%
if(rs.next()){
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd(E)");
do{
%>
<tr>
<td align="center"><%=rs.getString("idx")%></td>
<td align="center"><%=rs.getString("name").replace("<","<").replace(">",">")%></td>
<td><%=rs.getString("memo").replace("<","<").replace(">",">")%></td>
<td align="center"><%=sdf.format(rs.getTimestamp("writeDate"))%></td>
<td align="center"><%=rs.getString("ip")%>P</td>
<td align="center">
<input class="button button1" type="button" value="수정"
onclick="location.href='memoUpdate.jsp?idx=<%=rs.getString("idx")%>¤tPage=<%=currentPage%>'"/>
<input class="button button1" type="button" value="삭제"
onclick="location.href='memoDelete.jsp?idx=<%=rs.getString("idx")%>¤tPage=<%=currentPage%>'"/>
</td>
</tr>
<%
}while(rs.next());
} else {
%>
<tr>
<td colspan="5">
<marquee>테이블에 저장된 글이 없습니다.</marquee> <!-- marquee 태그는 글에 특수효과를 줌 상세한 옵션도 설정됨-->
</td>
</tr>
<%
}
%>
<tr>
<td colspan="6" align="center">
<%
startPage = (currentPage-1)/10*10 + 1;
endPage = startPage +9;
endPage = endPage > totalPage ? totalPage : endPage;
if(currentPage > 1){
%>
<input class="button button1" type="button" value="맨앞" title="첫 번째 페이지로 이동" onclick="location.href='?currentPage=1'"/>
<%
}else{
%>
<input class="button button2" type="button" value="맨앞" disabled="disabled" title="이미 첫 번째 페이지입니다."/>
<%
}
if(startPage>1){
%>
<input class="button button1" type="button" value="이전" title="이전 10페이지로 이동" onclick="location.href='?currentPage=<%=startPage -1%>'"/>
<%
}else{
%>
<input class="button button2" type="button" value="이전" disabled="disabled" title="이미 첫 번째 10페이지입니다."/>
<%
}
for(int i = startPage ; i<= endPage;i++){
if(i==currentPage){
%>
<input class="button button2" type="button" value="<%=i%>" disabled="disabled"/>
<%
continue;
}else{
%>
<input class="button button1" type="button" value="<%=i%>" onclick="location.href='?currentPage=<%=i%>'"/>
<%
}
}
if(endPage < totalPage){
%>
<input class="button button1" type="button" value="다음" title="다음 10페이지로 이동" onclick="location.href='?currentPage=<%=endPage +1%>'"/>
<%
}else{
%>
<input class="button button2" type="button" value="다음" disabled="disabled" title="이미 마지막 10페이지입니다."/>
<%
}
if(currentPage < totalPage){
%>
<input class="button button1" type="button" value="맨뒤" title="마지막 페이지로 이동" onclick="location.href='?currentPage=<%=totalPage%>'"/>
<%
}else{
%>
<input class="button button2" type="button" value="맨뒤" disabled="disabled" title="이미 마지막 페이지입니다."/>
<%
}
%>
</td>
</tr>
</table>
<!--------------------------------------------------------- 게시판 끝 ---------------------------------------------------------------->
</body>
</html>