4. 글 내용을 보기 위한 클래스 정의(Board.java)

해당글을 보기위해서는 글의 인덱스번호를 넘겨주면 됩니다.

물론 사용자가 어떤 경로로 이동했는지 알기위해서는 페이지값이나 검색어,검색필드도 알고 있다면 다시 목록으로 이동할경우 편리하게 이용할 수 있습니다.

여기서는 글 내용을 가져오기 위한 메서드를 살펴보도록 하겠습니다.

 

Board.java

public Vector getArticle(int no) throws SQLException{

    Connection con = null;

    Statement stmt = null;

    ResultSet rs = null;

 

    Vector v = new Vector();

    String query;

    int cnt;

 

    try{

      BoardRec br = new BoardRec();

      con = getDBConnection();

      stmt = con.createStatement();

      query = "SELECT NAME,EMAIL,SUBJECT,CONTENT,REGI_DATE,CNT,PASSWD FROM BOARD_T WHERE NO = " + no ;

 

      rs = stmt.executeQuery(query);

      rs.next();

      br.name = rs.getString("NAME");

      br.email = rs.getString("EMAIL");

      br.subject = rs.getString("SUBJECT");

      br.content = rs.getString("CONTENT");

      br.regi_date = rs.getString("REGI_DATE");

               br.passwd = rs.getString("PASSWD");

      br.cnt = rs.getInt("CNT");

 

      v.addElement(br);

    }catch(SQLException e){

      e.getMessage();

    }finally{

      if(rs != null) rs.close();

      if(stmt != null) stmt.close();

      if(con != null) con.close();

    }

    return v;

  }

글목록을 출력하기 위한 메서드와 크게 다른 점은 없습니다.

단지 인덱스 값을 받아 오고 이 값에 해당하는 글만 벡터로 넘겨 주는 점이 다를 뿐이죠..

JSP 페이지에서는 어떻게 구현이 되는지 살펴보도록 하겠습니다.

view.jsp

<tl:iterate name="view" vector="<%=list.getArticle(no)%>" type="board.BoardRec">

<table width=703 cellpadding=0 cellspacing=0 border=0>

<tr height=25 bgcolor="#f2f2f2">

    <td &nbsp;&nbsp;<b><jsp:getProperty name="view" property="subject"/></b></td>

</tr>

<tr height=25 bgcolor="#f2f2f2" align=center>

<td width=110>작 성 자</td>

<td width=120>

             <a href="mailto:<jsp:getProperty name="view" property="email"/>">

             <jsp:getProperty name="view" property="name"/>

             </a>

      </td>

      <td width=110>작 성 일</td>

      <td width=140><jsp:getProperty name="view" property="regi_date"/></td>

      <td width=110>조 회 수</td>

      <td width=108><jsp:getProperty name="view" property="cnt"/></td>

  </tr>

<tr height=25>

    <td colspan=11>

      <table width=703 cellpadding=10 cellspacing=0 border=0>

      <tr>

                           <td width=100%>

                           <%

                                        out.println(repString.filter(view.content,"\n","<br>"));

                           %>

                           </td>

      </tr>

      </table>

    </td>

  </tr>

  <tr height=1 bgcolor="#afafaf">

    <td colspan=11><img src="img/clear.gif" height=1 width=1></td>

  </tr>

</table>

</tl:iterate>

Iterate 태그를 계속해서 사용하고 있군요.

게다가 유틸리티 메서드인 repString 클래스도 쓰고 있습니다.

사실 관련글 목록 출력은 더욱 간단합니다.

이미 리스트 출력에서 사용되었던 방법을 그대로 이용하면 됩니다.

단지.. 관련글만 가져오는 메서드만 추가 하면 되구요.

Board.java

public Vector getThread(int group) throws SQLException{

 

    Connection con = null;

    Statement stmt = null;

    ResultSet rs = null;

 

    Vector v = new Vector();

    String query ;

 

    try{

      con = getDBConnection();

      stmt = con.createStatement();

query="SELECT “ +

“NO,NAME,EMAIL,SUBJECT,CONTENT,REGI_DATE,CNT,GROUP_ID,” +

“GROUP_ORDER,DEPTH " +

                "FROM BOARD_T “ +

“WHERE GROUP_ID=" + group + " ORDER BY GROUP_ORDER ASC";

      rs = stmt.executeQuery(query);

 

      while(rs.next()){

             BoardRec br = new BoardRec();

             br.no = rs.getInt("NO");

             br.name = rs.getString("NAME");

             br.email = rs.getString("EMAIL");

             br.subject = rs.getString("SUBJECT");

             br.content = rs.getString("CONTENT");

             br.regi_date = rs.getString("REGI_DATE");

             br.cnt = rs.getInt("CNT");

             br.group_id = rs.getInt("GROUP_ID");

             br.group_order = rs.getInt("GROUP_ORDER");

             br.depth = rs.getInt("DEPTH");

             v.addElement(br);

      }

     }catch(SQLException e){

       throw new SQLException(e.getMessage());

     }finally{

             if (rs != null) rs.close();

             if (stmt != null) stmt.close();

             if (con != null) con.close();

     }

     return v;

  }

목록을 가져오는 메서드나 해당글의 내용만 가져오는 메서드와 별 다를 것이 없습니다.

그렇다면 JSP 페이지도 역시 똑 같겠죠??

view.jsp

<tl:iterate name="Thread" vector="<%=list.getThread(group_id)%>" type="board.BoardRec">

  <tr height=24 align=center>

    <td align=left>

                           <%

                           String re = "";

                           if(Thread.depth >= 1){

                                        re = "<img src=img/icon_re.gif>";

                           }

                           for(int i=0;i<=Thread.depth;i++){

                                        out.println("&nbsp;&nbsp;");

                           }

                           %>

                           <%=re%>            

      <a href="view.jsp?KEY=<%=key%>&FIELD=<%=field%>&PAGE=<%=PAGE%>&NO=<jsp:getProperty name="Thread" property="no"/>">

      <jsp:getProperty name="Thread" property="subject"/>

      </a>

    </td>

    <td>

      <a href="mailto:<jsp:getProperty name="Thread" property="email"/>">

      <jsp:getProperty name="Thread" property="name"/>

      </a>

    </td>

    <td><jsp:getProperty name="Thread" property="regi_date"/></td>

    <td><jsp:getProperty name="Thread" property="cnt"/></td>

  </tr>

  <tr height=1 align=center><td colspan=4 background="img/back_verdot2.gif"></td></tr>

</tl:iterate>

 

사실 여기서 설명되지 않은 부분이 있습니다. 예를들어 조회수증가나 목록으로 가기 위한 링크 처리등이 그것이 입니다. 이부분은 직접 소스를 보시고 나름대로 연구해 보시기 바랍니다(어렵지 않습니다. 절대로).

 

2003-07-27