JSP 게시판 - 답글 쓰기
BoardReWrite.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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <div style="text_align: center"> <h2>답변글 입력하기</h2> <% //게시글 읽기에서 답변글쓰기를 클릭하면 넘겨주는 데이터들을 받아줌 int num = Integer.parseInt(request.getParameter("num")); int ref = Integer.parseInt(request.getParameter("ref")); int re_step = Integer.parseInt(request.getParameter("re_step")); int re_level = Integer.parseInt(request.getParameter("re_level")); %> <form action="BoardReWriteProc.jsp" method="post"> <table width="600" border="1" boardcolort="gray" bgcolor="skyblue"> <tr height="40"> <td width="150" align="center">작성자</td> <td width="450"> <input type="text" name="writer" size="60"> </td> </tr> <tr height="40"> <td width="150" align="center">제목</td> <td width="450"> <input type="text" name="subject" value="[답변]" size="60"></td> </tr> <tr height="40"> <td width="150" align="center">이메일</td> <td width="450"> <input type="email" name="email" size="60"> </td> </tr> <tr height="40"> <td width="150" align="center">비밀번호</td> <td width="450"> <input type="password" name="password" size="60"></td> </tr> <tr height="40"> <td width="150" align="center">글내용</td> <td width="450"> <textarea rows="10" cols="60" name="content"></textarea> </td> </tr> <!-- form에서 사용자로부터 입력받지 않고 데이터를 넘김 --> <tr> <td align="center" colspan="2"><input type="hidden" name="ref" value="<%=ref%>"> <input type="hidden" name="re_step" value="<%=re_step%>"> <input type="hidden" name="re_level" value="<%=re_level%>"> <input type="submit" value="답글 등록"> <input type="reset" value="다시 입력"> <input type="button" onclick="location.href='BoardList.jsp'" value="전체글보기"></td> </tr> </table> </form> </div> </body> </html> | cs |
BoardReWriteProc.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 | <%@page import="model.BoardDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <% request.setCharacterEncoding("UTF-8"); %> <!-- 데이터 한번에 받아오기 : usebean --> <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"); %> </body> </html> | cs |
BoardDAO.java 일부 [ reWriteBoard() ] 메서드 정의부
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 | // 답변글이 저장되는 메서드 public BoardBean reWriteBoard(BoardBean bean) { // 부모글 그룹, 글레벨 글스텝 읽어들이기 int ref = bean.getRef(); int re_step = bean.getRe_step(); int re_level = bean.getRe_level(); getCon(); try { // ★핵심코드 //답변형 게시판의 특징 //글을 그룹으로 만들어야하기때문에 re_step과 re_level을 먼저 수정해줘야한다. // 부모 글보다 큰 re_level값을 전부 1씩 증가시켜줌 String levelsql = "update board set re_level = re_level+1 where ref=? and re_level> ?"; pstmt = con.prepareCall(levelsql); pstmt.setInt(1, ref); pstmt.setInt(2, re_level); pstmt.executeUpdate(); //답변 글 데이터를 저장 String sql ="insert into board 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_setep에 1을 더해줌 pstmt.setInt(7, re_level); //답글이니까 부모글 re_level에 1을 더해줌 pstmt.setString(8, bean.getContent()); // 쿼리 실행 // 쿼리 실행 후 결과 리턴은 executeQuery(), // 데이터 업데이트는 executeUpdate() pstmt.executeUpdate(); // 자원 반납 con.close(); } catch (Exception e) { e.printStackTrace(); } return bean; } | cs |
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 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <%@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> <body> <% //전체 게시글의 숫자, 제목을 jsp쪽으로 가져와야함 BoardDAO bdao = new BoardDAO(); //전체게시글을 리턴 받아주는 소스 //(bean이라는 세트 여러개를 한꺼번에 받아오려면 리스트(벡터) 써야한다.) Vector<BoardBean> vec = bdao.getAllBoard(); //받아온 데이터를 화면에 출력 %> <div style="text-align: center"> <h2>전체 게시글 보기</h2> <table align="center" width="700" border="1" bgcolor=skyblue> <tr height="40"> <td width="50" align="center">번호</td> <td width="320" align="center">제목</td> <td width="100" align="center">작성자</td> <td width="150" align="center">작성일</td> <td width="80" align="center">조회수</td> </tr> <% //데이터 출력 for (int i = 0; i < vec.size(); i++) { //벡터에 저장돼있는 빈클래스를 하나씩 추출 BoardBean bean = vec.get(i); //글번호는 글스텝에 관계없이 부여되는 것이 보기좋으므로 i+1로 출력?? //글제목에는 태그를 걸어준다. %> <tr height="40"> <td width="50" align="center"><%=i + 1%></td> <td width="320" align="left"><a href="BoardInfo.jsp?num=<%=bean.getNum()%>"> <% if (bean.getRe_step() > 1) { for (int j = 0; j < (bean.getRe_step() - 1) * 5; j++) {//5칸씩 띄어쓰기 %> <% } } %> <%=bean.getSubject()%></a></td> <td width="100" align="center"><%=bean.getWriter()%></td> <td width="150" align="center"><%=bean.getReg_date()%></td> <td width="80" align="center"><%=bean.getReadcount()%></td> </tr> <% } %> <tr height="40"> <td align="center" colspan="5"><input type="button" value="글쓰기" onclick="location.href='BoardWriteForm.jsp'"></td> </tr> </table> </div> </body> </html> | cs |
링크를 걸어준 칸에 style="text-decoration:none"> 추가하면 밑줄 사라진다.
(정리/수정 필요)
답글쓰기 폼 페이지
답글쓰기 처리 페이지
DAO에 답글저장 메서드
게시글 보기
폼페이지에서 처리페이지로 넘기고
데이터를 입력받아서 DAO클래스 메서드로 저장
처리페이지 있는과정과 없는 과정의 차이 파악하기
게시글쓰기(답게시글X) 폼에서는 re_step / re_lever 이 무조건 1 (게시글은 가상 상위글이고 보여지는 것도 가장 위)
ajax
'JSP > JSP & Servlet ' 카테고리의 다른 글
JSP 게시판 - 게시글 삭제 (0) | 2019.05.14 |
---|---|
JSP게시판 - 글 수정 (0) | 2019.05.13 |
JSP게시판 - 게시글 보기 (0) | 2019.05.09 |
JSP 게시판 -DAO 클래스 설정, 글쓰기 폼 (0) | 2019.05.08 |
JSP 게시판 -시스템 구조 / 테이블 설정, 빈클래스 (0) | 2019.05.08 |