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">
<
<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>
>
</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시간 뭉개기 > 강의내용정리' 카테고리의 다른 글
[WEB/SPRING] 43일차 - 스프링, mybatis, maven 연동 및 환경 세팅 (0) | 2012.10.05 |
---|---|
[WEB/SPRING] 42일차 - 게시판 만들기(페이징 처리 완료), 스프링 툴 설치 및 세팅 (0) | 2012.09.24 |
[WEB] 40일차 - 게시판 만들기 (ck editor설치, 수정), redirect, forward (0) | 2012.09.21 |
[WEB] 39일차 - 게시판 만들기 (DB설계, 조회, 쓰기, 댓글) (0) | 2012.09.21 |
[WEB] 38일차 - Filter, EL, JSTL (0) | 2012.09.19 |