6.페이지 리스트 처리(PageList.jsp)

 

페이지 리스트 처리 부분은 HTML Tag 가 빠질래야 빠질수 없는 부분입니다.

이 부분이 커스텀 태그나 빈즈로 처리가 된다면 어떨까요??

디자인이 자주 바뀌는 페이지라면 일일이 클래스를 찾아서 바꾸고 컴파일 하는 과정이 있어야 합니다.

 

그래서 이 부분은 JSP 페이지로 처리 하였습니다.

 

로직에 대한 설명은 생략하도록 하겠습니다.(소스파일을 참조 하세요)

 

.. 외부의 JSP페이지 이므로 리스트 페이지에서 인클루드 하는 방법만 살펴보도록 하겠습니다.

 

<list.jsp>

……………

<중략>

……………

<jsp:include page="PageList.jsp" flush="true">

<jsp:param name="PAGE_CNT" value="<%=total_page%>"/>

<jsp:param name="PAGE" value="<%=current_page%>"/>

<jsp:param name="PAGE_SIZE" value="5"/>

<jsp:param name="FIELD" value="<%=field%>"/>

<jsp:param name="KEY" value="<%=key%>"/>

<jsp:param name="URL" value="list.jsp"/>

</jsp:include>

……………

<중략>

……………

 

 

7. 글내용 보기 및 조회수 증가시키기

 

글내용 보는 것도 리스트페이지와 같은 방법으로 처리하였습니다.

처음에는 클래스(태그핸들러)를 따로 만들까 하는 생각해 보았지만 페이지에서 썼던 방법 그대로 써도 무리가 없을것으로 생각되어 습니다.

 

소스부터 살펴보겠습니다.


 

<%@ page contentType="text/html;charset=EUC-KR" %>

<%@ taglib uri="taglib" prefix="tl"%>

<jsp:useBean id="NoticeList" class="notice.NoticeList"/>

<%

…………………

<중략>

…………………

int no = Integer.parseInt(request.getParameter("NO"));

…………………

<중략>

…………………

%>

 

<tl:iterate name="notice" vector="<%=NoticeList.getArticle(no)%>" type="notice.NoticeRec">

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

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

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

</tr>

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

             <td colspan=7>&nbsp;&nbsp;

<b><jsp:getProperty name="notice" property="subject"/></b></td>

</tr>

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

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

</tr>

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

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

                          <td width=1 background="img/back_verdot3.gif">

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

                          <td width=175><jsp:getProperty name="notice" property="regi_date"/></td>

                          <td width=1 background="img/back_verdot3.gif">

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

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

                          <td width=1 background="img/back_verdot3.gif">

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

                          <td width=175><jsp:getProperty name="notice" property="cnt"/></td>

</tr>

</table>

</tl:iterate>

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

<tr>

             <td width=100%>

             <tl:repString input="\n" replace="<BR>">

<jsp:getProperty name="notice" property="content"/>

</tl:repString>

             </td>

</tr>

</table>

…………………

<중략>

…………………

 

리스트와 다른 점이 하나도 없죠??

.. 글 내용을 가져오기 위한 새로운 메서드 가 추가된 것과 <BR> 태그 처리 부분이 들어 간 것 만 다르네요.

 

이 메서드는 파라미터로 글 번호(index)를 받아옵니다.

 

<NoticeList.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{

                          NoticeRec nr = new NoticeRec();

                          con = getDBConnection();

                          stmt = con.createStatement();

                          query = "SELECT SUBJECT,CONTENT,REGI_DATE,CNT FROM NOTICE_T WHERE NO = " + no ;

                                      

                          rs = stmt.executeQuery(query);

                          rs.next();

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

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

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

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

                                      

                          v.addElement(nr);

             }catch(SQLException e){

                          e.getMessage();

             }finally{

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

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

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

             }

             return v;

}

…………………

<중략>

…………………

 

 

이 메서드도 별건 없군요.

단순히 글번호를 받아오고 글번호에 해당하는 데이터를 뽑아 온후 벡터로 리턴하는게 전부 입니다.

말 나온김에 조회수 증가 시키는 메서드까지 만들어 보겠습니다.

 

<NoticeList.java>

…………………

<중략>

…………………

/***************************************************

 *

 *                       조회수 증가

 *

 ***************************************************/

              

public void incrCnt(int no) throws SQLException{

             Connection con = null;

             PreparedStatement pstmt = null;

            

             try{

                          con = getDBConnection();

            

             pstmt = con.prepareStatement("UPDATE NOTICE_T SET CNT = CNT+1 WHERE NO=?");

                          pstmt.setInt(1,no);

                          pstmt.execute();

                          con.commit();

             }catch(SQLException e){

                          e.getMessage();

             }finally{

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

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

             }                         

}

…………………

<중략>

…………………

 

역시 별 것 없군요 ^^;;

.. Statemet 객체 대신 PreparedStatment 를 썼습니다.

 

이번에는 글내용중 <BR> 태그를 처리할 수 있도록 하기 위해 유틸리티 클래스를 만들어 보겠습니다.

이번에 만들 클래스는 글 검색시에도 유용하게 사용될 수 있습니다.

 

현재 까지 작성된 JSP페이지로 검색을 하면 단따옴표 처리가 되지 않으므로 에러를 내고 맙니다.

이 클래스를 쓰면 이런 문제도 쉽게 해결이 됩니다.

 



참고 문서 및 사이트
- 태그 라이브러리 튜토리얼 (www.orionsever.com)
- www.webdox.co.kr
- jsp.boolpae.com
- Web Development with JavaServerPages (인포북)
- 예제로 배우는 자바 프로그래밍 (한빛 미디어)
- 퍼펙트 JSP (한빛 미디어)