- 게시글 수정 메서드
[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;
}
- 수정 페이지
[update.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.Bbs" %> <!-- -->
<%@ page import="bbs.BbsDAO" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>JSP 게시판 웹사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if(userID == null) {
out.println("<script>");
out.println("alert('로그인을 하세요.')");
out.println("location.href = 'login.jsp'");
out.println("</script>");
}
int bbsID = 0;
if(request.getParameter("bbsID") != null) {
bbsID = Integer.parseInt(request.getParameter("bbsID"));
}
if(bbsID == 0) {
out.println("<script>");
out.println("alert('유효하지 않은 글입니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())) {
out.println("<script>");
out.println("alert('권한이 없습니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
%>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="login.jsp">JSP 게시판</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarNav" aria-controls="navbarNav"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active"> <!-- 여기안바꿈 -->
<a class="nav-link active" href="main.jsp">메인</a>
</li>
<li class="nav-item">
<a class="nav-link" href="bbs.jsp">게시판</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown"
aria-expanded="false"> 회원관리 </a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="logoutAction.jsp">로그아웃 </a>
</div>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="row">
<form action="updateAction.jsp?bbsID=<%= bbsID %>" method="post">
<table class="table table-striped" style="text-align: center; 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" value="글수정">
</form>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>
- 수정 기능구현
[updateAction.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.Bbs" %>
<%@ page import="bbs.BbsDAO" %> <!-- 게시글의 데이터를 DB에 저장하는 객체 -->
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if(userID == null) {
out.println("<script>");
out.println("alert('로그인을 하세요.')");
out.println("location.href = 'login.jsp'");
out.println("</script>");
}
int bbsID = 0;
if(request.getParameter("bbsID") != null) {
bbsID = Integer.parseInt(request.getParameter("bbsID"));
}
if(bbsID == 0) {
out.println("<script>");
out.println("alert('유효하지 않은 글입니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())) {
out.println("<script>");
out.println("alert('권한이 없습니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
} else {
if(request.getParameter("bbsTitle") == null || request.getParameter("bbsContent") == null
|| request.getParameter("bbsTitle").equals("") || request.getParameter("bbsContent").equals("")) {
out.println("<script>");
out.println("alert('입력이 안된 사항이 있습니다.');");
out.println("history.back()");
out.println("</script>");
} else {
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.update(bbsID, request.getParameter("bbsTitle"), request.getParameter("bbsContent"));
if(result == -1) {
out.println("<script>");
out.println("alert('글 수정에 실패했습니다.');");
out.println("history.back()");
out.println("</script>");
} else {
out.println("<script>");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
}
}
%>
</body>
</html>
- 게시글 삭제 메서드
[BbsDAO.java]
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;
}
- 삭제 기능구현
[deleteAction.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.Bbs" %>
<%@ page import="bbs.BbsDAO" %> <!-- 게시글의 데이터를 DB에 저장하는 객체 -->
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if(userID == null) {
out.println("<script>");
out.println("alert('로그인을 하세요.')");
out.println("location.href = 'login.jsp'");
out.println("</script>");
}
int bbsID = 0;
if(request.getParameter("bbsID") != null) {
bbsID = Integer.parseInt(request.getParameter("bbsID"));
}
if(bbsID == 0) {
out.println("<script>");
out.println("alert('유효하지 않은 글입니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
if(!userID.equals(bbs.getUserID())) {
out.println("<script>");
out.println("alert('권한이 없습니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
} else {
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.delete(bbsID);
if(result == -1) {
out.println("<script>");
out.println("alert('글 삭제에 실패했습니다.');");
out.println("history.back()");
out.println("</script>");
} else {
out.println("<script>");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
}
%>
</body>
</html>
- 삭제확인 메세지 추가
[view.jsp]
<a href="update.jsp?bbsID=<%= bbsID %>" class="btn btn-primary">수정</a>
<a onclick="return confirm('정말로 삭제하시겠습니까?')" href="deleteAction.jsp?bbsID=<%= bbsID %>" class="btn btn-primary">삭제</a>