[스트러츠 1.x] 글목록 표시
이번에는 글목록을 출력하는 코드를 작성해보도록 하겠다. 일단 모델은 지난 번과 같이 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();
List rows = 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>




