CodeSiri/Project

[Mini Project 🚴🏻‍♀️] 12. 게시글 수정 및 삭제 기능 구현 & 회고

Dev다D 2021. 2. 22. 17:08
반응형

 

 게시글을 수정하고 삭제할 수 있는 함수를 DdaDAO.java에 생성합니다. 또한, 수정 및 삭제 Action.jsp를 생성한다.

 

 

DdaDAO.java

 

public int update(int ddaID, String ddaTitle,String ddaContent ) {
	String SQL="update Dda set ddaTitle = ?, ddaContent = ? where ddaID = ?";
	try {
		PreparedStatement pstmt=conn.prepareStatement(SQL);
		pstmt.setString(1, ddaTitle);
		pstmt.setString(2, ddaContent);
		pstmt.setInt(3, ddaID);
		return pstmt.executeUpdate();		
	} catch(Exception e) {
		e.printStackTrace();
	}
	return -1;
}
	
public int delete(int ddaID) {
	String SQL = "update DDA set bbsAvailable = 0 where ddaID = ?";
	try {
		PreparedStatement pstmt=conn.prepareStatement(SQL);
		pstmt.setInt(1, ddaID);
		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="dda.Dda" %>
<%@ page import="dda.DdaDAO" %>
<!DOCTYPE html>
<html>
<head>
<meta 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>
	<%
		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 ddaID=0;
		if(request.getParameter("ddaID")!=null)
			ddaID=Integer.parseInt(request.getParameter("ddaID"));
		if(ddaID==0){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('유효하지 않은 글입니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		}
		Dda dda = new DdaDAO().getDda(ddaID);
		//작성자가 본인인지?
		if(!userID.equals(dda.getUserID())){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('권한이 없습니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		}
	%>
	<nav class="navbar navbar-inverse">
		<div class ="navbar-header">
			<button type="button" class="navbar-toggle collapsed"
				data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
				aria-expanded="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="dda.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?ddaID=<%=ddaID%>"><%--업데이트 요청을 할 때 그 요청을 처리하는 액션 페이지 --%>
				<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
					<thead>
						<tr>
							<th colspan="2" style="background-color: #2e8b57; text-align:center;">게시판 글 수정 양식</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<td><input type="text" class="form-control" placeholder="글 제목" name="ddaTitle" maxlength="50" value="<%=dda.getDdaTitle() %>"></td>
						</tr>
						<tr>
							<td><textarea class="form-control" placeholder="글 내용" name="ddaContent" maxlength="2048" style="height: 350px"><%=dda.getDdaContent() %></textarea></td>
						</tr>
					</tbody>
				</table>
				<input type="submit" class="btn btn-success pull-right" value="글수정">
		</form>
		</div>
	</div>
	<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
	<script src="js/bootstrap.js"></script>
</body>
</html>

 

updateAction.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="dda.Dda" %>
<%@ page import="dda.DdaDAO" %>
<%@ page import="java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta 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 ddaID=0;
		if(request.getParameter("ddaID")!=null)
			ddaID=Integer.parseInt(request.getParameter("ddaID"));
		if(ddaID==0){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('유효하지 않은 글입니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		}
		Dda dda = new DdaDAO().getDda(ddaID);
		if(!userID.equals(dda.getUserID())){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('권한이 없습니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		} else{
			if(request.getParameter("ddaTitle")==null||request.getParameter("ddaContent")==null
					||request.getParameter("ddaTitle").equals("")||request.getParameter("ddaContent").equals("")){
					PrintWriter script=response.getWriter();
					script.println("<script>");
					script.println("alert('입력이 안 된 사항이 있습니다.')");
					script.println("history.back()");
					script.println("</script>");
				}else{
					DdaDAO ddaDAO=new DdaDAO();
					int result=ddaDAO.update(ddaID, request.getParameter("ddaTitle"),request.getParameter("ddaContent"));
					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='dda.jsp'");
						script.println("</script>");
					}
		}
		
		}
	%>
</body>
</html>

 

deleteAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="dda.Dda" %>
<%@ page import="dda.DdaDAO" %>
<%@ page import="java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta 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 ddaID=0;
		if(request.getParameter("ddaID")!=null)
			ddaID=Integer.parseInt(request.getParameter("ddaID"));
		if(ddaID==0){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('유효하지 않은 글입니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		}
		Dda dda = new DdaDAO().getDda(ddaID);
		if(!userID.equals(dda.getUserID())){
			PrintWriter script=response.getWriter();
			script.println("<script>");
			script.println("alert('권한이 없습니다.')");
			script.println("location.href='dda.jsp'");
			script.println("</script>");
		} else{
				DdaDAO ddaDAO=new DdaDAO();//하나의 인스턴스
				int result=ddaDAO.delete(ddaID);
				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='dda.jsp'");//삭제 성공 후 게시판 메인화면으로 이동
					script.println("</script>");
				}
		}
	%>
</body>
</html>

 

아주 짧은 회고

Mini Project를 진행하면서 많은 부족함을 느꼈다.

버그가 생기는 것은 큰 어려움은 아니었으나, 하나의 버그를 오래 들고 있을 때가 가장 힘들었다. 오히려 쉽게 해결할 수 있는 방법이 있었는데 오래 붙들고 있다보면 괜히 어렵게 돌아서 생각하게 되는 것 같다.

따릉이는 처음이라 프로젝트에서 내가 담당한 영역은 CRUD가 가능한 리뷰 게시판과 데이터베이스를 만드는 것이었다.

생각보다 구현이 빠르게 진행돼서 신이 났지만 다른 영역이 보다 느리게 구현돼서 디자인도 내가 담당하게 되었다.

디자인을 하면서도 나름 재미를 느꼈지만 나는 디자인에는 소질이 없는 것으로...

힘들었지만, 그만큼 배운 것도 많고 항상 제자리걸음만 하는 것 같았던 기분에서 살짝은 벗어날 수 있을 것 같다.

반응형