[WEB] 41일차 - 게시판 만들기 (삭제, 페이지 화면 구현) :: 소림사의 홍반장!

 

BoardServlet > delete() 메서드 추가

 

public void delete(HttpServletRequest request, HttpServletResponse response)

            throws IOException {

        // 1. no, pass 받는다.

        // 2. 비밀번호 확인 : dao.chkPass(no,pass);

        // 3. 맞으면 no 에 해당하는 글을 삭제하고(: dao.delete(no)) 목록화면으로 간다.

        // 4. 틀리면 다시 읽기 화면으로 돌아간다.

       

        String no = request.getParameter("no");

        String pass = request.getParameter("pass");

       

        boolean result = dao.chkPass(no,pass);

        System.out.println("삭제결과 : "+result);

        if(result) {

            dao.delete(no);               

            response.sendRedirect(request.getContextPath()+"/bd/list");

           

        }else {

            response.sendRedirect(request.getContextPath()+"/bd/read?msg=pass&no="+no);

        }

    }

 


 

BoardDao > delete() 메서드 추가

 

public boolean delete(String no) {

       

        Connection conn = null;

        PreparedStatement pstmt = null;

       

        try {

            conn = ds.getConnection();

            pstmt = conn.prepareStatement("delete from board where no = ?");

       

            pstmt.setString(1, no);

           

            return pstmt.executeUpdate() > 0;

           

        } catch(SQLException e) {

            e.printStackTrace();

           

        } finally {

            if(pstmt!=null) try{pstmt.close();}catch(Exception e){e.printStackTrace();}

            if(conn!=null) try{conn.close();}catch(Exception e){e.printStackTrace();}

        }

       

        return false;

    }

 


 

Read.jsp 삭제 기능 구현

 

<?xml version="1.0" encoding="EUC-KR" ?>

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% String cp = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />

<title>게시물 보기</title>

<link type="text/css" href="/pp/css/custom-theme/jquery-ui-1.8.23.custom.css" rel="stylesheet" />

<script type="text/javascript" src="/pp/js/jquery-1.8.0.min.js"></script>

<script type="text/javascript" src="/pp/js/jquery-ui-1.8.23.custom.min.js"></script>

<script type="text/javascript" src="/pp/js/jquery.ui.datepicker-ko.js"></script>

<script type="text/javascript">

 

        $(function() {

               $("#dialog").dialog({

                       autoOpen : false,

                       modal : true

               });

        });

 

       

        function doUpdate() {

              

        $('#dialog').dialog(

                              "option",

                              "buttons",

                              {

                                      "수정확인" : function() {

                                             if($('#pass').val().length == 0) {               //.val() : #pass value값 가져오기

                                                     $('#dialog').find('div')

                                                             .addClass('ui-state-error')

                                                             .html('비밀번호를 반드시 입력하세요');

                                                     return;

                                             }

                                             document.forms['f'].action = '<%=cp%>/bd/preupdate?no=${item.no}';

                                             document.forms['f'].submit();     //form태그의 name []안에 넣어줌

                                      },

                                      "취소" : function() {

                                             $(this).dialog('close');

                                                                                  

                                      }

                              });

        $('#dialog').dialog('open');

        }

 

        function doDelete() {

               $('#dialog').dialog(

                              "option",

                              "buttons",

                              {

                                      "삭제확인" : function() {

                                             if($('#pass').val().length == 0) {               //.val() : #pass value값 가져오기

                                                     $('#dialog').find('div')

                                                             .addClass('ui-state-error')

                                                             .html('비밀번호를 반드시 입력하세요');

                                                     return;

                                             }

                                             document.forms['f'].action = '<%=cp%>/bd/delete?no=${item.no}';                                          

                                             document.forms['f'].submit();     //form태그의 name []안에 넣어줌

                                      },

                                      "취소" : function() {

                                             $(this).dialog('close');

                                      }

                              });

               $('#dialog').dialog('open');

        }

       

        function doList() {

               document.forms['listForm'].submit();

              

        }

</script>

 

<style type="text/css">

#content {

        border-style: dotted;

        border-color: #3aa;

        padding: 10px;

}

#rp_content {

        width: 440px;

        border-style: double;

        border-color: #8cc;

        padding: 10px;

}

#rp_head {

        background-color: #fcc;

}

</style>

 

</head>

<body>

<form action="<%=cp %>/bd/list" name="listForm">

        <input type="hidden" name="key" value="${param.key }" />

        <%

        String value = request.getParameter("value")==null

                                                     ? "" : request.getParameter("value");

    if(value != null && !"".equals(value))

        value = new String(value.getBytes("iso-8859-1"),"euc-kr");

        %>

        <input type="hidden" name="value" value="<%=value %>" />

        <input type="hidden" name="page" value="${param.page }"/>

       

</form>

 

<c:if test="${param.msg == 'pass' }" >

        <div class="ui-state-error">비밀번호가 틀렸습니다.</div>

</c:if>

<c:if test="${param.msg == 'update' }" >

        <div class="ui-state-error">수정되었습니다.</div>

</c:if>

 

<div id="dialog" title="비밀번호 입력">

               <div></div>

               <form action="<%=cp%>/bd/preupdate?no=${item.no}" method="post" name="f">

               <fieldset>

                       <label for="pass">비밀번호</label>              

                       <input type="password" name="pass" id="pass" />

               </fieldset>  

        </form>

       

</div>

 

 

번호 : ${item.no } <br />

제목 : ${item.title } <br />

글쓴이 : ${item.writer } <br />

작성일 : ${item.wdate } <br />

조회수 : ${item.rcount } <br />

<br />

내용 :<br />

<div id="content"><p>

 ${item.content } <br />

</p></div>

 

        <p align="left">

               <input type="button" value="목록" onclick="doList();" />

               <input type="button" value="수정" onclick="doUpdate();" />

               <input type="button" value="삭제" onclick="doDelete();" />

        </p>

       

        <br /><br /><br /><br />

<hr />

        <form action="/pp/bd/createReply" method="post">

               <div>

                       <span> 댓글 : <br />

                       <input type="hidden" name="no" value="${item.no }"/>

                       작성자 : <input type="text" name="writer" />

                       비밀번호 : <input type="password" name="pass" /><br/>

                       <textarea rows="3" cols="62" name="content"></textarea>

                       </span> <span> <input type="submit" value="등록" /><br />

                       </span>

               </div>

 

        </form>

       

        <hr /><br />

        <c:forEach var="reply" items="${replyList }">

       

               <div class="reply">

                       <div><span id="rp_head">${reply.writer }</span><span style="position: relative; left: 50px;">${reply.wdate }</span></div>

                       <div id="rp_content">${reply.content }</div>

                      

               </div>

        </c:forEach>

 

</body>

</html>

 


 

list.jsp 페이지 구현

 

<?xml version="1.0" encoding="EUC-KR" ?>

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% String cp = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />

<title>게시판 목록</title>

<style type="text/css">

 

.mainouter {

        background-image: url("http://cfs.tistory.com/custom/blog/92/928179/skin/images/");

}

.footer {

        background-image: url("http://cfs.tistory.com/custom/blog/92/928179/skin/images/");

}

 

.myBoard th {

        text-align: center;

        border-style: none;

        border-color: #c55;

        padding: 7px 3px;

}

.myBoard td {

        text-align: center;

        border-style: none;

        border-color: #c55;

        padding: 6px;

       

}

.myBoard tr {

        border-style: dashed;

        border-color: #c55;

        background-color: #fff4f4;

       

}

 

#line td {

       

}

 

/* 아직 안가본 곳,  가본 곳 */

 

/*

.myBoard a:LINK, .myBoard a:VISITED {

        text-decoration: none; color: black;

}

*/

.myBoard a:HOVER {     /* 마우스 커서 올렸을때 */

    text-decoration: underline; color: #366; font-weight: bold;

}

 

.myBoard a:ACTIVE {    /* 마우스 버튼을 눌렀을때 */

    text-decoration: none; color: black;

}

 

</style>

<script type="text/javascript">

function init() {

        no = setInterval(setTime, 1000);

}

function setTime() {

        var target = document.getElementById('target');

        var date = new Date();

        target.innerHTML = date.toLocaleString();

}

function doList(page) {

        document.forms['listForm'].page.value = page;

        document.forms['listForm'].submit();

}

function doRead(no) {

       

        var f = document.forms['listForm'];

       

        f.action = '<%=cp%>/bd/read';

        f.no.value = no;

        f.submit();

}

 

</script>

 

</head>

<body onload="init();">

<form action="<%=cp %>/bd/list" name="listForm">

        <input type="hidden" name="key" value="${param.key }" />

        <%

        String value = request.getParameter("value")==null

                                                     ? "" : request.getParameter("value");

    if(value != null && !"".equals(value))

        value = new String(value.getBytes("iso-8859-1"),"euc-kr");

        %>

        <input type="hidden" name="value" value="<%=value %>" />

        <input type="hidden" name="page" value="${param.page }" />

        <input type="hidden" name="no" />

       

</form>

<div class="mainouter" align="center"><h1>게시판 목록</h1>

        <div style="width: 640px;" align="left"><p><a href="<%=cp %>/bd/precreate"><input type="button" value="글쓰기" /></a></p></div>

<table class="myBoard" width="640" border="3">

        <tr style="background-color: #fcc">

               <th width="10%">글번호</th>

               <th width="36%">글제목</th>

               <th width="15%">글쓴이</th>

               <th width="29%">작성일</th>

               <th width="10%">조회수</th>

        </tr>

<!--   <tr id="line" style="height: 1px;"> -->

<!--           <td colspan="5" bgcolor="#c55"></td> -->

<!--   </tr> -->

<c:forEach var="item" items="${list }">

        <tr>

               <td>${item.no }</td>

<%--           <td style="text-align: left; padding-left: 20px;"><a href="<%=cp %>/bd/read?no=${item.no}">      ${item.title } (<span style="color: red;">${item.replycount}</span>)</a></td> --%>

               <td style="text-align: left; padding-left: 20px;">

               <a href="javascript:doRead('${item.no}');">    ${item.title } (<span style="color: red;">${item.replycount}</span>)</a></td>

               <td>${item.writer }</td>

               <td>${item.wdate }</td>

               <td>${item.rcount }</td>

        </tr>

</c:forEach>

<!-- <tr id="line" style="height: 1px;"> -->

<!--           <td colspan="5" bgcolor="#c55"></td> -->

<!--   </tr> -->

<tr>

        <td colspan="5" align="center">

               &lt;

               <c:forEach var="i" begin="1" end="${totPage }">

               <c:if test="${page != i }">       <!-- 현재 페이지가 아닐때 -->

                       <a href="javascript:doList('${i }');">${i }</a>

               </c:if>

               <c:if test="${page == i }">       <!-- 현재 페이지 -->

                       <span style="font-weight: bold; color: red;">${i }</span>          

               </c:if>

               </c:forEach>

               &gt;

        </td>

</tr>

<tr>

        <td colspan="5" align="center">

               <form action="<%=cp %>/bd/list">

                       <select name="key">

                              <option value="title">제목</option>

                              <option value="content">내용</option>

                              <option value="writer">글쓴이</option>

                       </select>

                       <input type="text" name="value" />

                       <input type="submit" value="검색" />

               </form>

        </td>

</tr>

</table></div>

        <div align="right" style="padding-right: 20px;"> <h5 id="target"></h5></div>

        <div id="footer">

               <img src="http://cfs.tistory.com/custom/blog/92/928179/skin/images/Java7.png" alt="백그라운드" />

       

        </div>

</body>

</html>

 

 

 

 

 

다른 카테고리의 글 목록

Dev. 640시간 뭉개기/강의내용정리 카테고리의 포스트를 톺아봅니다