[스트러츠 1.x] 글목록 표시
2009. 12. 7. 02:10
이번에는 글목록을 출력하는 코드를 작성해보도록 하겠다. 일단 모델은 지난 번과 같이 POJO를 사용하여 최대한 단순무식(?)하게 구현을 할 것이다. 데이터맵핑과 관련한 프레임워크를 사용해 볼 계획이지만 일단은 스트러츠 1.x에 최대한 집중하여 작성할 것이므로 다른 프레임워크를 섞어서 코드를 복잡하게 할 생각은 없다.^^;
모델
private static final String _LIST = "" + "SELECT no, title, writer, wtime FROM bboard ORDER BY no DESC " + "LIMIT ?, ?"; private static final int _ROWSPERPAGE = 10; /** * 게시판 글목록 가져오기 * @param pageNo 페이지 번호 * @return ArrayList<BasicBoardDataBean> 글목록 * @throws SQLException */ public List<BasicBoardDataBean> list(int pageNo) throws SQLException { ArrayList<BasicBoardDataBean> rows = new ArrayList<BasicBoardDataBean>(); int startRowNo = (pageNo - 1) * _ROWSPERPAGE + 1; int endRowNo = pageNo * _ROWSPERPAGE; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; conn = _getConnection(); try { pstmt = conn.prepareStatement(_LIST); pstmt.setInt(1, startRowNo); pstmt.setInt(2, endRowNo); rs = pstmt.executeQuery(); while (rs.next()) { BasicBoardDataBean row = new BasicBoardDataBean(); row.setNo(rs.getLong(1)); row.setTitle(rs.getString(2)); row.setWriter(rs.getString(3)); row.setWtime(rs.getTimestamp(4)); rows.add(row); } } finally { try { pstmt.close(); } catch (SQLException e) { throw e; } try { conn.close(); } catch (SQLException e) { throw e; } pstmt = null; conn = null; } return rows; }
출력을 위한 폼이므로 ActionForm은 일단 작성하지 않았다. 스트러츠는 JSTL을 확장한 다양한 taglib를 제공한다. 우선 페이지 네비게이션과 디자인은 빼고 기본적인 로직만 담도록 하겠다.
폼(listForm.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %> <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html lang="true"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>글목록</title> </head> <body> <logic:empty name="rows" scope="request"> <p>글 목록이 없습니다.</p> </logic:empty> <logic:notEmpty name="rows" scope="request"> <logic:iterate id="row" name="rows"> <bean:write name="row" property="no"/>: <bean:write name="row" property="title"/>: <bean:write name="row" property="writer"/>: <bean:write name="row" property="wtime" format="yyyy년 MM월 dd월 hh시 mm분 ss초"/> <br> </logic:iterate> </logic:notEmpty> </body> </html:html>
액션폼(ListAction.java)
package net.jeongsam.bboard.struts1.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.jeongsam.bboard.model.BasicBoardDAO; import net.jeongsam.bboard.model.BasicBoardDataBean; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ListAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward = null; String $pageNo = request.getParameter("pageNo"); int pageNo = Integer.parseInt( $pageNo != null ? $pageNo : "1"); BasicBoardDAO boardMgr = new BasicBoardDAO(); Listrows = boardMgr.list(pageNo); request.setAttribute("rows", rows); forward = mapping.findForward("LIST"); return forward; } }
매핑설정(struts-config.xml)
<action path="/list" type="net.jeongsam.bboard.struts1.action.ListAction" name="listForm" scope="request" validate="false"> <forward name="LIST" path="/bboard/struts1/listForm.jsp"/> </action>