N스크린하이브리드앱과정/JSP:Model-1

[7주차] JSP: 게시판 만들기 총정리

광천스러움 2013. 9. 3. 18:10

* 파일 첨부

content.jsp

deleteForm.jsp

deletePro.jsp

list.jsp

reWrite.jsp 

reWritePro.jsp

updateForm.jsp

updatePro.jsp

writeForm.jsp

writePro.jsp

 

* 게시판 소스

1. list.jsp (목록 리스트)

<%
//게시판 글개수
//디비객체생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
int count=0;
//count=메서드 호출 getBoardCount()
count = dbPro.getBoardCount();
//한페이지에 몇개 글 가져오기
int pageSize=10;
//현페이지 몇페이지 가져오기
String pageNum = request.getParameter("pageNum");
if(pageNum == null){
 pageNum="1";
}
//현페이지 시작행 구하기
int currentPage = Integer.parseInt(pageNum);
int startRow = (currentPage-1)*pageSize+1;
int endRow = currentPage*pageSize;
List boardList = null;
if(count!=0){
 //boardList = 메서드 호출 getBoards(startRow,pageSize)
 boardList = dbPro.getBoards(startRow, pageSize);
}
%>
<h1>게시판 목록(전체글:<%=count %>)</h1>
<h3><a href="writeForm.jsp">글쓰기</a></h3>
<table border="1">
<tr><td>번호</td><td>제목</td><td>작성자</td>
 <td>작성일</td><td>조회</td><td>IP</td></tr>
<%
if(count!=0){
 for(int i=0; i<boardList.size(); i++){
  BoardDataBean board = (BoardDataBean) boardList.get(i);
  %>
  <tr><td><%=board.getNum() %></td>
  <td>
  <%
  int wid=0;
  if(board.getRe_level()>0){
   //답변글
   wid = 10*board.getRe_level();
   %>
   <img src="img/level.gif" width="<%=wid%>">
   <img src="img/re.gif">
   <%
  }
  %>
  <a href="content.jsp?num=<%=board.getNum()%>&pageNum=<%=currentPage%>"><%=board.getSubject() %></a></td>
  <td><%=board.getWriter() %></td>
  <td><%=board.getReg_date() %></td>
  <td><%=board.getReadcount() %></td>
  <td><%=board.getIp() %></td></tr>
<%}}
%>
</table>
<%
if(count>0){
 //페이징 작업을 하기 위해서는 전체 페이지수가 필요
 //전체 페이지수 구하기//50개=>5페이지, 51~59개=>6페이지
 int pageCount = count/pageSize+(count%pageSize==0?0:1);
 //한 페이지에 보여줄 페이지수 설정
 int pageBlock = 10;
 //한 페이지에 보여지는 시작페이지 구하기
 int startPage = ((int)(currentPage/pageBlock)-(currentPage%pageBlock==0?1:0))*pageBlock+1;
 //한 페이지에 보여지는 끝페이지 구하기
 int endPage = startPage+pageBlock-1;
 if(endPage>pageCount){
  endPage=pageCount;
 }
 //[이전]
 if(startPage>pageBlock){
  %><a href="list.jsp?pageNum=<%=startPage-pageBlock%>">[이전]</a><%
 }
 //[1]~[10]
 for(int i=startPage; i<=endPage; i++){
  %><a href="list.jsp?pageNum=<%=i%>">[<%=i %>]</a><%
 }
 //[다음]
 if(endPage<pageCount){
  %><a href="list.jsp?pageNum=<%=startPage+pageBlock%>">[다음]</a><%  
 }
}
%>

 

 

2. writeForm.jsp (글쓰기)

헤드

<!-- script.js 파일을 불러오는 자바스크립트 태그 -->
<script language="javascript" src="js/script.js"></script>
<!-- css파일을 불러오는 태그 -->
<link href="css/style.css" rel="stylesheet" type="text/css">

HTML

<h1>게시판 글쓰기</h1>
<form action="writePro.jsp" method="post" name="fr" onsubmit="return writeSave()">
<table border="1">
<tr><td>이름</td><td><input type="text" name="writer"></td></tr>
<tr><td>제목</td><td><input type="text" name="subject"></td></tr>
<tr><td>Email</td><td><input type="text" name="email"></td></tr>
<tr><td>내용</td><td><textarea name="content" rows="13" cols="40"></textarea></td></tr>
<tr><td>비밀번호</td><td><input type="text" name="passwd"></td></tr>
<tr><td><input type="submit" value="글쓰기">
<input type="reset" value="다시작성">
<input type="button" value="목록보기" onclick="location.href='list.jsp'"></td></tr>
</table>
</form>

 

3. writePro.jsp (글쓰기 동작)

<%
// 한글처리
request.setCharacterEncoding("utf-8");
//자바빈생성 패키지 board, 파일이름 BoardDataBean
//액션태그 자바빈 객체 생성 board
//액션태그 폼 -> 자바빈 저장
%><jsp:useBean id="board" class="board.BoardDataBean"/>
<jsp:setProperty property="*" name="board"/>
<%

//수동으로 ip주소 reg_date 저장하게 해주고
board.setReg_date(new Timestamp(System.currentTimeMillis())); //현재 시간을 Reg_date에 저장
board.setIp(request.getRemoteAddr()); //ip주소를 받아서 IP에 저장
//디비파일생성 패키지 board, 파일이름 BoardDBBean
//디비객체생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
//메서드 호출 insertBoard(board)
dbPro.insertBoard(board);
//이동 list.jsp
%>
<script type="text/javascript">
alert("게시판 글쓰기 성공!");
location.href="list.jsp";
</script><%
%>

 

 

4. content.jsp (글 내용 보기)

<%
//int num과 String pageNum 가져오기
String str = request.getParameter("num");
int num = Integer.parseInt(str);
String pageNum = request.getParameter("pageNum");
//디비객체 생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
//조회수 1증가
dbPro.updateReadCount(num);
//자바빈 board = 메서드 호출 getBoard(num)
BoardDataBean board = dbPro.getboard(num);
%>
<h1>글내용보기</h1>
<table border="1">
<tr><td>글번호</td><td><%=board.getNum() %></td>
 <td>조회수</td><td><%=board.getReadcount() %></td></tr>
<tr><td>작성자</td><td><%=board.getWriter() %></td>
 <td>작성일</td><td><%=board.getReg_date()%></td></tr>
<tr><td>글제목</td><td colspan="3"><%=board.getSubject() %></td></tr>
<tr><td>글내용</td><td colspan="3"><%=board.getContent() %></td></tr>
<tr><td colspan="4">
<input type="button" value="글수정" onclick="location.href='updateForm.jsp?num=<%=num%>&pageNum=<%=pageNum%>'">
<input type="button" value="글삭제" onclick="location.href='deleteForm.jsp?num=<%=num%>&pageNum=<%=pageNum%>'">
<input type="button" value="답글쓰기" onclick="location.href='reWrite.jsp?num=<%=num%>&ref=<%=board.getRef() %>&re_step=<%=board.getRe_step()%>&re_level=<%=board.getRe_level()%>'">
<input type="button" value="글목록" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'">
</td></tr>
</table>

 

 

5. updateForm.jsp (글 수정)

<%
//int num    String pageNum
int num = Integer.parseInt(request.getParameter("num"));
String pageNum=request.getParameter("pageNum");
//디비객체생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
//자바빈 board=메서드호출 getBoard(num)
BoardDataBean board = dbPro.getboard(num);
%>
<h1>게시판 글수정</h1>
<form action="updatePro.jsp?pageNum=<%=pageNum %>" method="post">
<input type="hidden" name="num" value="<%=num%>">
<table border="1">
<tr><td>이름</td>
<td><input type="text" name="writer" value="<%=board.getWriter()%>"></td></tr>
<tr><td>제목</td>
<td><input type="text" name="subject" value="<%=board.getSubject()%>"></td></tr>
<tr><td>Email</td>
<td><input type="text" name="email" value="<%=board.getEmail()%>"></td></tr>
<tr><td>내용</td>
<td><textarea name="content" rows="13" cols="40"><%=board.getContent()%></textarea></td></tr>
<tr><td>비밀번호</td>
<td><input type="password" name="passwd"></td></tr>
<tr><td><input type="submit" value="글수정">
<input type="reset" value="다시작성">
<input type="button" value="목록보기" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'"></td></tr>
</table>
</form>

 

 

6. updatePro.jsp (글 수정 동작)

<%
//한글처리
request.setCharacterEncoding("utf-8");
//액션태그 자바빈 객체 생성 board
//액션태그 폼 => 자바빈 저장
%><jsp:useBean id="board" class="board.BoardDataBean"/>
<jsp:setProperty property="*" name="board"/>
<%
//pageNum 가져오기
String pageNum = request.getParameter("pageNum");
//디비객체 생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
//int check=수정메서드 호출 updateBoard()
int check = dbPro.updateBoard(board);
// check==1이면 list.jsp?pageNum=로 이동 pageNum값 가지고 이동
// check==0 비밀번호 틀림 뒤로이동
if(check==1){
 response.sendRedirect("list.jsp?pageNum="+pageNum);
}else{
 %><script type="text/javascript">
 alert("비밀번호 틀림");
 history.back();
 </script><%
}
%>

 

7. deleteForm.jsp (글 삭제)

<%
// int num값, String pageNum값
int num = Integer.parseInt(request.getParameter("num"));
String pageNum = request.getParameter("pageNum");
%>
<h1>글삭제</h1>
<form action="deletePro.jsp?pageNum=<%=pageNum %>" method="post">
<input type = "hidden" name="num" value="<%=num %>">
<table border="1">
<tr><td>비밀번호 입력하세요</td></tr>
<tr><td><input type="password" name="passwd"></td></tr>
<tr><td>
<input type="submit" value="글삭제">
<input type="button" value="글목록" onclick="location.href='list.jsp?pageNum=<%=pageNum %>'">
</td></tr>
</table>
</form>

 

 

8. deletePro.jsp (글 삭제 동작)

<%
// int num
int num = Integer.parseInt(request.getParameter("num"));
// String pageNum
String str = request.getParameter("pageNum");
int pageNum = Integer.parseInt(request.getParameter("pageNum"));
// String passwd
String passwd = request.getParameter("passwd");

// 디비객체생성  dbPro
BoardDBBean dbPro = new BoardDBBean();
// int check = 메서드 호출 deleteBoard(num,passwd)
int check = dbPro.deleteBoard(num, passwd);
// check==1 이면 list.jsp?pageNum=
// check==0 비밀번호틀림 뒤로 이동
if(check==1){
 response.sendRedirect("list.jsp?pageNum="+pageNum);
}else{
 %><script type="text/javascript">
 alert("비밀번호 틀렸어!");
 history.back();
 </script>
 <%
}
%>

 

9. reWrite.jsp (답글 쓰기)

<%
int num = Integer.parseInt(request.getParameter("num"));
int ref = Integer.parseInt(request.getParameter("ref"));
int re_step = Integer.parseInt(request.getParameter("re_step"));
int re_level = Integer.parseInt(request.getParameter("re_level"));
BoardDBBean dbPro = new BoardDBBean();
BoardDataBean board = dbPro.getboard(num);
%>
<h1>게시판 답글쓰기</h1>
<form action="reWritePro.jsp" method="post">
<input type="hidden" name="num" value="<%=num%>">
<input type="hidden" name="ref" value="<%=ref%>">
<input type="hidden" name="re_level" value="<%=re_level%>">
<input type="hidden" name="re_step" value="<%=re_step%>">
<table border="1">
<tr><td>이름</td><td><input type="text" name="writer"></td></tr>
<tr><td>제목</td><td><input type="text" name="subject" value="[답글] <%=board.getSubject() %>"></td></tr>
<tr><td>Email</td><td><input type="text" name="email"></td></tr>
<tr><td>내용</td><td><textarea name="content" rows="13" cols="40"></textarea></td></tr>
<tr><td>비밀번호</td><td><input type="text" name="passwd"></td></tr>
<tr><td><input type="submit" value="답글쓰기">
<input type="reset" value="다시작성">
<input type="button" value="목록보기" onclick="location.href='list.jsp'"></td></tr>
</table>
</form>

 

10. reWritePro.jsp (답글 쓰기 동작)

<%
// 한글처리
request.setCharacterEncoding("utf-8");
//자바빈생성 패키지 board, 파일이름 BoardDataBean
//액션태그 자바빈 객체 생성 board
//액션태그 폼 -> 자바빈 저장
%><jsp:useBean id="board" class="board.BoardDataBean"/>
<jsp:setProperty property="*" name="board"/>
<%

//수동으로 ip주소 reg_date 저장하게 해주고
board.setReg_date(new Timestamp(System.currentTimeMillis())); //현재 시간을 Reg_date에 저장
board.setIp(request.getRemoteAddr()); //ip주소를 받아서 IP에 저장
//디비파일생성 패키지 board, 파일이름 BoardDBBean
//디비객체생성 dbPro
BoardDBBean dbPro = new BoardDBBean();
//메서드 호출 reInsertBoard(board)
dbPro.reInsertBoard(board);
//이동 list.jsp
%>
<script type="text/javascript">
alert("게시판 답글쓰기 성공!");
location.href="list.jsp";
</script><%
%>