1. ๊ฒ์๊ธ ์์ ํ๋ update ๋ฉ์๋ ๋ง๋ค๊ธฐ
BbsDAO ํด๋์ค ํ๋จ์ ๋ฉ์๋ ์ถ๊ฐ
public int update(int bbsID, String bbsTitle, String bbsContent) {
String SQL = "UPDATE BBS SET bbsTitle = ?, bbsContent = ? WHERE bbsID = ?";
PreparedStatement psmt = null;
try {
psmt = conn.prepareStatement(SQL);
psmt.setString(1, bbsTitle);
psmt.setString(2, bbsContent);
psmt.setInt(3, bbsID);
return psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (psmt != null) {
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ
}
2. write.jsp ํ์ด์ง ๋ณต์ฌํด์ update.jsp ํ์ด์ง ๋ง๋ค๊ธฐ
๊ธฐ์กด์ฝ๋์์ ๊ธ ์ ๋ชฉ์ด๋ ๋ด์ฉ ๋ถ๋ถ์ `<%= bbs.getTitle() %>` `<%= bbs.getContent %>` ํด ์คฌ๋ค.
์๋ํ๋ฉด ๊ธ์ ์์ ํ๋ ค๋ฉด ๊ธฐ์กด์ ๋ด๊ฐ ์ด ๊ธ์ด ๋์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
<!-- ์ ๋ชฉ ์
๋ ฅ -->
<div class="mb-4">
<label for="bbsTitle" class="form-label">๊ธ ์ ๋ชฉ</label><input
type="text" id="bbsTitle" name="bbsTitle" class="form-control"
placeholder="๊ธ ์ ๋ชฉ์ ์
๋ ฅํ์ธ์" maxlength="50" value="<%= bbs.getBbsTitle() %>" required>
</div>
<!-- ๋ด์ฉ ์
๋ ฅ -->
<div class="mb-4">
<label for="bbsContent" class="form-label">๊ธ ๋ด์ฉ</label>
<textarea id="bbsContent" name="bbsContent" class="form-control"
placeholder="๊ธ ๋ด์ฉ์ ์
๋ ฅํ์ธ์" maxlength="2048" rows="10" required><%= bbs.getBbsContent() %></textarea>
</div>
๊ธฐ์กด ์ฝ๋์์ ๋ก๊ทธ์ธ ์ํ ์ฌ์ฉ์์ ํ๋ฉด์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋นผ์ค
๋์ ์๋์ฒ๋ผ ๋งจ ์์ ์คํฌ๋ฆฝํธ๋ฆฟ์์ ๋ง์ฝ์ ๋ก๊ทธ์ธ ํ์ง ์์ ์ฌ๋์ด๋ฉด ๋ก๊ทธ์ธ์ ํ์ธ์ ๋ฉ์ธ์ง๋ฅผ ๋์ฐ๊ณ login.jsp ํ์ด์ง๋ก ๋ณด๋ด์ค๋ค. ๋ ์์ฑ์์ userID ๊ฐ์ด ์ง๊ธ ์ ์ํ ์ฌ๋์ userID ๋ ์ผ์นํ์ง ์์ผ๋ฉด ๊ทธ๊ฑด ๊ทธ ์ฌ๋์ด ์ด ๊ธ์ด ์๋๊ธฐ ๋๋ฌธ์ ์์ ํ ์ ์๋๋ก ํด์ผ ํ๋ค. ๊ถํ์ด ์๋ค๋ ์๋ฆผ์ ๋์์ค๋ค.
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if (userID == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ ํ์ธ์')");
script.println("location.href = 'login.jsp'");
script.println("</script>");
}
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 = 'bbs.jsp'");
script.println("</script>");
}
%>
์ฌ๊ธฐ๊น์ง ํ๊ณ ์คํ
์์ ๋ฒํผ ๋๋ฅด๋ฉด ์ ๋ชฉ์ด๋ ๋ด์ฉ์ด ์ ๋ถ๋ฌ์์ง๋ค.
์๋์ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ ๊ธ์์ ์ผ๋ก ๋ฐ๊พธ๊ธฐ
<div class="d-flex justify-content-end">
<input type="submit" class="btn btn-primary" value="๊ธ์์ ">
</div>
3. ์์ ํ ๋ด์ฉ์ ์ฒ๋ฆฌํ๋ updateAction.jsp ๋ง๋ค๊ธฐ
์ด์ ๊ธ ์์ ํ ๋ด์ฉ์ updateAction.jsp ํ์ด์ง๋ก ๋ณด๋ด์ ์ฒ๋ฆฌํด ์ค ๊ฒ์ด๋ค.
๋น์ทํ ๊ตฌ์ฑ์ writeAction.jsp ํ์ด์ง ์ฝ๋ ๊ทธ๋๋ก ๋ณต์ฌํด์ updateAction.jsp ๋ง๋ค๊ณ ์ฝ๋ ์์
๊ทธ๋ฅ ์ด์ ๋น์ฆ๋ ์์ธ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋น์ฆ๋ ์ญ์ ํ๊ณ ๋์ ํ์ด์ง ์ง์์๋ก bbs.Bbs ์ถ๊ฐ
๋ฐฉ๊ธ ์ ์ ๋ง๋ update.jsp ํ์ด์ง๋ก ๊ฐ์ ํ์ฌ ๊ธ์ด ์ ํจํ์ง ์ฒดํฌํ๋ ๋ถ๋ถ ๊ทธ๋๋ก ๋ณต์ฌํด์ ๊ฐ์ ธ์ค๊ธฐ
์ด์ ์๋ฐ ๋น์ฆ ์ฌ์ฉ์ํ ๊ฑฐ๊ธฐ ๋๋ฌธ์
if (bbs.getBbsTitle() == null || bbs.getBbsContent() == null)
์ด ์ฝ๋๋ฅผ ์์ ํด์ฃผ์ด์ผ ํ๋ค.
update.jsp ํ์ด์ง์์ ๊ธ ์ ๋ชฉ์ ๊ธ ๋ด์ฉ์ด inputํ๊ทธ name ๊ฐ์ ํตํด์ ๋งค๊ฐ๋ณ์๋ก ๋์ด์ค๊ธฐ ๋๋ฌธ์ name="bbsTitle"
request.getParameter("bbsTitle") ์ด๋ ๊ฒ ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋ค.
if (request.getParameter("bbsTitle") == null || request.getParameter("bbsContent") == null)
์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ๋ ์ถ๊ฐํ๋๋ฐ ๋์ด์จ ๊ฐ์ด null ๊ฐ์ด๊ฑฐ๋
๋น์นธ์ธ๊ฒ ํ๋๋ผ๋ ์๋ ๊ฒฝ์ฐ ์ ๋ ฅ์ด ์ ๋ ์ฌํญ์ด ์๋ค๊ณ ์๋ ค ์ค๋ค.
if (request.getParameter("bbsTitle") == null || request.getParameter("bbsContent") == null
|| request.getParameter("bbsTitle").equals("") || request.getParameter("bbsContent").equals(""))
updateAction.jsp
์คํฌ๋ฆฝํธ๋ฆฟ ๋ถ๋ถ
String userID = null;
if (session.getAttribute("userID")!=null) {
userID = (String) session.getAttribute("userID");
}
// ๊ธ์ฐ๊ธฐ๋ ๋ก๊ทธ์ธ์ ํ ํ์๋ง ๊ฐ๋ฅ
if (userID == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๋ก๊ทธ์ธ์ ํ์ธ์.')");
script.println("location.href = 'login.jsp'");
script.println("</script>");
}
// ํ์ฌ ๊ธ์ด ์ ํจํ๊ธ์ธ์ง ์ฒดํฌ
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 = 'bbs.jsp'");
script.println("</script>");
} else { // ์ฑ๊ณต์ ์ผ๋ก ๊ถํ์ด ์๋ ์ฌ๋์ else๋ก ๋์ด์์ ์๋ ๊ตฌ๋ฌธ ์ํ
if (request.getParameter("bbsTitle") == null || request.getParameter("bbsContent") == null
|| request.getParameter("bbsTitle").equals("") || request.getParameter("bbsContent").equals("")) {
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) { // DB์ค๋ฅ ๋ฐ์, ๊ธ์ฐ๊ธฐ ์คํจ
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๊ธ ์์ ์ ์คํจํ์ต๋๋ค.')");
script.println("history.back()");
script.println("</script>");
}
else { // ๊ธ์ฐ๊ธฐ ์ฑ๊ณต -> ๊ฒ์ํ ๋ฉ์ธ ํ๋ฉด(bbs.jsp)๋ก ์ด๋
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
}
}
๊ธ ์์ ํ ์คํธ ์ ๋๋ค
4. ๊ฒ์๊ธ ์ญ์ ํ๋ delete ๋ฉ์๋ ๋ง๋ค๊ธฐ
BbsDAO ํด๋์ค ํ๋จ์ ๋ฉ์๋ ์ถ๊ฐ
์ญ์ ๋ ์์ ๋ฉ์๋๋ ๋น์ทํ๋ฐ ๊ทธ๋ฅ bbsAvailable ๊ฐ๋ง 1์์ 0์ผ๋ก ๋ฐ๊พธ๋ ์ฟผ๋ฆฌ๋ฅผ ์ง๋ฉด ๋๋ค.
public int delete(int bbsID) {
String SQL = "UPDATE BBS SET bbsAvailable = 0 WHERE bbsID = ?";
PreparedStatement psmt = null;
try {
psmt = conn.prepareStatement(SQL);
psmt.setInt(1, bbsID);
return psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (psmt != null) {
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return -1; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ
}
5. deleteAction.jsp ํ์ด์ง ๋ง๋ค๊ธฐ
์์์ ๋ง๋ updateAction.jsp ๋ณต์ฌํด์ ๊ทธ๋๋ก ์ธ๊ฑด๋ฐ ์ ๋ชฉ์ด๋ ๋ด์ฉ์ด null ์ธ์ง "" ๋น์นธ์ธ์ง ํ์ธํ๋ ๋ถ๋ถ์ ์ด์ ๋นผ๋ ๋๋ค.
result์ bbsDAO.delete(bbsID); ๊ฐ ๋ฃ์ด์ฃผ๋ ๊ฑธ๋ก ์์
์ญ์ ์ ์ฑ๊ณตํ๋ฉด ๊ฒ์ํ ๋ฉ์ธ ํ์ด์ง๋ก ๋ณด๋ด๊ธฐ
else { // ์ฑ๊ณต์ ์ผ๋ก ๊ถํ์ด ์๋ ์ฌ๋์ else๋ก ๋์ด์์ ์๋ ๊ตฌ๋ฌธ ์ํ
BbsDAO bbsDAO = new BbsDAO();
int result = bbsDAO.delete(bbsID);
if (result == -1) { // DB์ค๋ฅ ๋ฐ์, ๊ธ์ฐ๊ธฐ ์คํจ
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('๊ธ ์ญ์ ์ ์คํจํ์ต๋๋ค.')");
script.println("history.back()");
script.println("</script>");
}
else { // ๊ธ์ฐ๊ธฐ ์ฑ๊ณต -> ๊ฒ์ํ ๋ฉ์ธ ํ๋ฉด(bbs.jsp)๋ก ์ด๋
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
}
์ญ์ ํ ์คํธ
44๋ฒ ๊ธ ์ญ์ ํ๋๋ฐ ์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋จ
๋ด๊ฐ ์์ฑํ ๊ธ์ด ์๋๋ฐ ์์ ํ๋ ค๊ณ ํ๋ฉด ?
URL view.jsp๋ฅผ deleteAction.jsp๋ก ๋ฐ๊ฟ์ฃผ์
๊ถํ์ด ์๋ค๋ ์๋ฆผ์ฐฝ์ด ์ ๋ฌ๋ค.
์ด์ ์ญ์ ํ ๋ ์ ๋ง๋ก ์ญ์ ํ์๊ฒ ์ต๋๊น? ๋ฉ์ธ์ง๋ฅผ ํ๋ฉด์ ๋์์ฃผ๋ ์์ ํ๋ฌ view.jsp ํ์ด์ง๋ก ๊ฐ๋ค
์๋ a ํ๊ทธ ๋ถ๋ถ์
<a href="deleteAction.jsp?bbsID=<%=bbsID%>" class="btn btn-primary"
style="width: auto;">์ญ์ </a>
onclick="return confirm('์ ๋ง๋ก ์ญ์ ํ์๊ฒ ์ต๋๊น?')" ์์ฑ ์ถ๊ฐ
<a onclick="return confirm('์ ๋ง๋ก ์ญ์ ํ์๊ฒ ์ต๋๊น?')" href="deleteAction.jsp?bbsID=<%=bbsID%>"
class="btn btn-primary" style="width: auto;">์ญ์ </a>
์ค๋์ ์ฌ๊ธฐ๊น์ง ๋~!
์์ฌ์ด ์
ํน์ ๊ธ์ ์ญ์ ํ์๊ฒฝ์ฐ ํ์ด์ง ์ฒ๋ฆฌ(์๋ฒ ๋ฐ๋ฆผ),
์๋ฒ ๋ฐ๋๋ก ๋์ค๋๊ฑฐ ๊ณ ์น๊ธฐ,
ํ์ผ์ฒจ๋ถ ๊ธฐ๋ฅ ๋ฑ ์ถ๊ฐํ๋ฉด ์ข๊ฒ ๋ค
๊ธ๋ฒํธ๋ ์๋๋
AUTO_INCREMENT(MySQL) ๋ SEQUENCE(Oracle, PostgreSQL) ๋ก ํ๋๊ฒ ์ข๋ค