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)
댓글 남기기