JSP

 

 

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">
			 		 	&nbsp;
			 		 </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">&laquo;</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">&raquo;</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 더많은 무료 강의는 사이트에서 확인하실수 있습니다.

 

 

 

 

about author

PHRASE

Level 60  라이트

무엇에도 사로잡히지 않는 마음으로 모든 일에 임하라. -금강경

댓글 ( 4)

댓글 남기기

작성