[수정]
[BbsDAO.java]
public int update(int bbsID,String bbsTitle,String bbsContent) {
String SQL = "UPDATE BBS SET bbsTitle=?, bbsContent=? WHERE bbsID=?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, bbsTitle);
pstmt.setString(2, bbsContent);
pstmt.setInt(3, bbsID);
return pstmt.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
}
return -1;
}
- 글 수정을 위해 BbsDAO에 update함수를 추가한다.
- 쿼리문을 UPDATE로 해서 글 제목, 글 내용을 수정 가능하게 한다.
- 정상적으로 수정이 되면 return >= 1
[update.jsp]
int bbsID=0;
if(request.getParameter("bbsID")!=null){
bbsID= Integer.parseInt(request.getParameter("bbsID"));
}
if(bbsID==0){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('유효하지 않은 글입니다.')");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('수정권한이 없습니다.')");
script.println("location.href = 'view.jsp'");
script.println("</script>");
}
- write.jsp랑 거의 유사한데 이 코드를 추가해 줌으로써 bbsID(작성자)와 UserID(사용자)를 비교하여
같지 않을 경우 alert후 돌려보낸다.
[update.jsp]
<form action="updateAction.jsp?bbsID=<%=bbsID %>" method="post">
<table class="table table-striped" style="border: 1px solid #dddddd">
<thead>
<tr>
<th colspan="2" style="background-color: #eeeeee;
text-align: center;">게시판 수정 양식</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" class="form-control" placeholder="글 제목"
name="bbsTitle" maxlength="50"
value="<%=bbs.getBbsTitle()%>"/></td>
</tr>
<tr>
<td><textarea class="form-control" placeholder="글 내용"
name="bbsContent" maxlength="2048" style="height: 350px;">
<%=bbs.getBbsContent()%></textarea></td>
</tr>
</tbody>
</table>
<input type="submit" class="btn btn-primary pull-right" value="수정하기"/>
</form>
- <td>에 value를 넣으므로써 기존 글이 보이게한 뒤 수정 가능하게 한다.
- 수정한 bbsTitle,bbsContent는 updateAction.jsp로 보내지게 된다.
[updateAction.jsp]
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('수정권한이 없습니다.')");
script.println("location.href = 'view.jsp'");
script.println("</script>");
} else{
if(request.getParameter("bbsTitle") == null ||
request.getParameter("bbsContent") == null){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('입력되지 않은 사항이 있습니다.')");
script.println("history.back()");
script.println("</script>");
}else{
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.update(bbsID,request.getParameter("bbsTitle"),
request.getParameter("bbsContent"));
if(result == -1){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('글 수정에 실패했습니다.')");
script.println("history.back()");
script.println("</script>");
}else {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href='bbs.jsp'");
script.println("</script>");
}
}
}
- update.jsp에서 보낸 파라메터를 받아 bbsTitle와 bbsContent의 값이 null이면 alert후 돌려보낸다.
- 둘 다 null이 아니라면 bbsDAO.update()함수에 값을 넣어 정상적으로 수정이 됐을때는 bbs.jsp로
실패했을경우에는 alert후 전페이지로 돌아가게한다.
[삭제]
public int delete(int bbsID) {
String SQL = "UPDATE BBS SET bbsAvailable=0 WHERE bbsID=?";
try {
PreparedStatement pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, bbsID);
return pstmt.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
}
return -1;
}
- 글을 삭제하더라도 글에대한 정보가 남아 있을수 있도록 bbsAvailable=0으로 바꿔줌으로 써
삭제글임을 표시한다.
- bbsAvailable=0은 getList()함수로인해 게시판에서 보이지 않는다.
[deleteAction.jsp]
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('권한이 없습니다.')");
script.println("location.href = 'view.jsp'");
script.println("</script>");
} else{
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.delete(bbsID);
if(result == -1){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('글 삭제에 실패했습니다.')");
script.println("history.back()");
script.println("</script>");
} else{
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href='bbs.jsp'");
script.println("</script>");
}
}
- 위의 로그인이 되지 않은 상황은 writeAction.jsp랑 같다.
- bbsID와 UserID가 다르다면 alert후 돌려보낸다.
- bbsDAO.delete()함수를 호출하여 정상적으로 삭제가 될 시에는 bbs.jsp로 보내고
실패했을 경우에는 alert후 전 페이지로 돌려보낸다.