Spring+Hibernate+Struts技術的一個分頁程序,共享給大家

我用的是Spring+Hibernate+Struts框架:

這是我的DAO的核心代碼

import org.springframework.orm.hibernate.support.HibernateDaoSupport;

// 用Spring支持的Hibernate方法,使Hibernate對數據庫的操作繼續瘦身

public List getOfficeBySearchCriteria(final String hsql,final int pageNo,final int page_size) throws DataAccessException // hsql 是如:"select office1 from Office as office1 order by office1.officename";pageNo 是第幾頁;page_size是每頁記錄數

{

String sql;

int total_count=0;

List offices=new ArrayList();

//offices= getHibernateTemplate().find("from Office office1 where office1.officename like ?", "%"+officeName+"%");

offices= getHibernateTemplate().find(hsql); //爲了得到總記錄數

total_count=offices.size();

crossPageInfo= crossPageBean.getCrossPageInfo(total_count,pageNo,page_size);

sql=hsql+ " limit " + (pageNo-1)*page_size + "," +page_size;

offices= getHibernateTemplate().find(sql); //爲了得到頁記錄信息 System.out.println("The list offices size: "+offices.size());

return offices;

}

//其中crossPageBean.getCrossPageInfo只是得到頁面的如:總頁數、供多少頁的信息等一般的翻頁信息;

我在Action中是這樣調用的:

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception

{

CrossPageInfo crossPageInfo=new CrossPageInfo();

String hsql="select office1 from Office office1 order by office1.officename";

String pageNo=request.getParameter("pageNo");

int pageNoi=1;

if(pageNo==null)

pageNo="1";

pageNoi=Integer.parseInt(pageNo);

int pageSize=5;

//List offices=getOfficeService().getAllOffice();

List offices=getOfficeService().getOfficeBySearchCriteria(hsql,pageNoi,pageSize);

crossPageInfo=getOfficeService().getCrossPageInfo();

System.out.println("The CorssPgaeInfo :"+crossPageInfo.getPageNo());

System.out.println(crossPageInfo.getPageSize());

request.setAttribute("offices",offices);

request.setAttribute("pageInfo",crossPageInfo);

return mapping.findForward("success");

//throw new UnsupportedOperationException("Generated method 'execute(...)' not implemented.");

}

//其中getOfficeService()只是提供接口服務的方法。

我的表現頁面是這樣的:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<%@ page import="com.uplus.util.CrossPageInfo"%>

<html>

<head>

<title>

mySearchCList

</title>

</head>

<body bgcolor="#ffffff">

<form name="form1" action="officesearch.do" method="post">

<table >

<tr>

<td>OfficeName:<input name="officeName" type="text"></td><td><input type="submit" name="sb" value="Search"></td>

</tr>

</table>

</form>

<br><a href="/jsp/office/officeadd.jsp">Add</a>

<table bgcolor="#DBE9F1" align="center" class="InputFrameMain" style="MARGIN: 0px" cellSpacing="1" cellPadding="0" BGALIGN="CENTER" BGVALIGn="middle" width="100%" VALIGN="middle" >

<tr><td align="center">OfficeName</td><td align="center">OfficePhone</td></tr>

<logic:iterate id="office" name="offices" >

<tr bgcolor="#ffffff">

<td align="center"><a href="officesee.do?id=<bean:write name='office' property='id'/>" target="_blank"><bean:write name="office" property="officename"/></a></td>

<td align="center"><bean:write name="office" property="officephone"/></td>

<td align="center"><a href="officeedit.do?id=<bean:write name='office' property='id'/>" >Update </a>

<td align="center"><a href="officedel.do?id=<bean:write name='office' property='id'/>" onclick="return confirm('Would You Detele It? ')" >Delete </a>

</tr>

</logic:iterate>

</table>

<%CrossPageInfo cpInfo=(CrossPageInfo)request.getAttribute("pageInfo");%>

<table width="100%" align="center" class="InputFrameMain" style="MARGIN: 0px" cellPadding="0" cellSpacing="0">

<tr ><form action="officelist.do" method="post" onsubmit='return checkform2(this)'>

<td width=70%>Total <font color="blue"><%=cpInfo.getTotalRow()%></font>&items found,Total&<font color="blue"><%=cpInfo.getTotalPage()%></font> Pages,Current No <font color="blue"><%=cpInfo.getPageNo()%> </font>Page.

Go to <input name="pageNo" type="text" size="5" class="input">Page

<input name="sb2" type="submit" class="button" value="Go">

</td></form>

<td width=30% align='left'>

<%if(cpInfo.getPageNo()>1){%>

&<a href="officelist.do?pageNo=1">

<%}%>First</a>

<%if(cpInfo.getPageNo()>1){ %>

&<a href="officelist.do?pageNo=<%=cpInfo.getPageNo()-1%>">

<%}%>Previous</a>

<%if(cpInfo.getPageNo()<cpInfo.getTotalPage()){ %>

&<a href="officelist.do?pageNo=<%=cpInfo.getPageNo()+1%>">

<%}%>Next</a>

<%if(cpInfo.getTotalPage()>cpInfo.getPageNo()){%>

&<a href="officelist.do?pageNo=<%=cpInfo.getTotalPage()%>">

<%}%>Last</a></td>

</tr>

</table>

</body>

</html>

大家可以看一下我的處理過程,其中在DAO裏爲了得到總計錄數執行了一次次數據表查詢HSQL;得到數據又執行了一次HSQL,我覺得這樣好像有些不太好,大家覺得怎樣?大家提出寶貴的意見吧!

Spring+Hibernate+Struts技術的一個分頁程序,共享給大家
我用的是Spring+Hibernate+Struts框架: 這是我的DAO的核心代碼 import org.springframework.orm.hibernate.support.HibernateDaoSupport; // 用Spring支持的Hibernate方法,使Hibernate對數據庫的操作繼續瘦身 publ...查看完整版>>Spring+Hibernate+Struts技術的一個分頁程序,共享給大家
 
一個程序員大家都關心的問題.
如果你熟悉unix,sql,英語較好.請與我聯系.可以去IBM工作哦....查看完整版>>一個程序員大家都關心的問題.
 
通用分頁存儲過程,源碼共享,大家共同完善
好久沒有上來寫點東西了,今天正好有空,共享一些個人心得,就是關于分頁的存儲過程,這個問題應該是老生重談了,網上的通用存儲過程的類型已經夠多了,但是,好象看到的基本上不能夠滿足一些複雜的SQL語句的分頁(也...查看完整版>>通用分頁存儲過程,源碼共享,大家共同完善
 
做了一個JSP的程序,但不會分頁顯示,請HELP!!
一次性從數據庫裏讀的數據太多,不好顯示下,請教一下如何完美的做一個分頁程序代碼??給個sample最好 多謝! 我是RH9+TOMCAT4.1.24+J2sdk1.4.1_02+SYBASE11.9.2 ii 回複于:2003-05-25 13:44:28 http://w...查看完整版>>做了一個JSP的程序,但不會分頁顯示,請HELP!!
 
一個非常簡單的分頁技術MYSQL+JSP 利用了mysql的LIMIT參數
一個非常簡單的分頁技術MYSQL+JSP 利用了mysql的LIMIT參數 優點:1自己想出來的 2利用了MYSQL 數據庫的本身 LIMIT 缺點:現在僅僅實現了 下一個頁面功能 <% int cateID=0; if(request.getParameter("cateID"...查看完整版>>一個非常簡單的分頁技術MYSQL+JSP 利用了mysql的LIMIT參數
 
經驗共享:DIY一個最小的局域網-組網技術
  兩台計算機,一個寬帶ADSL端口,如何組建局域網?筆者在公寓連接了一個最簡單的局域網,在此願與大家共享經驗。   第一步 硬件連接  這兩台計算機,一台裝有Windows 2000,一台是Windows 98。裝有Windows 20...查看完整版>>經驗共享:DIY一個最小的局域網-組網技術
 
DB2中通用的存儲過程分頁程序
CREATE PROCEDURE SALES.DB2PAGINATION(IN ITBNAME VARCHAR(2000),-- 表名     IN ISHOWFIELD VARCHAR(1000),-- 顯示字段     IN IJOIN VARCHAR(1000),-- 聯接條件(如:內聯、外聯)     IN IWHERE ...查看完整版>>DB2中通用的存儲過程分頁程序
 
一個關于JAVA繪制仿真立體餅圖的程序源碼,供大家參考
  下面程序是一個APPLET,有愛好的朋友可以將其改爲BEAN,/程序名稱:餅形圖//程序類型:Java APPLET//文件類型:模板文件,由Html驅動,數據爲模擬數據//原文件名:CakeChart.java//程序版本:1.5//程序設計人:楊勇//更新日...查看完整版>>一個關于JAVA繪制仿真立體餅圖的程序源碼,供大家參考
 
Flash中調用XML程序實現分頁效果
  Flash調用外部的XML程序來顯示新聞,當新聞達到一定數目時就存在分頁的問題,今天仔細想了一下,大概可以有兩種實現的方法,第一種比較簡單,首先獲取把XML文件的新聞數目,然後除以每頁要顯示的條目數,就可以知...查看完整版>>Flash中調用XML程序實現分頁效果
 
 
回到王朝網路首頁