小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Matrix

 longssl 2006-01-06

解決Struts分頁顯示
作者:李敏強(qiáng)  eMail: mill_lmq@tom.com

學(xué)習(xí)Struts已經(jīng)有2個(gè)多月了,前幾天群里的朋友問我Struts分頁顯示的問題,覺得好像與在jsp中的差不多,但還是遇到了這樣那樣的問題,好不容易花了幾天時(shí)間把問題都搞清楚,覺得還是寫點(diǎn)東西跟大家分享一下的好!
至于Struts的語法這里就不多介紹了,不懂的朋友可以先看網(wǎng)上的其他文章。

一 開發(fā)環(huán)境
Elicpse+Struts Studio+SqlServer2000+Tomcat。

二 開發(fā)思路
既然講的是Struts,那自然離不了MVC,分頁顯示也是如此。

1 建立適當(dāng)?shù)哪P徒M件,對(duì)應(yīng)你要查詢數(shù)據(jù)庫中的表。這部分由我們熟悉的javaBean來充當(dāng)。并在其中建立數(shù)據(jù)庫查詢方法,該方法需要一個(gè)java.sql.Conntection類型的參數(shù),并返回一個(gè)ArrayList。在本例中為 Book.java

2 建立分頁所需要的模型組件,也是由javaBean來充當(dāng),通過由Book中提供的ArrayList來構(gòu)造。本例中為 PageBean.java.。

3建立控制器組件,這部分由Struts 中的Action來實(shí)現(xiàn)。主要負(fù)責(zé)將實(shí)例化Book,并利用返回的ArrayList對(duì)象,構(gòu)造PageBean。以及接收由視圖傳遞而來的action參數(shù)。從而在PageBean對(duì)象中調(diào)用不同的方法,該方法返回Book[] 對(duì)象。最后將 Book[]和PageBean放入request中。本例中為PageListAction.java。

4建立視圖組件,這部分由jsp來充當(dāng),為了不出現(xiàn)java 代碼,我們使用Struts提供的標(biāo)簽庫,主要負(fù)責(zé)從request中取出剛剛放入的對(duì)象,通過反復(fù)調(diào)用PageListAction以及action參數(shù),而實(shí)現(xiàn)分頁顯示。本例中為pagetest.jsp.
5 建立并配置struts-config.xml。
6 建立數(shù)據(jù)庫。

三 實(shí)例代碼
1 Book.java

package bean;
import java.sql.*;
import java.util.ArrayList;
/**
* @作者 李敏強(qiáng)
* Struts分頁顯示數(shù)據(jù)Bean,對(duì)應(yīng)數(shù)據(jù)庫中Book表
*/
public class Book {
        private String bookname; //書名
        private String author;   //作者
        private String price;    //價(jià)格
        
public Book(String name,String author,String price){
        this.bookname=name;
        this.author=author;
        this.price=price;
}

        public String getAuthor() {
                return author;
        }

        public void setAuthor(String author) {
                this.author = author;
        }

        public String getBookname() {
                return bookname;
        }

        public void setBookname(String bookname) {
                this.bookname = bookname;
        }
        
        public String getPrice(){
            return this.price;        
        }
        
        public void setPrice(String price){
            this.price=price;        
        }
        
        public static ArrayList getAllBook(Connection connection){
                 String sql="select * from book";
                 ArrayList arrayList = new ArrayList();
                 try{
                 Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                 ResultSet resultSet = statement.executeQuery(sql);                
         System.out.println("BookBean 數(shù)據(jù)查詢已完成!");
                    while(resultSet.next())
                    {                
                      String name = resultSet.getString("name");
                      String author = resultSet.getString("author");
                      String price = resultSet.getString("price");
                      System.out.println("開始數(shù)據(jù)封裝:name="+name+"author="+author+"price="+price);
                      Book book = new Book(name,author,price);                    
                      arrayList.add(book);
                    }
                         connection.close();
                         resultSet.close();
                 }catch(SQLException e)
                 {
                         System.out.println("數(shù)據(jù)庫異常"+e.toString());
                 }

                    return arrayList;
        }
}

2 PageBean.java
package page;
import bean.Book;
import java.util.*;
/**
* @作者 李敏強(qiáng)
* Struts分頁顯示邏輯Bean
*/
public class PageBean {

        int currentPage=1;  //當(dāng)前頁
public        int totalPages=0;  //總頁數(shù)
        int pageRecorders=5;//每頁5條數(shù)據(jù)
        int totalRows=0;  //總數(shù)據(jù)數(shù)
        int pageStartRow=0;//每頁的起始數(shù)
        int pageEndRow=0;  //每頁顯示數(shù)據(jù)的終止數(shù)
        boolean hasNextPage=false; //是否有下一頁
        boolean hasPreviousPage=false; //是否有前一頁
        ArrayList arrayList;
        Iterator it;
public PageBean(){}
        
public PageBean(ArrayList arrayList){
        this.arrayList=arrayList;        
        totalRows=arrayList.size();                
    it=arrayList.iterator();         
        hasPreviousPage=false;
        currentPage=1;
        if((totalRows%pageRecorders)==0)
        {
        totalPages=totalRows/pageRecorders;         
        }
        else
        {
                totalPages=totalRows/pageRecorders+1;        
        }        
        
        if(currentPage>=totalPages)  
        {
                hasNextPage=false;        
        }
        else                        
        {
                hasNextPage=true;
        }

    
    if(totalRows<pageRecorders)
    {
    this.pageStartRow=0;          
    this.pageEndRow=totalRows;  
    }
    else                      
    {
    this.pageStartRow=0;        
    this.pageEndRow=pageRecorders;  
    }

}

        /**
         * @return Returns the currentPage.
         */
        public String getCurrentPage() {
                return this.toString(currentPage);
        }
        /**
         * @param currentPage The currentPage to set.
         */
        public void setCurrentPage(int currentPage) {
                this.currentPage = currentPage;
        }
        /**
         * @return Returns the pageRecorders.
         */
        public int getPageRecorders() {
                return pageRecorders;
        }
        /**
         * @param pageRecorders The pageRecorders to set.
         */
        public void setPageRecorders(int pageRecorders) {
                this.pageRecorders = pageRecorders;
        }
        /**
         * @return Returns the pageEndRow.
         */
        public int getPageEndRow() {
                return pageEndRow;
        }
        /**
         * @return Returns the pageStartRow.
         */
        public int getPageStartRow() {
                return pageStartRow;
        }
        /**
         * @return Returns the totalPages.
         */
        public String getTotalPages() {
        
                return this.toString(totalPages);
        }
        /**
         * @return Returns the totalRows.
         */
        public String getTotalRows() {
                return this.toString(totalRows);
        }
        /**
         * @return Returns the hasNextPage.
         */
        public boolean isHasNextPage() {
                return hasNextPage;
        }
        /**
         * @param hasNextPage The hasNextPage to set.
         */
        public void setHasNextPage(boolean hasNextPage) {
                this.hasNextPage = hasNextPage;
        }
        /**
         * @return Returns the hasPreviousPage.
         */
        public boolean isHasPreviousPage() {
                return hasPreviousPage;
        }
        /**
         * @param hasPreviousPage The hasPreviousPage to set.
         */
        public void setHasPreviousPage(boolean hasPreviousPage) {
                this.hasPreviousPage = hasPreviousPage;
        }
public Book[] getNextPage(){
        
        currentPage=currentPage+1;
        System.out.println("PageBean.getNextPage()正在執(zhí)行;");
        System.out.println("參數(shù)currentPage="+currentPage);

        if((currentPage-1)>0)
        {
                hasPreviousPage=true;        
        }
    else
    {
            hasPreviousPage=false;        
    }
        
        if(currentPage>=totalPages)
        {
                hasNextPage=false;        
        }
        else
        {
                hasNextPage=true;
        }
        System.out.println("參數(shù)hasNextPage="+hasNextPage);
        System.out.println("準(zhǔn)備執(zhí)行PageBean.getBooks()");
        Book[] books=getBooks();
        this.description();
        
        return books;
}

public Book[] getPreviouspage(){
        
        currentPage=currentPage-1;

    if(currentPage==0){currentPage=1;}
        
        if(currentPage>=totalPages)  
        {
                hasNextPage=false;        
        }
        else                        
        {
                hasNextPage=true;
        }
        if((currentPage-1)>0)
        {
                hasPreviousPage=true;        
        }
    else
    {
            hasPreviousPage=false;        
    }
        Book[] books=getBooks();
        this.description();
        return books;
}

public Book[] getBooks(){
        System.out.println("pageBean.getBooks()開始執(zhí)行;");
        
        
        if(currentPage*pageRecorders<totalRows){//判斷是否為最后一頁
                pageEndRow=currentPage*pageRecorders;
            pageStartRow=pageEndRow-pageRecorders;
        }
        else{
                pageEndRow=totalRows;
                pageStartRow=pageRecorders*(totalPages-1);
        }
        Book[] books=new Book[pageEndRow-pageStartRow+1];
        
        System.out.println("pageStartRow="+pageStartRow);
        System.out.println("pageEndRow="+pageEndRow);
         int j=0;        
        for(int i=pageStartRow;i<pageEndRow;i++)
        {
        
         Book book=(Book)arrayList.get(i);        
         books[j++]=book;
        
        }
        System.out.println("要顯示的頁面數(shù)據(jù)已經(jīng)封裝,具體信息如下:");
        this.description();
        return books;
}

public String toString(int temp)
{
String str=Integer.toString(temp);
return str;
}

public void description()
{

   String description="共有數(shù)據(jù)數(shù):"+this.getTotalRows()+

   "共有頁數(shù): "+this.getTotalPages() +

   "當(dāng)前頁數(shù)為:"+this.getCurrentPage()+
  
   " 是否有前一頁: "+this.isHasPreviousPage() +

   " 是否有下一頁:"+this.isHasNextPage()+

   " 開始行數(shù):"+this.getPageStartRow()+

   " 終止行數(shù):"+this.getPageEndRow();

   System.out.println(description);

}
}

3  PageListAction.java
package page;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import comm.Constants;

import bean.Book;
import java.util.*;
import javax.sql.DataSource;
/**
* @author 李敏強(qiáng)
* Struts分頁顯示Action
*/
public class PageListAction extends Action {

        public PageListAction(){}
        ArrayList arrayList=new ArrayList();
    PageBean pb;
        
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {                        
String action;        
action=request.getParameter("action");                 
if(action==null || action.equals("null")){ //第一次讀取數(shù)據(jù)
try{
DataSource datasource=this.getDataSource(request,Constants.DATASOURCE_KEY);                         
arrayList=Book.getAllBook(datasource.getConnection());
System.out.println("第一步,數(shù)據(jù)已經(jīng)成功傳遞到Action,action="+action);
                 }catch(Exception e){
                        e.printStackTrace();
                System.out.println("數(shù)據(jù)庫連接出現(xiàn)異常");
                           }
                 
                   pb=new PageBean(arrayList);
          Book[] books=pb.getBooks();
          pb.description();
          request.setAttribute("result",books);
          request.setAttribute("page",pb);
                  
                 }
                 else
                 {
         if(action=="nextPage" || action.equals("nextPage"))
         {
         System.out.println("參數(shù)action="+action);
         System.out.println("函數(shù)pb.getNextPage()準(zhǔn)備執(zhí)行");
         Book[]books=pb.getNextPage();
         request.setAttribute("page",pb);
        request.setAttribute("result",books);                 
                         }
if(action=="previousPage" || action.equals("previousPage"))
         {
         System.out.println("參數(shù)action="+action);
         System.out.println("函數(shù)pb.getPreviouspage()準(zhǔn)備執(zhí)行");
         Book[] books=pb.getPreviouspage();         
         request.setAttribute("page",pb);
               request.setAttribute("result",books);
                         
                         }
                 }
          return (mapping.findForward("success"));
         }        
}

4 pagetest.jsp
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=gb2312" language="java"%>

<html:html locale="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>

<table border="1">
<tr><th>書名</th><th>作者</th><th>價(jià)格</th></tr>
<logic:present name="result">
<logic:iterate id="book" name="result"  type="bean.Book" >
<logic:present name="book">
<tr>
<td><bean:write name="book" property="bookname" /></td>
<td> <bean:write name="book" property="author" /></td>
<td><bean:write name="book" property="price" /></td>
</tr>
</logic:present>
</logic:iterate>
</logic:present>
</table>
<logic:equal name="page" property="hasNextPage" value="true">
<html:link page="/page.do?action=nextPage">nextPage</html:link>
</logic:equal>
<logic:equal name="page" property="hasPreviousPage" value="true">
<html:link page="/page.do?action=previousPage">PreviousPage</html:link>
</logic:equal>
共有數(shù)據(jù)總數(shù)<bean:write name="page" property="totalRows"/>;
共分<bean:write name="page" property="totalPages"/>頁,當(dāng)前是第
<bean:write name="page" property="currentPage"/>頁
</body>
</html:html>

5 struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta./struts/dtds/struts-config_1_1.dtd">

<struts-config>
<data-sources>
  <data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
   <set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
   <set-property property="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=eBookStore;SelectMethod=cursor"/>
   <set-property property="username" value="limq"/>
   <set-property property="password" value="1"/>
   <set-property property="maxActive" value="10"/>
   <set-property property="maxWait" value="5000"/>
   <set-property property="defaultAutoCommit" value="true"/>
   <set-property property="defaultReadOnly" value="false"/>
  </data-source>
</data-sources>
  <form-beans>
  </form-beans>
  <global-forwards>
  </global-forwards>
  <action-mappings>
  <action path="/page" type="page.PageListAction" scope="request">
  <forward name="success" path="/pagetest.jsp"/>
  </action>
  </action-mappings>
  <controller>
  </controller>
</struts-config>

6 建立eBookStore數(shù)據(jù)庫,以及表book(name,author,parce);其中數(shù)據(jù)的配置可以根據(jù)你的不同情況在struts-config.xml中而定。

7 Constants.java

package comm;

/**
* this interface provides the constant string for applicator constant
*/
public class Constants {
         /**
           * name of the User Object in HttpSession
           */
          public static String USER_KEY="user";
          /**
           * dataSource name
           */
          public static String DATASOURCE_KEY="dataSource";
}


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多