SQL 쿼리를 변경합니다. 기존에 ref_step, ref_level 을 re_step , re_level 로 변경 합니다
자바빈과 설정값이 다르고 또한, 강의 내용과 틀려서 에러가 발생했으므로 변경합니다.
drop table board; create table board( num number primary key, writer varchar2 (20), email varchar2(50), subject varchar2(50), password varchar2(10), reg_date Date, ref number, re_step number, re_level number, readcount number, content varchar2(3000) );
그리고, DAO 에서 ref_step, ref_level 를 된것을 re_step , re_level 로 모두 변경 합니다.
BoardInfo.jsp 에서도 변경합니다.
<input type="button" class="btn btn-success" value="답글 쓰기" onclick="location.href='BoardReWriteForm.jsp?num=<%=bean.getNum()%>&ref=<%=bean.getRef() %>&re_step=<%= bean.getRe_step() %>&re_level=<%=bean.getRe_level() %>'"
BoardDAO 클래스의 getAllBoard 메소드 의 쿼리를 다음과 같이 변경합니다.
String sql ="select * from board order by ref desc, RE_LEVEL asc";
re_step -> RE_LEVEL
BoardReWriteProc.jsp
<%@page import="model.BoardDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 강좌와 다르게 html 요소는 제거를 했습니다. 왜냐하면은 이 페이지에서는 프로세스 작업(데이터를 받고 Dao 를 통해 insert)을 하는 페이지이기 때문입니다. --> <% request.setCharacterEncoding("UTF-8"); %> <!-- 데이터를 한번에 받아오는 빈클래스를 사용하도록 --> <jsp:useBean id="boardbean" class="model.BoardBean"> <jsp:setProperty name="boardbean" property="*"/> </jsp:useBean> <% //데이터베이스 객체 생성 BoardDAO bdao =new BoardDAO(); bdao.reWriteBoard(boardbean); //답변 데이터를 모두 저장후 전체 게시글 보기를 설정 response.sendRedirect("BoardList.jsp"); %>
class BoardDAO
//답변글이 저장되는 메소드 public void reWriteBoard(BoardBean bean){ //부모글 그룹과 글레벨 글스텝을 읽어드림 int ref=bean.getRef(); int re_step=bean.getRe_step(); int re_level=bean.getRe_level(); //System.out.println("re_step :" +re_step + " : re_level :" +re_level); getCon(); try{ ////////////// 핵심 코드 //////////////// //1.부모 글보다 큰 re_level 의 값을 전부 1씩 증가시켜줌 String levelsql="update board set re_level =re_level+1 where ref=? and re_level > ?"; //쿼리실행객체 선언 pstmt=con.prepareStatement(levelsql); pstmt.setInt(1, ref); pstmt.setInt(2, re_level); //쿼리실행 pstmt.executeUpdate(); //답변글 데이터를 저장 String sql =" insert into BOARD (NUM, WRITER, EMAIL, SUBJECT, PASSWORD, REG_DATE, REF, "; sql +=" RE_STEP, RE_LEVEL, READCOUNT, CONTENT) "; sql +=" values(board_seq.NEXTVAL, ? ,? , ?, ?, sysdate, ?, ?, ? , 0, ? ) "; pstmt =con.prepareStatement(sql); //?에 값을 대입 pstmt.setString(1, bean.getWriter()); pstmt.setString(2, bean.getEmail()); pstmt.setString(3, bean.getSubject()); pstmt.setString(4, bean.getPassword()); pstmt.setInt(5, ref);//부모의 ref값을 넣어줌 pstmt.setInt(6, re_step+1);//답글이기에 부모 글 re_step 에 1을 더해줌 pstmt.setInt(7, re_level+1); pstmt.setString(8, bean.getContent()); pstmt.executeUpdate(); }catch(Exception e){ e.printStackTrace(); }finally{ closed(); } }
BoardList.jsp
<%@page import="model.BoardBean"%> <%@page import="java.util.Vector"%> <%@page import="model.BoardDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <jsp:include page="Header.jsp"/> </head> <body> <% //전체 게시글의 내용을 jsp 쪽으로 가져와야 함 BoardDAO bdao =new BoardDAO(); //전체게시글을 리턴 받아주는 소스 Vector<BoardBean> vec =bdao.getAllBoard(); %> <div class="row"> <div class="col-xs-2"></div> <div class="col-xs-8 col-md-8"> <h2 class="text-center">전체 게시글 보기</h2> <div class="table-responsive"> <table class="table table-bordered table-striped" > <tr> <th>번호</th> <th>제목</th> <th>작성자</th> <th>작성일</th> <th>조회수</th> </tr> <%-- <% int k=0; for(BoardBean bean : vec){ %> <tr> <td><%= k+1%></td> <td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" ><%= bean.getSubject() %></a></td> <td><%=bean.getWriter() %></td> <td><%= bean.getReg_date() %></td> <td><%= bean.getReadcount() %></td> </tr> <% k++;} %> --%> <% for(int i=0; i<vec.size(); i++){ BoardBean bean =vec.get(i); //벡터에 저장되어 있는 빈클래스를 하나씩 추출 %> <tr> <td><%= i+1%></td> <td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" > <% if(bean.getRe_step() >1){ for(int j =0; j<(bean.getRe_step()*5); j++){ %> <% } } %> <%= bean.getSubject() %></a></td> <td><%=bean.getWriter() %></td> <td><%= bean.getReg_date() %></td> <td><%= bean.getReadcount() %></td> </tr> <% }%> <tr> <td colspan="5" class="text-center"> <input type="button" value="글쓰기" onclick="location.href='BoardWrite.jsp'" class="btn btn-warning"> </td> </tr> </table> </div> </div> </div> <jsp:include page="Bottom.jsp"/> </body> </html>
동영상 강좌와 다르게 모바일 적용이 가능한 반응형 부트스트랩을 사용하였다.
여기서는 jsp 를 배우는 강좌 이기 때문에 html 적 요소에는 비중있게 생각 하지 않아도 될 것이다.
소스 : https://github.com/braverokmc79/jsp_sin
유튜브 동영상 출처 :
강사 : 신형섭(잭임연구원)
저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.
댓글 ( 4)
댓글 남기기