精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談Struts分頁中的Hibernate如何實(shí)現(xiàn)

開發(fā) 后端
在進(jìn)行web應(yīng)用開發(fā)的時(shí)候經(jīng)常要進(jìn)行分頁處理,經(jīng)常看到一些人在問分頁處理的問題,現(xiàn)在我把自己的處理方法寫在這兒,希望能對(duì)需要進(jìn)行分頁處理的朋友有所幫助。

在進(jìn)行web應(yīng)用開發(fā)的時(shí)候經(jīng)常要對(duì)Struts分頁處理,經(jīng)常看到一些人在問Struts分頁處理的問題,現(xiàn)在我把自己的處理方法寫在這兒,希望能對(duì)需要進(jìn)行Struts分頁處理的朋友有所幫助。

一、在Struts分頁有兩種結(jié)構(gòu):

1. 在Action中通過DAO查詢出所有的記錄,然后加到session或request對(duì)象中,傳到客戶端,由JSP進(jìn)行分頁。

這種方法對(duì)于在數(shù)據(jù)量少的時(shí)候很方便,也不影響速度。

2.在Action中每次通過DAO只查詢出一頁的記錄,再傳給JSP頁面。

這種結(jié)構(gòu)對(duì)于數(shù)據(jù)量大的程序很好,但對(duì)于數(shù)據(jù)量小的情況,會(huì)增加對(duì)服務(wù)器的請(qǐng)求,加大服務(wù)器的負(fù)載。

二、Hibernate查詢

由于在Hibernate中直接提供了對(duì)數(shù)據(jù)庫定點(diǎn)定量的查詢方法,所以我采用的是第2種方法。

如:

從第1萬條開始取出100條記錄

Query q = session.createQuery("from Cat as c");

q.setFirstResult(10000);

q.setMaxResults(100);

List l = q.list();

三、具體實(shí)現(xiàn)

1.Pager類

package com.jpcf.db.helper;

import java.math.*;

public class Pager {

private int totalRows; //總行數(shù)

private int pageSize = 10; //每頁顯示的行數(shù)

private int currentPage; //當(dāng)前頁號(hào)

private int totalPages; //總頁數(shù)

private int startRow; //當(dāng)前頁在數(shù)據(jù)庫中的起始行

public Pager() {

}

public Pager(int _totalRows) {

totalRows = _totalRows;

totalPages=totalRows/pageSize;

int mod=totalRows%pageSize;

if(mod>0){

totalPages++;

}

currentPage = 1;

startRow = 0;

}

public int getStartRow() {

return startRow;

}

public int getTotalPages() {

return totalPages;

}

public int getCurrentPage() {

return currentPage;

}

public int getPageSize() {

return pageSize;

}

public void setTotalRows(int totalRows) {

this.totalRows = totalRows;

}

public void setStartRow(int startRow) {

this.startRow = startRow;

}

public void setTotalPages(int totalPages) {

this.totalPages = totalPages;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalRows() {

return totalRows;

}

public void first() {

currentPage = 1;

startRow = 0;

}

public void previous() {

if (currentPage == 1) {

return;

}

currentPage--;

startRow = (currentPage - 1) * pageSize;

}

public void next() {

if (currentPage < totalPages) {

currentPage++;

}

startRow = (currentPage - 1) * pageSize;

}

public void last() {

currentPage = totalPages;

startRow = (currentPage - 1) * pageSize;

}

public void refresh(int _currentPage) {

currentPage = _currentPage;

if (currentPage > totalPages) {

last();

}

}

}

Pager類用于計(jì)算首頁、前一頁、下一頁、尾頁的在數(shù)據(jù)庫中的起始行,當(dāng)前的頁碼。

2.PagerHelp類

package com.jpcf.db.helper;

import javax.servlet.http.*;

public class PagerHelper {

public static Pager getPager(HttpServletRequest httpServletRequest,

int totalRows) {

//定義pager對(duì)象,用于傳到頁面

Pager pager = new Pager(totalRows);

//從Request對(duì)象中獲取當(dāng)前頁號(hào)

String currentPage = httpServletRequest.getParameter("currentPage");

//如果當(dāng)前頁號(hào)為空,表示為首次查詢該頁

//如果不為空,則刷新pager對(duì)象,輸入當(dāng)前頁號(hào)等信息

if (currentPage != null) {

pager.refresh(Integer.parseInt(currentPage));

}

//獲取當(dāng)前執(zhí)行的方法,首頁,前一頁,后一頁,尾頁。

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;

}

}

PageHelper這個(gè)類,我不用說應(yīng)該也知道用來干嘛了

3.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;

}

}

DAO類我就貼這些分頁需要的代碼了。

“from VehicleProperty vp”也可以用一個(gè)參數(shù)傳進(jìn)來,有興趣的自己改一下吧

4.Action

下面是在Action中用到的代碼:/

public ActionForward queryWithPage(ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest httpServletRequest,

HttpServletResponse httpServletresponse) {

Collection clInfos = null;//用于輸出到頁面的記錄集合

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);

}

//通過PagerHelper類來獲取用于輸出到頁面的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);

}

查詢語句select count(*) from VehicleProperty 也可以換成你需要的任意的條件(select count(*) from VehicleProperty where ..)

5.JSP頁面使用

下面就是在JSP中的應(yīng)用了: 

="/bussiness/clInfo/queryWithPage.do?method=queryWithPage&pageMethod=first
" paramName="PAGER" paramProperty="currentPage" paramId="currentPage">首頁

 

解釋一下這一行:"/bussiness/clInfo/queryWithPage.do?method=queryWithPage&pageMethod=first

method=queryWithPage 
是由于我的Action繼承的是DispatchAction,需要一個(gè)method參數(shù)

pageMethod=first 是用來在PageHelper類中判斷執(zhí)行哪個(gè)操作

四、Struts分頁總結(jié)

我做的這個(gè)也只是一個(gè)借鑒,還有很多沒有實(shí)現(xiàn)的,比如還可以加一下 go 直接到第n頁的功能。

其實(shí)最關(guān)鍵的是把當(dāng)前頁號(hào)和要執(zhí)行的是功能(上一頁,下一頁)的參數(shù)從頁面?zhèn)鬟M(jìn)來,在Action中就可以根據(jù)這兩個(gè)參數(shù)去取下一個(gè)頁面上要顯示的記錄集了

【編輯推薦】

  1. 在Eclipse中開發(fā)struts應(yīng)用程序
  2. 手把手教你在Eclipse中配置開發(fā)Struts
  3. Eclipse下開發(fā)struts完整解決亂碼問題
  4. Struts相關(guān)背景介紹
  5. 使用Easy Struts for Eclipse開發(fā)Struts
責(zé)任編輯:張燕妮 來源: 網(wǎng)易博客
相關(guān)推薦

2009-09-21 18:13:11

Hibernate S

2009-06-04 10:58:15

strutshibernate分頁

2009-02-11 09:37:32

Hibernate分頁技術(shù)JSP

2009-03-06 14:34:31

StrutsHibernateSpring

2009-06-08 16:44:00

2009-09-22 13:41:10

直接使用Hiberna

2009-09-21 13:42:47

Hibernate查詢

2009-07-20 16:18:54

iBatis分頁Hibernate式的

2010-12-28 10:35:33

MySQL分頁

2009-09-21 17:10:14

struts Hibe

2009-06-04 09:11:34

學(xué)習(xí)strutsstruts框架

2009-09-28 15:47:59

Hibernate O

2009-09-21 13:05:18

Hibernate u

2009-09-23 17:07:31

Hibernate C

2012-04-25 10:14:40

JavaStruts

2009-09-22 10:09:21

Hibernate S

2009-09-29 10:46:58

Hibernate領(lǐng)域

2009-09-25 10:53:40

Hibernate S

2009-06-08 16:44:00

Struts配置文件

2009-09-28 13:43:28

使用Hibernate
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品自拍在线| 亚洲区小说区| 亚洲综合自拍偷拍| 国产一区二区高清不卡| 夜夜爽妓女8888视频免费观看| 成人在线免费观看视频| 日韩三级在线观看| 日韩免费高清在线| 综合久久2019| 久久精品人人做人人爽人人| 亚洲综合在线做性| 秋霞av一区二区三区| 91精品一区二区三区综合| 欧美精品一区男女天堂| 孩娇小videos精品| 成人免费一区二区三区牛牛| 欧美激情一区二区三区四区| 91精品免费视频| 国产视频1区2区| 欧美日韩亚洲一区在线观看| 中文字幕v亚洲ⅴv天堂| 欧美做受喷浆在线观看| 欧美久久一区二区三区| 在线精品视频免费播放| 91专区在线观看| 中日韩高清电影网| 国产精品福利影院| 欧美日韩中文国产一区发布| 丰满人妻妇伦又伦精品国产| 裸体一区二区三区| 日韩av色在线| 日韩久久久久久久久| 亚洲成人最新网站| 色爱精品视频一区| 五月天综合视频| 麻豆一区二区| 欧美v日韩v国产v| 看看黄色一级片| 久久xxx视频| 色94色欧美sute亚洲线路二| 国产a级一级片| 91老司机福利在线| 亚洲国产精品嫩草影院| 黑人巨茎大战欧美白妇| 国产色在线观看| 亚洲欧美在线高清| 中文字幕在线亚洲精品| 中文字幕在线播放| 国产精品欧美经典| 亚洲欧美国产不卡| 蜜桃视频在线观看www社区| 中文字幕av一区二区三区免费看| 日本日本精品二区免费| 国产精品久久一区二区三区不卡| 久久久久久久电影| 日本高清久久一区二区三区| 国产三级在线观看| 国产午夜久久久久| 亚洲韩国在线| 黄视频网站在线看| 一区二区三区在线观看国产| wwwjizzjizzcom| 激情av在线| 午夜精品久久久久久久久久久 | 师生出轨h灌满了1v1| 精品久久免费| 精品国产污污免费网站入口 | 国产精品成人免费在线| 日韩经典中文字幕| 杨幂一区二区国产精品| 日韩精品成人在线观看| 欧美xxxx老人做受| 亚洲专区区免费| 清纯唯美日韩| 欧美成人激情视频| 日本三级2019| 久久九九精品| 国产美女扒开尿口久久久| 91av久久久| 国产成人综合在线观看| 久久久久久高清| 91吃瓜网在线观看| 一区二区高清在线| 久久美女福利视频| 成人在线中文| 日韩女优av电影| 喷水视频在线观看| 日韩在线中文| 欧美高清在线观看| 亚洲熟女综合色一区二区三区| 免费日本视频一区| 999视频在线观看| 免费人成在线观看网站| 亚洲欧美在线视频观看| 国产69精品久久久久999小说| 欧美aa视频| 日韩一区和二区| www.av欧美| 中文字幕一区二区三区欧美日韩| 国产69精品久久久久久| 一级黄色片免费| 91麻豆免费观看| 日本老太婆做爰视频| av日韩电影| 欧美一区二区在线观看| 丰满少妇高潮一区二区| 欧美视频四区| 国产精品一区二区久久久| 亚洲国产福利视频| 中文av字幕一区| 国产97在线 | 亚洲| 国产日韩在线观看视频| 一区二区三区视频免费| 日本网站免费观看| 国产在线日韩欧美| 日韩欧美视频一区二区三区四区| 白浆在线视频| 日韩一区二区在线观看视频播放| 欧美18—19性高清hd4k| 99riav1国产精品视频| 91影院在线免费观看视频| 草碰在线视频| 欧美性猛交xxxx乱大交蜜桃| 无码人妻一区二区三区精品视频| 青青草国产免费一区二区下载| 91大神福利视频在线| 国产色视频在线| 国产精品丝袜在线| 欧美激情成人网| 特黄特色欧美大片| 久久男人的天堂| 性欧美18一19性猛交| 国产精品的网站| 亚洲黄色av网址| 精品大片一区二区| 国产ts一区二区| 天天在线女人的天堂视频| 樱花影视一区二区| 日本精品一区在线| 天天做天天爱天天综合网| 国产精品视频在线观看| 成年在线观看免费人视频| 色婷婷久久久亚洲一区二区三区| 久久午夜夜伦鲁鲁片| 亚洲电影成人| 精品视频免费观看| 僵尸再翻生在线观看| 亚洲精品国产综合区久久久久久久 | 日韩视频免费播放| 欧美大胆视频| 日韩av高清不卡| 成人在线免费观看| 欧美日韩一区二区在线视频| 欧美福利在线视频| 精品一区二区在线视频| 超碰免费在线公开| 一区二区三区四区精品视频| 欧美精品videossex性护士| 亚洲第一黄色片| 亚洲va韩国va欧美va| 污污内射在线观看一区二区少妇 | 1区2区3区国产精品| 久久精品一卡二卡| 精品99视频| 精品一区二区三区国产| 色豆豆成人网| 久久深夜福利免费观看| 精品人妻午夜一区二区三区四区| 樱花影视一区二区| 搡老熟女老女人一区二区| 老司机精品久久| 一区二区日本伦理| 试看120秒一区二区三区| 91精品国产乱码久久久久久蜜臀 | 亚洲 小说区 图片区| 国产精品护士白丝一区av| 欧美一区二区三区影院| 国产亚洲精品自拍| 亚洲精美视频| 亚洲三级av| 国产suv精品一区二区| 日本电影在线观看网站| 日韩精品一区二| 欧美超碰在线观看| 伊人性伊人情综合网| 好吊视频在线观看| 国产一区视频导航| www.爱色av.com| 91精品福利| 久久久久久久久久久一区| 欧洲亚洲精品久久久久| 性欧美xxxx视频在线观看| 18免费在线视频| 亚洲国产精品999| 中文字幕在线日亚洲9| 亚洲午夜视频在线观看| 极品尤物一区二区| 99re成人精品视频| 交换做爰国语对白| 久久久久网站| 又大又硬又爽免费视频| 欧美呦呦网站| 精品日韩欧美| 亚洲成人偷拍| 国产精品影院在线观看| 国产精品一二三产区| 乱亲女秽乱长久久久| 久久久久久久久亚洲精品| 欧美成人三级在线| 亚洲永久精品视频| 色94色欧美sute亚洲13| 日韩免费不卡视频| 亚洲精品欧美专区| 美国一级黄色录像| 久久精品一区二区三区不卡牛牛| 香蕉在线观看视频| 国产一区二区三区精品欧美日韩一区二区三区 | 高清在线观看av| 亚洲国产女人aaa毛片在线| 国产乱人乱偷精品视频| 欧美怡红院视频| 亚洲天堂一区在线观看| 亚洲一区在线观看网站| 人人干在线观看| 日本一区二区久久| 国产肥白大熟妇bbbb视频| 成人av片在线观看| 97精品人人妻人人| 国产999精品久久| 69久久精品无码一区二区| 久久99精品一区二区三区| the porn av| 日韩不卡一区二区三区| 免费无码av片在线观看| 日韩亚洲国产精品| 欧美国产日韩激情| 亚洲国产高清一区二区三区| 日韩亚洲欧美一区二区| 午夜精品免费| 777久久精品一区二区三区无码| 亚洲成人精品| 影音先锋成人资源网站| 欧美激情日韩| 久久久久久久香蕉| 黄色精品一区| 国产免费一区二区视频| 亚洲毛片网站| 男人靠女人免费视频网站| 亚洲永久免费| 粗暴91大变态调教| 日韩中文字幕av电影| 熟女少妇精品一区二区| 青青草视频一区| 奇米影视四色在线| 国产最新精品免费| 欧美在线a视频| 成人综合婷婷国产精品久久蜜臀| 在线观看亚洲免费视频| 99re亚洲国产精品| 久久久久亚洲av成人无码电影| 欧美韩日一区二区三区四区| 成人信息集中地| 樱桃国产成人精品视频| 日本三级视频在线| 色综合网色综合| 一级特黄色大片| 日韩亚洲欧美在线| 日本韩国一区| 在线亚洲男人天堂| 黄色av电影在线观看| 久久久久久免费精品| 国产精品伦理| 91久久综合亚洲鲁鲁五月天| 岛国精品一区| 日韩一区免费观看| 国产一区视频在线观看免费| 播放灌醉水嫩大学生国内精品| 日韩高清电影一区| 日本wwww色| 久久久久久久久久久黄色| √天堂中文官网8在线| 亚洲午夜激情网站| 日本熟妇一区二区三区| 日韩一卡二卡三卡四卡| 婷婷婷国产在线视频| 色噜噜国产精品视频一区二区| 污影院在线观看| 国产成人精品在线观看| 国产精品视频一区视频二区| 久久亚洲免费| 欧美fxxxxxx另类| 99精品视频播放| 国产成人午夜高潮毛片| 国产男男chinese网站| 亚洲欧美日韩国产综合在线 | 一区二区高清| 九九精品久久久| www国产成人| 老湿机69福利| 欧洲精品在线观看| 特黄视频在线观看| 欧美成人网在线| 99亚洲伊人久久精品影院| 国产精品视频一区二区三区经| 波多野结衣在线观看一区二区三区| 中文字幕人妻熟女人妻洋洋| 免费观看成人鲁鲁鲁鲁鲁视频| 无码一区二区精品| 亚洲欧美国产毛片在线| 国产日韩久久久| 亚洲第一级黄色片| 97caopron在线视频| 国产精品私拍pans大尺度在线 | 日韩精品视频观看| 午夜dj在线观看高清视频完整版| 国产精品视频自在线| 国产日产精品一区二区三区四区的观看方式| 黄色小视频大全| 毛片基地黄久久久久久天堂| xxxxx在线观看| 精品久久中文字幕久久av| www.久久久久久| 精品国内产的精品视频在线观看| 人人视频精品| 欧美精品人人做人人爱视频| 亚洲免费大片| wwwxx日本| 亚洲地区一二三色| 亚洲国产剧情在线观看| 日韩色av导航| 四虎在线精品| 永久久久久久| 美女诱惑一区二区| 日韩黄色中文字幕| 欧美视频一区在线| 在线a免费看| 国产精品自在线| 日韩中文在线电影| 国模私拍视频在线观看| 欧美国产成人在线| 中文天堂在线播放| 三级精品视频久久久久| 玖玖精品在线| 一区二区三区一级片| 国产一区 二区 三区一级| 2025国产精品自拍| 日韩情涩欧美日韩视频| 亚洲丝袜一区| 国产精品我不卡| 亚洲黄色在线| 国产福利短视频| 91官网在线观看| 婷婷激情在线| 亚洲影影院av| 亚洲午夜视频| 国产男女猛烈无遮挡a片漫画| 日韩欧美aⅴ综合网站发布| 国产在线91| 国产日韩中文字幕在线| 欧美视频在线观看| 日韩片在线观看| 91黄色在线观看| 精品视频在线一区二区| 成人综合色站| 久久黄色网页| 999精品在线视频| 欧美成人bangbros| 成人教育av| 一区二区三区在线视频111| 国产乱国产乱300精品| 久久精品免费av| 亚洲欧美日韩高清| 精品久久福利| 国产在线xxxx| 久久久久久一二三区| 一区二区日韩在线观看| 色与欲影视天天看综合网| 欧美自拍视频| 色乱码一区二区三区在线| 亚洲一区二区精品久久av| 色猫av在线| 91久久久久久| 国产免费成人| 亚洲怡红院在线观看| 亚洲精品99久久久久| 激情久久一区二区| 成人免费播放器| 国产精品视频一二三区| 二区三区在线视频| 国产精品稀缺呦系列在线| 黄色亚洲在线| 波多野结衣片子| 日韩欧美一区二区在线视频| 成人欧美一区二区三区的电影| 欧美少妇一级片| 久久久久亚洲蜜桃| 黄色小视频免费在线观看| 国产美女久久精品香蕉69| 夜久久久久久| 中文字幕另类日韩欧美亚洲嫩草|