{Java}

21.06.28{코딩일기} 동빈나 유튜버 JSP게시판 만들기 (13) | 전자정부프레임워크 eclipse 게시판 만들기{day8}

Davey 2021. 6. 28. 12:02
728x90

게시판 코드작성완료 후기 생생하게 공유드립니다. 많이 놀러와주세여:)

https://www.youtube.com/watch?v=P5s5JwvZjBA&t=27s&pp=sAQA 

 

# 기존 String처리 안된 게시글 삭제


15번이후 게시글은 인코딩이 잘되는데 15번은 계속 인코딩이 안된채로 db에 저장되어 있어서 크로스 스크립트 에러발생


위와 같이 15번id를 가진 게시글을 삭제하는 쿼리실행완료


보기와 같이 15번 항목이 삭제되고 더이상 'HI bluevulpe!'에러창이 안뜸을 확인가능


하지만 게시글 번호가 맞지 않아 보기좋게 이쁘게 출력되도록 추후
기능개선이 요구된다.

# update.jsp code


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="list.Board"%>
<%@ page import="list.ListDAO"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" , initial-scale="1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<title>BluevulpeBoard</title>
</head>
<body style="background-color: lightblue;">
	<%
		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 listID = 0;
	if (request.getParameter("listID") != null) {
		listID = Integer.parseInt(request.getParameter("listID"));
	}
	if (listID == 0) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('유효하지 않은 글입니다.')");
		script.println("location.href = 'list.jsp'");
		script.println("</script>");		
	}
	//현재 넘어온 id값을 가지고 세션에 있는 값과 이 글을 작성한 사람의 값을 서로 비교및 id값 동일여부 체크
	Board bbs = new ListDAO().getBbs(listID);
	if (!userID.equals(bbs.getUserID())) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('권한이 없습니다.')");
		script.println("location.href = 'list.jsp'");
		script.println("</script>");		
	}
	%>

	<nav class="navbar navbar-default">
		<!-- navbar-색상(inverse = 검은색, default = 색x) -->
		<div class="navbar-header">
			<button type="button" class="navbar-toggle collapsed"
				data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
				aria-expanded="false">
				<!-- class="navbar-toggle collapsed"=>네비게이션의 화면 출력유무 
				data-toggle="collapse" : 모바일 상태에서 클릭하면서 메뉴가 나오게 설정 -->

				<span class="icon-bar"></span> <span class="icon-bar"></span> <span
					class="icon-bar"></span>
				<!-- 아이콘 이미지 -->

			</button>

			<a class="navbar-brand" href="main.jsp">BluevulpeBoard</a>
			<!-- Bootstrap navbar 기본 메뉴바 -->
		</div>

		<div class="collapse navbar-collapse"
			id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<!-- navbar-nav => 네비게이션 바의 메뉴 -->
				<li><a href="main.jsp">메인</a></li>
				<li class="active"><a href="list.jsp">게시판</a></li>
				<!-- 메뉴, 게시판의 main.jsp와 bbs.jsp의 파일로 각각 이동 -->
			</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> 
					<!-- caret = creates a caret arrow icon (▼) -->
					<ul class="dropdown-menu">
						<li><a href="logout.jsp">로그아웃</a></li>
					</ul></li>

		</div>
	</nav>
	<div class="container">
		<div class="row">
			<form method="post" accept-charset="utf-8" action="updateGo.jsp?listID=<%= listID %>">
				<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="listTitle" maxlength="50" value="<%= bbs.getListTitle()%>"></td></tr>
						<tr>
							<td>
                            	<textarea class="form-control" placeholder="글내용" name="listContent" maxlength="2048" style="height: 350px;">
                                <%= bbs.getListContent()%></textarea></td>
						</tr>
					</tbody>
				</table>
				<input type="submit" class="btn btn-primary pull-right" value="글수정">
			</form>
		</div>
	</div>
</body>
</html>


# udateGo.jsp code


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="list.ListDAO"%>
<%@ page import="list.Board"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" , initial-scale="1">
<title>BluevulpeBoard</title>
</head>
<body style="background-color: lightblue;">
	<%
		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("");
		script.println("location.href = 'login.jsp'");
		script.println("</script>");
	} 
	
	int listID = 0;
	if (request.getParameter("listID") != null) {
		listID = Integer.parseInt(request.getParameter("listID"));
	}
	if (listID == 0) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('유효하지 않은 글입니다.')");
		script.println("location.href = 'list.jsp'");
		script.println("</script>");		
	}
	//현재 넘어온 id값을 가지고 세션에 있는 값과 이 글을 작성한 사람의 값을 서로 비교및 id값 동일여부 체크
	Board bbs = new ListDAO().getBbs(listID);
	if (!userID.equals(bbs.getUserID())) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('권한이 없습니다.')");
		script.println("location.href = 'list.jsp'");
		script.println("</script>");		
	} else { //listTitle이라는 이름으로 매개변수로 넘어온 값들을 확인한다. 빈값이나 null값이 입력된 경우 체크한다.
		if (request.getParameter("listTitle") == null || request.getParameter("listContent") == null
		|| request.getParameter("listTitle").equals("") || request.getParameter("listContent").equals("")) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('입력이 안된 사항이 있습니다.')");
			script.println("history.back()");
			script.println("</script>");
		} else { //모든내용이 다 잘 작성되었는지 확인하는 예외처리문
			ListDAO listDAO = new ListDAO();
			int result = listDAO.update(listID, request.getParameter("listTitle"), request.getParameter("listContent"));
			
			if (result == -1) {
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("alert('글수정에 실패했습니다.');");
				
				script.println("alert('"+bbs.getListTitle().toString()+"');");
				script.println("history.back();");
				script.println("</script>");
			} else {
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("location.href = 'list.jsp'");
				script.println("</script>");
			}
		}
		
	}
	%>
</body>
</html>

 

view.jsp파일에 삭제버튼 및 수정화면 출력예시


수정화면 출력예시



# ListDAO.java 클래스 수정


위 코드를 ListDAO class에 추가한다


# 삭제기능구현 에러

삭제버튼을 누르고 나면 아래와 같이 404상태 에러메시지가 출력되었다.

삭제요청을 보내는 버튼이 있는 view.jsp파일에 코드를 확인해보니 deleteGo.jsp파일로 post요청을

보내주어야 되는데 deleteAction.jsp파일로 요청을 보내고 있어서 404상태에러메세지가 출력된것이었다.

 

동빈나 영상에는 deleteAction으로 파일을 만들었으나 나는 deleteGo.jsp로 삭제요청페이지를 생성했다.

# 삭제확인알림창 생성

삭제버튼을 누르면 잘 삭제가 되지만, 한번더 확인차 '삭제하시겠습니까?'
알림창을 띄우는 코드를 view.jsp 파일의 <a .. >수정</a> 다음에 아래와 같이 추가했다.

<a href="update.jsp?listID=<%= listID %>" class="btn btn-primary">수정</a>
<a onclick="return confirm('정말로 삭제하시겠습니까?') href="deleteGo.jsp?listID=<%= listID %>" class="btn btn-primary">삭제</a>

삭제확인 알림창 확인하기 예시화면

Copyright ⓒ 2021 by bluevulpe All Contents cannot be copied without permission.

728x90