jsp hibernate的分頁(yè)代碼第2/3頁(yè)
更新時(shí)間:2008年09月27日 15:17:40 作者:
在查詢分頁(yè)代碼中使用Hibernate的一大好處是,既兼顧了查詢分頁(yè)的性能,同時(shí)又保證了代碼在不同的數(shù)據(jù)庫(kù)之間的可移植性。
// 刷新當(dāng)前頁(yè)面信息
public void refresh() {
if (totalPages <= 1) {
hasPrevious = false;
hasNext = false;
} else if (currentPage == 1) {
hasPrevious = false;
hasNext = true;
} else if (currentPage == totalPages) {
hasPrevious = true;
hasNext = false;
} else {
hasPrevious = true;
hasNext = true;
}
}
}
Action一:
public ActionForward queryWithPage(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletresponse) {
Collection clInfos = null;//用于輸出到頁(yè)面的記錄集合
int totalRows;//記錄總行數(shù)
VehiclePropertyDAO vehicleDAO = new VehiclePropertyDAO();
//取得當(dāng)前表中的總行數(shù)
try {
totalRows = vehicleDAO.getRows("select count(*) from VehicleProperty");
} catch (Exception ex) {
servlet.log(ex.toString());
return actionMapping.findForward(Constants.FAILURE);
}
//通過(guò)PagerHelper類來(lái)獲取用于輸出到頁(yè)面的pager對(duì)象
Pager pager=PagerHelper.getPager(httpServletRequest,totalRows);
//取出從startRow開始的pageSize行記錄
try {
clInfos = vehicleDAO.findWithPage(pager.getPageSize(), pager.getStartRow());
} catch (Exception ex) {
servlet.log(ex.toString());
return actionMapping.findForward(Constants.FAILURE);
}
//把輸出的記錄集和pager對(duì)象保存到request對(duì)象中
httpServletRequest.setAttribute("CLINFOS", clInfos);
httpServletRequest.setAttribute("PAGER", pager);
return actionMapping.findForward(Constants.SUCCESS);
}
查詢語(yǔ)句select count(*) from VehicleProperty 也可以換成你需要的任意的條件(select count(*) from VehicleProperty where ..)
Action二:
DisplayAllAction 顯示數(shù)據(jù)頁(yè)面控制器
package com.jeffrey.messagelove;
import com.jeffrey.messagelove.*;
import com.jeffrey.messagelove.Pager;
import com.jeffrey.messagelove.hibernate.*;
/*
* @(#)DisplayAction.java 2005-5-2
*
* Copyright (c) 2005, Jeffrey Xu
*/
import org.apache.struts.action.*;
import java.util.*;
import javax.servlet.http.*;
/**
* 顯示頁(yè)面控制器
*/
public class DisplayAllAction extends Action {
private HibernateDAO hibernateDAO = new HibernateDAO();
private Pager pager = new Pager();
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
List messageList = null;
HQuery hquery = new HQuery();
int totalRows = 0;
int startRow = 0;
try {
totalRows = hibernateDAO.getRows("select count(*) from Message");
// 初始化頁(yè)面信息
pager.init(totalRows, Constants.RECORD_PER_PAGE);
} catch (Exception ex) {
ex.printStackTrace();
}
hquery.setQueryString("From Message order by m_sendDate desc");
String viewPage = (String) request.getParameter("viewPage");
String action = (String) request.getParameter("action");
// 跳轉(zhuǎn)至相應(yīng)頁(yè)面
if (viewPage != null && !viewPage.equals("")) {
try {
pager.setCurrentPage(Integer.parseInt(viewPage));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
if (action != null) {
// 根據(jù)傳遞進(jìn)來(lái)的參數(shù)控制頁(yè)面的前進(jìn)后退
if (action.equalsIgnoreCase("previous")) {
pager.previous();
} else if (action.equalsIgnoreCase("next")) {
pager.next();
} else if (action.equalsIgnoreCase("first")) {
pager.first();
} else if (action.equalsIgnoreCase("last")) {
pager.last();
}
}
try {
hquery.setPageStartNo(pager.getCurrentPage());
messageList = hibernateDAO.find(hquery);
} catch (Exception ex) {
ex.printStackTrace();
}
request.setAttribute("list", messageList);
session.setAttribute("pager", pager);
return mapping.findForward("display");
}
}
Action中PagerHelp類以及DAO
package com.jpcf.db.helper;
import javax.servlet.http.*;
public class PagerHelper {
public static Pager getPager(HttpServletRequest httpServletRequest,
int totalRows) {
//定義pager對(duì)象,用于傳到頁(yè)面
Pager pager = new Pager(totalRows);
//從Request對(duì)象中獲取當(dāng)前頁(yè)號(hào)
String currentPage = httpServletRequest.getParameter("currentPage");
//如果當(dāng)前頁(yè)號(hào)為空,表示為首次查詢?cè)擁?yè)
//如果不為空,則刷新pager對(duì)象,輸入當(dāng)前頁(yè)號(hào)等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
}
//獲取當(dāng)前執(zhí)行的方法,首頁(yè),前一頁(yè),后一頁(yè),尾頁(yè)。
String pagerMethod = httpServletRequest.getParameter("pageMethod");
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
}
}
return pager;
}
}
DAO類
package com.jpcf.db.dao;
import com.jpcf.db.model.*;
import com.jpcf.db.helper.HibernateUtil;
import net.sf.hibernate.*;
import java.util.*;
import com.jpcf.db.controller.*;
public class VehiclePropertyDAO {
public Collection findWithPage(int pageSize, int startRow) throws
HibernateException {
Collection vehicleList = null;
Transaction tx = null;
try {
Session session = HibernateUtil.currentSession();
tx = session.beginTransaction();
Query q = session.createQuery("from VehicleProperty vp");
q.setFirstResult(startRow);
q.setMaxResults(pageSize);
vehicleList = q.list();
tx.commit();
} catch (HibernateException he) {
if (tx != null) {
tx.rollback();
}
throw he;
} finally {
HibernateUtil.closeSession();
}
return vehicleList;
}
public int getRows(String query) throws
HibernateException {
int totalRows = 0;
Transaction tx = null;
try {
Session session = HibernateUtil.currentSession();
tx = session.beginTransaction();
totalRows = ((Integer) session.iterate(query).next()).
intValue();
tx.commit();
} catch (HibernateException he) {
if (tx != null) {
tx.rollback();
}
throw he;
} finally {
HibernateUtil.closeSession();
}
return totalRows;
}
}
您可能感興趣的文章:
- jsp分頁(yè)顯示的實(shí)現(xiàn)代碼
- JSP分頁(yè)顯示的實(shí)例代碼
- 一個(gè)實(shí)用的JSP分頁(yè)代碼
- JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)示例
- JSP自定義分頁(yè)標(biāo)簽TAG全過(guò)程
- jsp+servlet+javabean實(shí)現(xiàn)數(shù)據(jù)分頁(yè)方法完整實(shí)例
- JSP通用高大上分頁(yè)代碼(超管用)
- jsp實(shí)現(xiàn)頁(yè)面分頁(yè)功能代碼
- 一個(gè)通用的jsp分頁(yè)P(yáng)ageBean
- JSP實(shí)現(xiàn)分頁(yè)效果
相關(guān)文章
jsp中獲取狀態(tài)怎么寫(兩種實(shí)現(xiàn)方式)
由于框架是2005年的,jsp中不能存放標(biāo)簽,只能有java代碼來(lái)寫了,接下來(lái)為大家介紹下兩種實(shí)現(xiàn)獲取狀態(tài)寫法,感興趣的各位可以參考下哈,希望可以幫助到你2013-04-04
js實(shí)現(xiàn)隨機(jī)的四則運(yùn)算題目效果
本文主要介紹了js實(shí)現(xiàn)隨機(jī)的四則運(yùn)算題目效果,可以隨機(jī)的進(jìn)行加減乘除的運(yùn)算,有興趣的同學(xué)可以了解一下。2016-10-10
基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開發(fā)
基于EJB技術(shù)的商務(wù)預(yù)訂系統(tǒng)的開發(fā)...2006-10-10
詳解Struts2中對(duì)未登錄jsp頁(yè)面實(shí)現(xiàn)攔截功能
這篇文章主要介紹了Struts2中對(duì)未登錄jsp頁(yè)面進(jìn)行攔截功能的實(shí)現(xiàn),在演示源碼的同時(shí)對(duì)步驟和原理進(jìn)行了分析,具有一定參考價(jià)值,需要得朋友可以了解下。2017-09-09
詳解JSP中的語(yǔ)句對(duì)象Statement操作MySQL的使用實(shí)例
這篇文章主要介紹了JSP中的語(yǔ)句對(duì)象Statement操作MySQL的使用實(shí)例,講解了添加記錄、更新記錄、刪除記錄三種操作,說(shuō)明都在代碼注釋中簡(jiǎn)單明了,需要的朋友可以參考下2016-04-04
關(guān)于IIS連接數(shù)和在線人數(shù)的詳細(xì)說(shuō)明
這篇文章主要為大家介紹下IIS連接數(shù)和在線人數(shù)的詳細(xì)說(shuō)明需要的朋友可以參考下2006-10-10

