페이징 프로그램소스
import java.net.*;
import javax.servlet.http.*;
public class Pager {
/**
* 파라미터 구하기
*
* @param string old = 기존 파라미터
* @param string add = 더할 파라미터
* @return string
* @access public
*
*/
public static String getParam(String old, String add) {
String returnValue = old;
if (returnValue == null || returnValue.equals("")) {
returnValue = "?";
} else {
returnValue += "&";
}
return returnValue + add;
}
/**
* 페이지 사이즈
*
* @param long total = 총 레코드수
* @param int limit = 목록당 출력수
* @return long
* @access public
*
*/
public static long getSize(long total, int limit) {
return (long) Math.ceil((double) total / (double) limit);
}
/**
* 페이지 목록 [1]
*
* @param javax.servlet.http.HttpServletRequest request = request
* @param long page = 현재 페이지
* @param int limit = 목록당 출력수
* @param long total = 총 페이지수
* @return string
* @access public
*
*/
public static String getList(HttpServletRequest request, long page, int limit, long total) {
String[] buttons = {"[처음]", "[이전]", "[다음]", "[마지막]"};
return getList(request, page, limit, total, "", "p", "", buttons);
}
/**
* 페이지 목록 [2]
*
* @param javax.servlet.http.HttpServletRequest request = request
* @param long page = 현재 페이지
* @param int limit = 목록당 출력수
* @param int limit = 목록당 출력수
* @param string linkBase = 스크립트
* @param string param = 페이지 파라미터
* @param string border = 페이지와 페이지 사이에 출력될 문자열
* @param string[] buttons = 버튼
* @return string
* @access public
*
*/
public static String getList(HttpServletRequest request, long page, int limit, long total, String linkBase, String param, String border, String[] buttons) {
String returnValue = "";
String linkRequest = "";
String queryString = request.getQueryString();
long start = (long) ((page - 1) / limit) * limit;
long move = 0;
long n = 1;
if (queryString != null) {
String[] val1 = queryString.split("&");
for (int i = 0; i < val1.length; i++) {
String[] val2 = val1[i].split("=");
try {
if (val2.length == 2) {
if (!val2[0].equals(param) && !(val2[1] == null || val2[1].equals(""))) {
linkRequest = getParam(linkRequest, val2[0] + "=" + URLEncoder.encode(URLDecoder.decode(val2[1], com.smd.eJournal.Common.CHARSET), com.smd.eJournal.Common.CHARSET));
}
}
} catch (Exception e) {
}
}
}
if (page > 1) {
returnValue += "<a href=\"" + linkBase + getParam(linkRequest, param + "=1") + "\">" + buttons[0] + "</a> ";
} else {
// returnValue += buttons[0] + " ";
}
if (page > limit) {
returnValue += "<a href=\"" + linkBase + getParam(linkRequest, param + "=" + start) + "\">" + buttons[1] + "</a> ";
} else {
// returnValue += buttons[1] + " ";
}
while (n + start <= total && n <= limit) {
move = n + start;
if (page == move) {
returnValue += (n == 1 ? "" : border) + " <a class=\"now\">" + move + "</a> ";
} else {
returnValue += (n == 1 ? "" : border) + " <a href=\"" + linkBase + getParam(linkRequest, param + "=" + move) + "\" class=\"sel\">" + move + "</a> ";
}
n++;
}
if (total > move) {
returnValue += " <a href=\"" + linkBase + getParam(linkRequest, param + "=" + (move + 1)) + "\">" + buttons[2] + "</a>";
} else {
// returnValue += " " + buttons[2];
}
if (total > 1 && page < total) {
returnValue += " <a href=\"" + linkBase + getParam(linkRequest, param + "=" + total) + "\">" + buttons[3] + "</a>";
} else {
// returnValue += " " + buttons[3];
}
return returnValue;
}
}
-------------------------------------------------------------------------------------
파라미터 보내기
import java.net.*;
import javax.servlet.http.*;
public class Param {
/**
* 파라미터 더하기
*
* @param javax.servlet.http.HttpServletRequest request = request
* @param string param = 더해질 파라미터
* @return string
* @access public
*
*/
public static String addParam(HttpServletRequest request, String param) {
String returnValue = "";
String addList = "," + param + ",";
if (request.getQueryString() != null) {
String[] v1 = request.getQueryString().split("&");
for (int i = 0; i < v1.length; i++) {
String[] v2 = v1[i].split("=");
try {
if (v2.length == 2) {
if (addList.indexOf("," + v2[0] + ",") >= 0) {
returnValue += "&" + v2[0] + "=" + URLEncoder.encode(URLDecoder.decode(v2[1], com.smd.eJournal.Common.CHARSET), com.smd.eJournal.Common.CHARSET);
}
}
} catch (Exception e) {
}
}
}
return returnValue;
}
}
-----------------------------------
long pageNo = request.getParameter("page");
String addParam = Param.addParam(request, "status,page");
long count = StringEx.str2long(dbLib.getResult(conn, "SELECT COUNT(*) FROM " + sql.get("table") + " WHERE " + sql.get("where")));
//목록
ArrayList rsList = new ArrayList();
int limitList = 10;
long no = count - (pageNo - 1) * limitList;
long pages = Pager.getSize(count, limitList);
long sn = ((pageNo - 1) * limitList) + 1;
long en = (sn - 1) + limitList;
(sql)
"SELECT * FROM (SELECT ROWNUM AS RNUM, A.* FROM (SELECT " + sql.get("field") + " FROM " + sql.get("table") + " WHERE " + sql.get("where") + " ORDER BY SEQ DESC ) A WHERE ROWNUM <= " + en + ") WHERE RNUM >= " + sn
-------------------------------------------------------------
<table width="785" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="10"></td>
</tr>
<tr>
<td class="page"><%=Pager.getList(request, pageNo, 10, pages, "", "page", "", button)%></td>
</tr>
</table>