http://www.yourblog.org/Data/20043/27958.html

解决方案 »

  1.   

    一气之下我自己写了一个分页,还很通用呢,IT'S FREE,喜欢以后大家有技术或做过的都互相公开代码,中国缺的不是技术而是技术流通,这样不好,要超过老美,必须做到技术在最大领域内流通!!STRUTS+HIBERNATE+ORACLE 分页实现如下:
    struts-config.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
       <data-sources />
             <form-bean name="MessageForm" type="com.ecc.struts.message.formbean.MessageForm" />
       </form-beans>   <global-exceptions />
       <global-forwards />
       <action-mappings >
          <action
             attribute="MessageForm"
             input="/jsp/message.jsp"
             name="MessageForm"
             path="/message"
             scope="request"
             type="com.ecc.struts.message.action.MessageAction" >
             <forward name="success" path="/jsp/message.jsp"/> 
             <forward name="noitemfound" path="jsp/noitemfound_in_search.jsp"/>   
      </action>     
                 
       </action-mappings>   <controller bufferSize="4096" debug="0" />
       <message-resources parameter="com.ecc.struts.ApplicationResources" />
    </struts-config>
    MessageForm.java://Created by MyEclipse Struts
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xslpackage 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;
    }}
      

  2.   

    MessageAction.java:
    //Created by MyEclipse Struts
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xslpackage 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>