ITWILL학원 : 30강 JSP기초 BY 정규태강사
1. 글삭제하기기능구현 순서
- deleteForm.jsp 작성
- deletePro.jsp 작성
- BoardDAO.java에서 bdao.deleteBoard(bno, pw)메서드 생성
- 기존의 boardList.jsp에 id가 있을 경우 추가
- 기존의 content.jsp 로그인상태에 따라 다르게 보이는 버튼 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <%
request.setCharacterEncoding("UTF-8");
int bno = Integer.parseInt(request.getParameter("bno")); String pageNum = request.getParameter("pageNum");
%> <fieldset> <legend>게시글 삭제</legend> <form action="deletePro.jsp?pageNum=<%=pageNum%>" method="post"> <input type="hidden" name="bno" value="<%=bno%>"> 비밀번호 : <input type="password" name="pw"><br> <input type="submit" value="글삭제하기" class="btn"> <input type="button" value="뒤로가기" class="btn" onclick="history.back()"> </form> </fieldset>
|
3. deletePro.jsp 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <%
request.setCharacterEncoding("UTF-8");
int bno = Integer.parseInt(request.getParameter("bno")); String pageNum = request.getParameter("pageNum"); String pw = request.getParameter("pw");
BoardDAO bdao = new BoardDAO();
int result = bdao.deleteBoard(bno, pw); if(result == 1){ %> <script type="text/javascript"> alert("정상적으로 글 삭제되었습니다"); location.href="boardList.jsp"; </script> <% }else if(result == 0){ %> <script type="text/javascript"> alert("비밀번호 오류"); history.back(); </script> <% }else{ %> <script type="text/javascript"> alert("존재하지않는 게시글입니다"); history.back(); </script> <% } %>
|
3. BoardDAO.java에서 bdao.deleteBoard(bno, pw)메서드 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public int deleteBoard(int bno, String pw){ int result = -1;
try { getCon(); sql="select pw from itwill_board where bno=?"; pstmt = con.prepareStatement(sql); pstmt.setInt(1, bno); rs = pstmt.executeQuery(); if(rs.next()){ if(pw.equals(rs.getString("pw"))){ sql="delete from itwill_board where bno=?"; pstmt = con.prepareStatement(sql); pstmt.setInt(1, bno); pstmt.executeUpdate(); System.out.println("글삭제 성공"); result = 1; }else{ result = 0; System.out.println("글삭제 중 비번오류"); } }else{ result = -1; System.out.println("글삭제 중 select오류"); } } catch (Exception e) { e.printStackTrace(); } finally { closeDB(); } return result; }
|
4. 기존의 main.jsp에 게시판바로가기 버튼 추가
글삭제의 경우 아무나 할 수 없어야한다.
따라서 로그인한 사람만이 글을 쓰고 글을 삭제할 수 있도록 구현해보자.
이전에 구현했던 main.jsp
에 게시판글바로볼 수 있는 버튼을 추가하고 location.href='../board/boardList.jsp
을 연결해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <% request.setCharacterEncoding("UTF-8"); String id = (String) session.getAttribute("id"); String name = request.getParameter("name");
if(id == null){ response.sendRedirect("loginForm.jsp"); } %> <h2><%=id %>님 환영합니다.</h2> <%=name %><br>
<input type="button" value="ITWILL게시판가기" class="btn" onclick="location.href='../board/boardList.jsp'"> <input type="button" value="회원정보조회" class="btn" onclick="location.href='memberinfo.jsp'"> <input type="button" value="회원정보수정" class="btn" onclick="location.href='updateForm.jsp'"> <input type="button" value="로그아웃" class="btn" onclick="location.href='logout.jsp'"> <input type="button" value="회원탈퇴" class="btn" onclick="location.href='deleteForm.jsp'">
<!-- 관리자일때만 메뉴확인가능 --> <% if(id != null){ if(id.equals("admin")){ %> <input type="button" value="회원전체목록(관리자용)" class="btn" onclick="location.href='memberList.jsp'"> <% } } %>
|
5. 기존의 boardList.jsp에 id가 있을 경우 추가
- id가 없을 경우 : 로그인버튼만 표시
- id가 있을 경우 : 로그아웃, 글쓰기버튼 표시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <fieldset> <legend>땡땡게시판</legend> <div id="contents"> 게시판 총 글의 수 : <%=cnt%> 개 <% if(id == null){ %> <input class="btn" type="button" value="로그인" onclick="location.href='../member/main.jsp'"> <% }else if( id != null){ %> <input class="btn" type="button" value="로그아웃" onclick="location.href='../member/logout.jsp'"> <input class="btn" type="button" value="글쓰기" onclick="location.href='writeForm.jsp'"> <% } %> <br> <table> <tr> <th>글번호</th> <th>제목</th> <th>작성자</th> <th>조회수</th> <th>작성일</th> <th>IP</th> </tr> <%//반복문 //ArrayList는 가변배열이므로 length가 없고 size가 존재한다. //size()메서드는 배열의 요소의 갯수를 리턴 for(int i=0;i<boardList.size(); i++){ //ArrayList 한칸의 정보 ->BoardBean 객체 하나로 이동 BoardBean bb = (BoardBean) boardList.get(i); %> <tr> <td><%=bb.getBno()%></td> <td><a href="content.jsp?bno=<%=bb.getBno()%>&pageNum=<%=pageNum%>"><%=bb.getSubject()%></a></td> <td><%=bb.getName()%></td> <td><%=bb.getReadcount()%></td> <td><%=bb.getDate()%></td> <td><%=bb.getIp()%></td> </tr> <% } %> </table> </div> </fieldset>
|
6. 기존의 content.jsp 로그인상태에 따라 다르게 보이는 버튼 추가
- 아이디가 있을 경우
- 로그아웃버튼, 글쓰기버튼이 보임
- 글 수정 및 삭제, 답글쓰기 버튼 보임
- 아이디가 없을 경우
- 로그인버튼만 보임. 로그아웃,글쓰기버튼 안보임
- 글 수정 및 삭제, 답글쓰기버튼 안보임
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| <fieldset> <legend>글 내용 보기</legend> <table border="solid,1px"> <tr> <th>글번호</th> <td><%=bno%></td> <th>조회수</th> <td><%=bb.getReadcount()%></td> </tr> <tr> <th>작성자</th> <td><%=bb.getName()%></td> <th>작성일</th> <td><%=bb.getDate()%></td> </tr> <tr> <th>제목</th> <td colspan="3"><%=bb.getSubject()%></td> </tr> <tr> <th>첨부파일</th> <td colspan="3"><%=bb.getFile()%></td> </tr> <tr> <th>내용</th> <td colspan="3" height="300px"><%=bb.getContent()%></td> </tr> <tr> <td colspan="4" style="text-align:center"> <% //현재페이지에 로그인 정보가 없거나 글쓴이 이름과 아이디가 다를 경우 수정,삭제버튼을 숨긴다 //1.세션값 가져오기 String id = (String) session.getAttribute("id");//object를 string으로 다운캐스팅 //2. 아이디가 존재하면서 이름과 아이디가 같은 경우 if( id != null && id.equals(bb.getName())){ %> <input type="button" value="글수정" class="btn" onclick="location.href='updateForm.jsp?bno=<%=bb.getBno()%>&pageNum=<%=pageNum%>'"> <input type="button" value="글삭제" class="btn" onclick="location.href='deleteForm.jsp?bno=<%=bb.getBno()%>&pageNum=<%=pageNum%>'"> <input type="button" value="답글쓰기" class="btn" onclick="location.href='reWriteForm.jsp?bno=<%=bb.getBno()%>&re_ref=<%=bb.getRe_ref() %>&re_lev=<%=bb.getRe_lev()%>&re_seq=<%=bb.getRe_seq()%>'"> <% } %> <input type="button" value="목록으로" class="btn" onclick="location.href='boardList.jsp?pageNum=<%=pageNum%>'">
</td> </tr> </table> </fieldset>
|