STUDY/programing

JSP 기초 : 게시판 만들기 8. 글 수정 및 삭제 기능

NightOwl 2018. 10. 25. 14:15
728x90

1.  수정 기능


BbsDAO.java에 수정하는 함수 update 추가


//수정 함수

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="java.io.PrintWriter"%>

<%@ page import="bbs.Bbs"%>

<%@ page import="bbs.BbsDAO"%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- 뷰포트 -->

<meta name="viewport" content="width=device-width" initial-scale="1">

<!-- 스타일시트 참조  -->

<link rel="stylesheet" href="css/bootstrap.css">

<title>jsp 게시판 웹사이트</title>

</head>

<body>

<%

//로긴한사람이라면 userID라는 변수에 해당 아이디가 담기고 그렇지 않으면 null값

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>");

}

%>



<!-- 네비게이션  -->

<nav class="navbar navbar-default">

<div class="navbar-header">

<button type="button" class="navbar-toggle collapsed"

data-toggle="collapse" data-target="bs-example-navbar-collapse-1"

aria-expaned="false">

<span class="icon-bar"></span> <span class="icon-bar"></span> <span

class="icon-bar"></span>

</button>

<a class="navbar-brand" href="main.jsp">JSP 게시판</a>

</div>

<div class="collapse navbar-collapse"

id="#bs-example-navbar-collapse-1">

<ul class="nav navbar-nav">

<li><a href="main.jsp">메인</a></li>

<li class="active"><a href="bbs.jsp">게시판</a></li>

</ul>

<ul class="nav navbar-nav navbar-right">

<li class="dropdown"><a href="#" class="dropdown-toggle"

data-toggle="dropdown" role="button" aria-haspopup="true"

aria-expanded="false">회원관리<span class="caret"></span></a>

<ul class="dropdown-menu">

<li><a href="logoutAction.jsp">로그아웃</a></li>

</ul>

</li>

</ul>

</div>

</nav>

<!-- 게시판 --> 

<div class="container">

<div class="row">

<form method="post" action="updateAction.jsp?bbsID=<%= bbsID %> ">

<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>

<button type="submit" class="btn btn-primary pull-right" >글수정</button>

</form>

</div>

</div>





<!-- 애니매이션 담당 JQUERY -->

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>

<!-- 부트스트랩 JS  -->

<script src="js/bootstrap.js"></script>


</body>

</html>

 





글 수정시 원글의 제목과 내용이 보이도록

제목과 내용에 value값을 추가.





실제로 글 수정을 처리하는 updateAction.jsp 페이지 생성

(강의에서 writeAction처럼 자바 빈즈를 사용하지 않고

갑자기 파라미터로 값을 받아오신다)


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="bbs.BbsDAO"%>

<%@ page import="bbs.Bbs"%>

<%@ page import="java.io.PrintWriter"%>

<%

request.setCharacterEncoding("UTF-8");

//sresponse.setContentType("text/html; charset=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) {

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 {

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) {

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("history.back()");

script.println("</script>");

}


}


}

%>

</body>

</html>


 




글이 수정되면 새로운 글 번호로 최신글로 등록된다.




2. 삭제 


BbsDAO.java에 삭제 함수 delete 추가



//삭제 함수

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.BbsDAO"%>

<%@ page import="bbs.Bbs"%>

<%@ page import="java.io.PrintWriter"%>

<%

request.setCharacterEncoding("UTF-8");

//response.setContentType("text/html; charset=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) {

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{

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>");

}

}

%>

</body>

</html>


 





삭제를 누르자마자 글이 바로 삭제 되므로

삭제 확인 창을 띄워줌




view.jsp 의 삭제 버튼에 onclick return confirm 추가


<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>

 



728x90