主要由: message.jsp MessageForm MessageAction Player.hbm.xml struts-config.xml MeisaiBean.java 来实现: 先看数据库结构: CREATE TABLE player (   PLAYER_ID   VARCHAR(32) PRIMARY KEY,   TEAM        VARCHAR(3),   displayName  VARCHAR(100),   LAST_NAME   VARCHAR(100),   MIDDLE_NAME VARCHAR(100),   STATUS      VARCHAR(32),   POS         VARCHAR(1),   PPG         INTEGER default 25 ); 
INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2113999','DAL','Dirk',null,'',null,'F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30361','IND','Ron','Artest','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30273','ORL','Tracy','McGrady','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30190','LAL','Kobe','Bryant','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30328','SEA','Rashard','Lewis','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30197','NJN','Kerry','Kittles','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30341','HOU','Steve','Francis','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30146','MIN','Kevin','Garnett','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2113993','BOS','Paul','Pierce','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30050','NJN','Jason','Kidd','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30215','ATL','Shareef','Abdur-Rahim','','I','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('1861922','ORL','Mike','Miller','','I','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30144','ATL','Glenn','Robinson','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2019703','GSW','Gilbert','Arenas','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2028505','UTH','Andrei','Kirilenko','','I','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30382','PHO','Shawn','Marion','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('29941','SEA','Brent','Barry','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2114000','DAL','Michael','Finley','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30187','BOS','Antoine','Walker','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30234','SAC','Bobby','Jackson','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('29968','WAS','Jerry','Stackhouse','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('29944','SAC','Doug','Christie','','I','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30095','CHI','Donyell','Marshall','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2028865','ATL','Ira','Newble','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30029','SEA','Gary','Payton','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30141','TOR','Voshon','Lenard','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30020','MIL','Toni','Kukoc','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30154','NOR','P.J.','Brown','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30125','MIA','Eddie','Jones','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30359','ATL','Jason','Terry','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30291','UTH','Matt','Harpring','','A','F'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('30228','MIL','Ray','Allen','','A','G'); INSERT INTO player (PLAYER_ID,TEAM,displayName,LAST_NAME,MIDDLE_NAME,STATUS,POS) VALUES ('2028503','SEA','Vladimir','Radmanovic','','A','F'); 对应的player.hbm.xml如下:
  <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> 
 <!-- test player--> <class name="com.ecc.hibernate.hbm.Player" table="PLAYER"> <id name="PlayerId" column="player_id" type="string" length="32"> <generator class="uuid.string"/> </id> <property name="Team" column="team" type="string" length="3"/> <property name="DisplayName" column="displayname" type="string" length="100"/> <property name="LastName" column="last_name" type="string" length="100"/> <property name="MiddleName" column="middle_name" type="string" length="100"/> <property name="Status" column="status" type="string" length="32"/> <property name="Pos" column="pos" type="string" length="1"/> <property name="Ppg" column="ppg" type="long" length="22"/> </class> </hibernate-mapping> 现在看MeisaiBean.java package com.ecc.util; 
import java.io.Serializable; 
  
public class MeisaiBean implements Serializable{ 
  public MeisaiBean() {   } 
  public String label_1 = "";   public void setLabel_1(String str) {     this.label_1 = str;   } 
  public String getLabel_1() {     return this.label_1;   } 
  public String label_2 = "";   public void setLabel_2(String str) {     this.label_2 = str;   } 
  public String getLabel_2() {     return this.label_2;   } 
  public String label_3 = "";   public void setLabel_3(String str) {     this.label_3 = str;   } 
  public String getLabel_3() {     return this.label_3;   } 
  public String label_4 = "";   public void setLabel_4(String str) {     this.label_4 = str;   } 
  public String getLabel_4() {     return this.label_4;   } 
  public String label_5 = "";   public void setLabel_5(String str) {     this.label_5 = str;   } 
  public String getLabel_5() {     return this.label_5;   } 
  public String label_6 = "";   public void setLabel_6(String str) {     this.label_6 = str;   } 
  public String getLabel_6() {     return this.label_6;   } 
  public String label_7 = "";   public void setLabel_7(String str) {     this.label_7 = str;   } 
  public String getLabel_7() {     return this.label_7;   } 
  public String label_8 = "";   public void setLabel_8(String str) {     this.label_8 = str;   } 
  public String getLabel_8() {     return this.label_8;   } 
  public String label_9 = "";   public void setLabel_9(String str) {     this.label_9 = str;   } 
  public String getLabel_9() {     return this.label_9;   } 
  public String label_10 = "";   public void setLabel_10(String str) {     this.label_10 = str;   } 
  public String getLabel_10() {     return this.label_10;   } 
  public String label_11 = "";   public void setLabel_11(String str) {     this.label_11 = str;   } 
  public String getLabel_11() {     return this.label_11;   } 
  public String label_12 = "";   public void setLabel_12(String str) {     this.label_12 = str;   } 
  public String getLabel_12() {     return this.label_12;   } 
  public String label_13 = "";   public void setLabel_13(String str) {     this.label_13 = str;   } 
  public String getLabel_13() {     return this.label_13;   } 
  public String label_14 = "";   public void setLabel_14(String str) {     this.label_14 = str;   } 
  public String getLabel_14() {     return this.label_14;   } 
  public String label_15 = "";   public void setLabel_15(String str) {     this.label_15 = str;   } 
  public String getLabel_15() {     return this.label_15;   } 
  public String label_16 = "";   public void setLabel_16(String str) {     this.label_16 = str;   } 
  public String getLabel_16() {     return this.label_16;   } 
  public String label_17 = "";   public void setLabel_17(String str) {     this.label_17 = str;   } 
  public String getLabel_17() {     return this.label_17;   } 
  public String label_18 = "";   public void setLabel_18(String str) {     this.label_18 = str;   } 
  public String getLabel_18() {     return this.label_18;   } 
  public String label_19 = "";   public void setLabel_19(String str) {     this.label_19 = str;   } 
  public String getLabel_19() {     return this.label_19;   } 
  public String label_20 = "";   public void setLabel_20(String str) {     this.label_20 = str;   } 
  public String getLabel_20() {     return this.label_20;   } 
  public String label_21 = "";   public void setLabel_21(String str) {     this.label_21 = str;   } 
  public String getLabel_21() {     return this.label_21;   } } MessageForm.java: 
//Created by MyEclipse Struts // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xsl 
package com.ecc.struts.message.formbean; import org.apache.struts.action.ActionForm; import javax.servlet.http.HttpServletRequest; 
import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import java.util.*; /**   * MyEclipse Struts  * Creation date: 01-06-2005  *   * XDoclet definition:  * @struts:form name="testRegistForm"  */ public class MessageForm extends ActionForm {     public MessageForm(){}  private String label1=""; 
 /**   * @return   */  public String getLabel1() {   return label1;  } 
 /**   * @param string   */  public void setLabel1(String string) {   label1 = string;  }  private Vector meisai = new Vector();  public void setMeisai(Vector meisai) {this.meisai = meisai; }  public Vector getMeisai(){return meisai; }    private int currentPage=0;    /**   * @return   */  public int getCurrentPage() {   return currentPage;  } 
 /**   * @param i   */  public void setCurrentPage(int i) {   currentPage = i;  }  private int totalPage=0;    /**   * @return   */  public int getTotalPage() {   return totalPage;  } 
 /**   * @param i   */  public void setTotalPage(int i) {   totalPage = i;  } 
} MessageAction.java: //Created by MyEclipse Struts // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xsl 
package com.ecc.struts.message.action; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.SessionActionMapping; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import com.ecc.struts.message.formbean.*; import com.ecc.util.*; import java.security.*; import com.ecc.util.security.password.*; import com.ecc.exception.regist.*; import com.ecc.hibernate.db.*; import net.sf.hibernate.*; import net.sf.hibernate.cfg.*; import com.ecc.hibernate.*; import com.ecc.hibernate.hbm.*; import java.util.*; public class MessageAction extends Action{ 
// --------------------------------------------------------- Instance Variables 
// --------------------------------------------------------- Methods 
/**   * Method execute  * @param mapping  * @param form  * @param request  * @param response  * @return ActionForward  */ private void setPage(ActionForm form,int currentPage){ Transaction tx=null; Session session=null; int totalCount=0; String playerid=""; String team=""; String displayname=""; int firstIndex=0; int itemsInPerPage=10; try{ MessageForm messageForm = (MessageForm) form; session = HbUnit.getSession(); tx= session.beginTransaction(); currentPage=messageForm.getCurrentPage(); if (currentPage<=0){ messageForm.setCurrentPage(1); firstIndex=0; }else { firstIndex=currentPage*itemsInPerPage-itemsInPerPage; } String sql="select player from Player as player"; Query query = session.createQuery (sql); query.setFirstResult(firstIndex); query.setMaxResults(itemsInPerPage); Iterator it=query.iterate(); Vector meisaiList=new Vector(); while(it.hasNext()){ Player player=(Player)it.next(); playerid=StrHandle.replaNull(player.getPlayerId()); team=StrHandle.replaNull(player.getTeam()); displayname=StrHandle.replaNull(player.getDisplayName()); MeisaiBean meisai=new MeisaiBean(); 
meisai.setLabel_1(playerid); meisai.setLabel_2(team); meisai.setLabel_3(displayname); meisaiList.add(meisai); } messageForm.setMeisai(meisaiList); tx.commit(); } catch(Exception ex){ try{ tx.rollback(); }catch(Exception eex){ } System.out.println(ex); ex.printStackTrace(); }finally{ try{ HbUnit.closeSession(); }catch(Exception ex){ } } } private int getRecordSize(){ Transaction tx=null; Session session=null; int totalCount=0; try{ session = HbUnit.getSession(); tx= session.beginTransaction(); totalCount=( (Integer) session.iterate("select count(*) from Player").next() ).intValue(); tx.commit(); return totalCount; } catch(Exception ex){ try{ tx.rollback(); }catch(Exception eex){ } System.out.println(ex); ex.printStackTrace(); return -1; }finally{ try{ HbUnit.closeSession(); }catch(Exception ex){ } } } public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MessageForm messageForm = (MessageForm) form; 
String target=""; int size=0; int perItemsPage=10; int modItems=0; int totalPages=0; int currentPage=0; try{ currentPage=messageForm.getCurrentPage(); size=getRecordSize(); if(size<=0){ target="noitemfound"; } else { totalPages=size/perItemsPage; modItems=size%perItemsPage; if(modItems>0)totalPages+=1; System.out.println("Record Size:"+size); System.out.println("Total page:"+totalPages); messageForm.setTotalPage(totalPages); setPage(form,currentPage); System.out.println("total page:"+totalPages); target="success"; } }catch(Exception ex){ System.out.println(ex); ex.printStackTrace(); } return (mapping.findForward(target)); } } Message.jsp如下:   <%@ page language="java"%> <%@ page contentType="text/html; charset=GB2312" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>   <html>  <head> <title>JSP for testRegistForm form</title> <STYLE type=text/css> FONT-SIZE: 9pt{ } A { COLOR: #000000; TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } .bt { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 9pt; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 50px; CURSOR: hand; HEIGHT: 16px; BACKGROUND-COLOR: #808080; BORDER-RIGHT-WIDTH: 0px } .tx1 { BORDER-RIGHT: black 1px ridge; BORDER-TOP: black 1px ridge; FONT-SIZE: 9pt; BORDER-LEFT: black 1px ridge; WIDTH: 60pt; COLOR: #000000; BORDER-BOTTOM: #000000 1px ridge; HEIGHT: 20px } </STYLE> </head> <Script Language="JavaScript"> function gotoNext(){ var currentPage=parseInt(MessageForm.currentPage.value); var totalPage=parseInt(MessageForm.totalPage.value); currentPage=currentPage+1; if(currentPage>totalPage){ currentPage=totalPage; } var url="message.do?currentPage="+currentPage; alert(url); document.location=url; } function gotoPrev(){ var currentPage=parseInt(MessageForm.currentPage.value); var totalPage=parseInt(MessageForm.totalPage.value); if(currentPage<=0){   currentPage=0; }else{ currentPage=currentPage-1; } var url="message.do?currentPage="+currentPage; alert(url); document.location=url; } function gotoTop(){ 
var url="message.do?currentPage=1"; alert(url); document.location=url; } function gotoLast(){ var totalPage=parseInt(MessageForm.totalPage.value); var url="message.do?currentPage="+totalPage; alert(url); document.location=url; } </Script> <body> <html:form name="MessageForm" action="/message.do" type="com.ecc.struts.message.formbean.MessageForm" scope="request"> <html:text property="currentPage"/></br> <html:text property="totalPage"/></br> </html:form> <table> <tr>   <td><input value="top" type="button" onclick="gotoTop();"> <td><input value="prev" type="button" onclick="gotoPrev();"> <td><input value="next" type="button" onclick="gotoNext();"> <td><input value="last" type="button" onclick="gotoLast();"> </tr> </table> <table border='1'> <logic:present name="MessageForm" scope="request">   <logic:iterate id="meisaiList" name="MessageForm" property="meisai" scope="request">     <tr>   <td>    <bean:write name="meisaiList" property="label_1" />   </td>   <td>   <bean:write name="meisaiList" property="label_2" />   </td>   <td>   <bean:write name="meisaiList" property="label_3" />   </td>     </tr>     </logic:iterate>     </logic:present> </table> </body> </html>
   
 
  |