ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [7주차] JSP: 게시판 만들기 총정리
    N스크린하이브리드앱과정/JSP:Model-1 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><%
    %>

Designed by Tistory.