class BoardListCon
package control;
import java.io.IOException;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.BoardBean;
import model.BoardDAO;
@WebServlet("/BoardListCon.do")
public class BoardListCon extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
reqPro(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
reqPro(request, response);
}
protected void reqPro(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//화면에 보여질 게시글의 개수를 지정
int pageSize=10;
//현재 보여지고 있는 페이지의 넘버값을 읽어드림
String pageNum =request.getParameter("pageNum");
//null 처리
if(pageNum ==null){
pageNum="1";
}
//전체 게시글의 갯수
int count=0;
//jsp 페이지 내에서 보여질 넘버링 숫자값을 저장하는 변수
int number=0;
//현재 보여지고 있는 페이지 문자를 숫자로 변환
int currentPage=Integer.parseInt(pageNum);
//전체 게시글의 갯수를 가져와야 하기에 데이터베이스 객체 생성
BoardDAO bdao =new BoardDAO();
count =bdao.getAllCount();//
//현재 보여질 페이지 시작 번호를 설정
int startRow =(currentPage -1)*pageSize+1;
int endRow =currentPage *pageSize;
//최신글 10개를 기준으로 게시글을 리턴 받아주는 메소드 호출
Vector<BoardBean> v =bdao.getAllBoard(startRow, endRow);
number = count - (currentPage - 1) * pageSize;
/////// BoardList.jsp 쪽으로 request 객체에 담아서 넘겨줌
request.setAttribute("v",v);
request.setAttribute("number", number);
request.setAttribute("pageSize", pageSize);
request.setAttribute("count", count);
request.setAttribute("currentPage", currentPage);
RequestDispatcher dis =request.getRequestDispatcher("BoardList.jsp");
dis.forward(request, response);
}
}
BoardList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<jsp:include page="Header.jsp"/>
</head>
<body>
<!-- 게시글 보기에 카운터링을 설정하기위한 변수들을 선언 -->
<div class="row">
<div class="col-xs-2"></div>
<div class="col-xs-8 col-md-8">
<h2 class="text-center">전체 게시글 보기
</h2>
<p class="text-right">
<input type="button" value="글쓰기" onclick="location.href='BoardWrite.jsp'" class="btn btn-warning">
</p>
<div class="table-responsive">
<table class="table table-bordered table-striped" >
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<c:forEach items="${v }" var="bean">
<c:set var="number" value='${number }' />
<tr>
<td>${number }</td>
<td><a href="BoardInfo.jsp?num=${bean.num}" >
<c:if test="${ bean.re_step >1}">
<c:forEach begin="${bean.re_step }" end="${(bean.re_step -1)*5 }" var="j">
</c:forEach>
</c:if>
${bean.subject }
</a></td>
<td>${bean.writer }</td>
<td>${bean.reg_date}</td>
<td>${bean.readcount}</td>
</tr>
<c:set var="number" value='${number-1 }' />
</c:forEach>
<tr>
<td colspan="5" class="text-center">
<!-- 페이지 카우터링 소스를 작성 -->
<nav>
<ul class="pagination">
<%-- <%
//이전이라는 링크를 만들건지 파악
if(paging.getStartPage() >10){
%>
<li><a href="BoardList.jsp?pageNum=<%=paging.getPrev() %>" aria-label="Previous"><span aria-hidden="true">«</span></a></li>
<%
}
//페이징 처리
for(int i=paging.getStartPage(); i<=paging.getEndPage(); i++){
%>
<li <% if(i==Integer.parseInt(pageNum))
out.print("class='active'");
%>><a href="BoardList.jsp?pageNum=<%=i %>"><%=i %><span class="sr-only">(current)</span></a></li>
<%
}
//다음 이라는 링크를 만들건지 파악
if( paging.getEndPage() < paging.getPageCount()){
%>
<li><a href="BoardList.jsp?pageNum=<%=paging.getNext() %>" aria-label="next"><span aria-hidden="true">»</span></a></li>
<%
}
%> --%>
</ul>
</nav>
</td>
</tr>
</table>
</div>
</div>
</div>
<jsp:include page="Bottom.jsp"/>
</body>
</html>
Board.SQL
CREATE SEQUENCE BOARD_SEQ START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999999999999999
NOMINVALUE
NOORDER
NOCYCLE
NOCACHE;
-- 또다른 maxvalue 무한설정
CREATE SEQUENCE BOARD_SEQ
START WITH 1
INCREMENT by 1
NOMAXVALUE
nocache;
drop table board;
create table board(
num number primary key,
writer varchar2 (20),
email varchar2(50),
subject varchar2(50),
password varchar2(10),
reg_date Date,
ref number,
re_step number,
re_level number,
readcount number,
content varchar2(3000)
);
동영상 강좌와 다르게 모바일 적용이 가능한 반응형 부트스트랩을 사용하였다.
여기서는 jsp 를 배우는 강좌 이기 때문에 html 적 요소에는 비중있게 생각 하지 않아도 될 것이다.
또한, 일부 자바 코드는 제 입맛에 맞게 변경 하였습니다.
혹시, 이 강의를 들으면서 제 글을 읽고 소스코드를 참조하는 수강생이 있다면 동영상의 코드와 다르다고 생각지 마세요. 대부분 동여상 내용과 같으니 학습에 도움이 될거라 생각 합니다.
소스 : https://github.com/braverokmc79/jsp_sin
유튜브 동영상 출처 :
강사 : 신형섭(잭임연구원)
저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.














댓글 ( 4)
댓글 남기기