본문 바로가기
JSP/JSP & Servlet

JSP게시판 - 게시글 보기

by avvin 2019. 5. 9.

JSP게시판 - 게시글 보기



 게시글 보기

 BoardList.jsp  getOneBorad()호출 BoardInfo.jsp  ▷ 답글쓰기/수정하기/삭제하기


BoardInfo.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
<%@page import="model.BoardBean"%>
<%@page import="model.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
    <%
        //get방식으로 글 Num받아옴 //trim()으로 공백 제거 후 정수형으로 
        int num = Integer.parseInt(request.getParameter("num").trim());
 
        //데이터베이스 접근
        BoardDAO bdao = new BoardDAO();
        //bean에  하나의 게시글 리턴 패키징
        BoardBean bean = bdao.getOneBoard(num);
    %>
 
    <div style="text-align: center">
        <h2>게시글 보기</h2>
        <table width="600" border="1" bgcolor="skyblue">
            <tr height="40">
                <td align="center" width="120">글번호</td>
                <td align="left" width="180"><%=bean.getNum()%>
                <td align="center" width="120">조회수</td>
                <td align="left" width="180"><%=bean.getReadcount()%></td>
            </tr>
            <tr height="40">
                <td align="center" width="120">작성자</td>
                <td align="left" width="180"><%=bean.getWriter()%>
                <td align="center" width="120">작성일</td>
                <td align="left" width="180"><%=bean.getReg_date()%></td>
            </tr>
            <tr height="40">
                <td align="center" width="120">이메일</td>
                <td align="left" colspan ="3"><%=bean.getEmail()%></td>
            </tr>
            <tr height="40">
                <td align="center" width="120">제목</td>
                <td align="left" colspan ="3"><%=bean.getSubject()%></td>
            </tr>
            <tr height="80">
                <td align="center" width="120">글내용</td>
                <td align="left" colspan ="3"><%=bean.getContent()%></td>
            </tr>
            <tr height="40">
                <td align="center" colspan="4">
                <input type="button" value ="답글쓰기" 
                onclick="location.href='BoardReWriteForm.jsp?num=<%=bean.getNum()%>
                &ref=<%=bean.getRef()%>
                &re_step=<%=bean.getRe_step()%>
                &re_level=<%=bean.getRe_level()%>'">
//num만 get방식으로 넘겨서 처리해도 된다.

                <input type="button" value ="수정하기" 
                onclick="location.href='BoardUpdateForm.jsp?num=<%=bean.getNum()%>'">    
                <input type="button" value ="삭제하기" 
                onclick="location.href='BoardDeleteForm.jsp?num=<%=bean.getNum()%>'">
                <input type="button" value ="목록보기" 
                onclick="location.href='BoardList.jsp'">                                            
            </tr>            
            
        </table>
    </div>
</body>
</html>

cs




BoardDAO.jsp 일부 [ getOneBoard() 메서드] 정의하기


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
 
    // 하나의 게시글을 리턴하는 메서드
    public BoardBean getOneBoard(int num) {
 
        BoardBean bean = new BoardBean();
        try {
            //조회수 증가 쿼리
            //Info페이지가 보여지면서 getOneBoard() 메서드가 호출되었다는건 한번 조회했다는 뜻이므로
            String readsql ="update board set readcount = readcount+1 where num=?";
            getCon();
            pstmt = con.prepareStatement(readsql);
            pstmt.setInt(1, num);
            //쿼리가 select이면 executeQuery()를 쓰면 되지만 update이면 executeUpdate()
            pstmt.executeUpdate(); 
            //bean에는 글정보를 한꺼번에 담아줄 것이기때문에 조회수 업데이트만 해주면 된다.
 
            //하나의 글 정보 전체 읽어오기
            String sql = "select * from board where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, num);
            rs = pstmt.executeQuery();
            
            //글(bean) 하나의 정보만 읽는것이니 if문 사용
            if (rs.next()) {
                bean.setNum(rs.getInt(1));
                bean.setWriter(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setSubject(rs.getString(4));
                bean.setPassword(rs.getString(5));
                // ResultSet은 getDate()메서드도 제공한다
                // byte[]타입으로 리턴되므로 toSting()처리해준다.
                bean.setReg_date(rs.getDate(6).toString());
                bean.setRef(rs.getInt(7));
                bean.setRe_step(rs.getInt(8));
                bean.setRe_level(rs.getInt(9));
                bean.setReadcount(rs.getInt(10));
                bean.setContent(rs.getString(11));
            }
            con.close();
        } catch (Exception e) {
 
            e.printStackTrace();
        }
 
        return bean;
    }
 
cs