write.jsp 복사해서 update.jsp 만들기
수정을 누르면 업데이트 하기전에 한번 읽어서 표시를 해줌
updateAction.jsp
<%
//세션의 userID가 있으면 가져온다.
String userID = null; //유저ID가 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; //bbs아이디를 받아와야 수정이 가능하다.
if (request.getParameter("bbsID") != null) {
bbsID = Integer.parseInt((String) request.getParameter("bbsID"));
}
if (bbsID == 0) {
out.println("<script>");
out.println("alert('유효하지 않은 글입니다.')");
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
}
/* 업데이트 하기 전 수정하기 전 게시글을 db에서 불러온다. */
BbsDAO dao = new BbsDAO();
Bbs bbs = dao.getBbs(bbsID);
//userid와 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="main.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" href="main.jsp">메인</a>
</li>
<li class="nav-item"><a class="nav-link" href="bbs.jsp">게시판</a></li>
</ul>
<!-- 오른쪽 메뉴 리스트 -->
<ul class="navbar-nav ml-auto">
<li class="nav-item"><span class="nav-link">안녕하세요${userID}님</span>
</li>
<li class="nav-item dropdown"><a
class="nav-link dropdown-toggle" href="#" id="Dropdown"
role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"> 접속하기 </a>
<div class="dropdown-menu" aria-labelledby="Dropdown">
<a class="dropdown-item" href="logoutAction.jsp">로그아웃</a>
</div></li>
</ul>
</div>
</nav>
<!--글쓰기 화면-->
<div class="container">
<div class="container">
<div class="row">
<form class="col-12" action="updateAction.jsp?bbsID=<%=bbsID%>" method="post">
<input type="text" class="form-control mb-3" name="bbsTitle"
value="<%=bbs.getBbsTitle()%>" maxlength="50" required>
<textarea class="form-control mb-3" name="bbsContent"
maxlength="2048" style="height: 350px" required><%=bbs.getBbsContent()%></textarea>
<div class="row">
<input type="submit" value="수정하기"
class="btn btn-primary ml-auto mr-3">
</div>
</form>
</div>
</div>
</div>
<!-- 부트스트랩 제이쿼리,번들 -->
<script src="js/jquery-3.7.1.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
</body>
</html>
수정 버튼 눌렀을 경우 아래와 같이 수정 게시판 출력됨
BbsDAO 수정
update메소드 추가
// id의 게시글을 업데이트 하기
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; // 데이터베이스 오류
}
updateAction.jsp 생성
<%@page import="bbs.Bbs"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="bbs.BbsDAO"%>
<!-- form으로 부터 전달된 값을 bbs객체의 프로퍼티(필드변수)에 설정
input 태그의 name과 자바빈의 프로퍼티명과 동일한 것에 대응-->
<%
request.setCharacterEncoding("UTF-8");
%>
<!--bbs객체로 수정데이터 받음 -->
<jsp:useBean id="bbs" class="bbs.Bbs" scope="page" />
<jsp:setProperty name="bbs" property="*" />
<!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>");
}
//제목 또는 내용을 안적었을 경우 글쓰기 페이지로 돌아간다.
if (bbs.getBbsTitle() == null || bbs.getBbsContent() == null) {
out.println("<script>");
out.println("alert('입력되지 않은 내용이 있습니다.')");
out.println("history.back()");//되돌아가기
out.println("</script>");
}
BbsDAO dao = new BbsDAO();
/* DB에서 게시글을 가져와 현재 로그인 유저와 같은지 비교함 */
Bbs bbs1 = dao.getBbs(bbsID);
if (!userID.equals(bbs1.getUserID())) {
out.println("<script>");
out.println("alert('권한이 없습니다.')");// 비교 후 다르면
out.println("location.href = 'bbs.jsp'");
out.println("</script>");
} else {
/* 글쓴 유저가 맞을 경우 업데이트 한다. */
int result = dao.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 bbsDAO = new BbsDAO();
int result = bbsDAO.update(bbsID, bbs.getbbsTitle(), bbs.getbbsContent ());
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>");
}
}
으로도 변경가능
삭제하기
BbsDAO. 게시글 삭제 메소드 추가
// 게시글 삭제(DB 사용가능을 0으로 하여 보이지 않게 함 = bbsAvailable)
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; //데이터베이스 오류
}
DB 설정 시 게시글 보이게 하게
bbsAvailable을 1을 기본값으로 설정함
그래서 0이 되면 바로 화면에서는 보이지는 않으나 , 데이터 베이스에는 남아있어서
관리할 수 있음.
<%@ 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 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>");
}
BbsDAO dao = new BbsDAO();
/* DB에서 게시글을 가져와 현재 로그인 유저와 같은지 비교함 */
Bbs bbs1 = dao.getBbs(bbsID);
if (!userID.equals(bbs1.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>
'BACKEND > Jsp' 카테고리의 다른 글
모델1 방식의 회원제 게시판 만들기 - 프로세스 및 DB 설계 (0) | 2023.10.16 |
---|---|
게시판 만들기 4 -페이징, 게시글 상세보기 (0) | 2023.10.12 |
게시판 만들기 3 - 메인 페이지 ,게시판 ,글쓰기, 게시판 출력 (0) | 2023.10.11 |
게시판 만들기 2 - 회원가입 , 로그아웃 (0) | 2023.10.10 |
게시판 만들기-1( db연결확인 ~ 로그인 ) (0) | 2023.10.10 |