<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    解決Struts分頁顯示

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

    一 開發環境
    Elicpse+Struts Studio+SqlServer2000+Tomcat。

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

    1 建立適當的模型組件,對應你要查詢數據庫中的表。這部分由我們熟悉的javaBean來充當。并在其中建立數據庫查詢方法,該方法需要一個java.sql.Conntection類型的參數,并返回一個ArrayList。在本例中為 Book.java

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

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

    4建立視圖組件,這部分由jsp來充當,為了不出現java 代碼,我們使用Struts提供的標簽庫,主要負責從request中取出剛剛放入的對象,通過反復調用PageListAction以及action參數,而實現分頁顯示。本例中為pagetest.jsp.
    5 建立并配置struts-config.xml。
    6 建立數據庫。

    三 實例代碼
    1 Book.java

    package bean; 
    import java.sql.*
    import java.util.ArrayList; 
    /** 
     * @作者 李敏強 
     * Struts分頁顯示數據Bean,對應數據庫中Book表 
     
    */ 
    public class Book { 
     
    private String bookname; //書名 
     private String author;   //作者 
     private String price;    //價格 
      
    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 數據查詢已完成!"); 
          
    while(resultSet.next()) 
          {   
            String name 
    = resultSet.getString("name"); 
            String author 
    = resultSet.getString("author"); 
            String price 
    = resultSet.getString("price"); 
            System.out.println(
    "開始數據封裝: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(
    "數據庫異常"+e.toString()); 
       } 

          
    return arrayList; 
     } 

    2 PageBean.java

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

     
    int currentPage=1;  //當前頁 
    public int totalPages=0;  //總頁數 
     int pageRecorders=5;//每頁5條數據 
     int totalRows=0;  //總數據數 
     int pageStartRow=0;//每頁的起始數 
     int pageEndRow=0;  //每頁顯示數據的終止數 
     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()正在執行;"); 
     System.out.println(
    "參數currentPage="+currentPage); 

     
    if((currentPage-1)>0
     { 
      hasPreviousPage
    =true;  
     } 
        
    else 
        { 
         hasPreviousPage
    =false;  
        } 
      
     
    if(currentPage>=totalPages)  
     { 
      hasNextPage
    =false;  
     } 
     
    else 
     { 
      hasNextPage
    =true
     } 
     System.out.println(
    "參數hasNextPage="+hasNextPage); 
     System.out.println(
    "準備執行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()開始執行;"); 
      
      
     
    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(
    "要顯示的頁面數據已經封裝,具體信息如下:"); 
     
    this.description(); 
     
    return books; 


    public String toString(int temp) 

    String str
    =Integer.toString(temp); 
    return str; 


    public void description() 


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

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

       
    "當前頁數為:"+this.getCurrentPage()+ 
        
       
    " 是否有前一頁: "+this.isHasPreviousPage() + 

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

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

       
    " 終止行數:"+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 李敏強 
     * 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")){ //第一次讀取數據 
    try
    DataSource datasource
    =this.getDataSource(request,Constants.DATASOURCE_KEY);     
    arrayList
    =Book.getAllBook(datasource.getConnection()); 
    System.out.println(
    "第一步,數據已經成功傳遞到Action,action="+action); 
       }
    catch(Exception e){ 
              e.printStackTrace(); 
      System.out.println(
    "數據庫連接出現異常"); 
          }  
        
         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(
    "參數action="+action); 
      System.out.println(
    "函數pb.getNextPage()準備執行"); 
      Book[]books
    =pb.getNextPage(); 
      request.setAttribute(
    "page",pb); 
     request.setAttribute(
    "result",books);    
        } 
    if(action=="previousPage" || action.equals("previousPage")) 
      { 
      System.out.println(
    "參數action="+action); 
      System.out.println(
    "函數pb.getPreviouspage()準備執行"); 
      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>價格</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> 
    共有數據總數
    <bean:write name="page" property="totalRows"/>
    共分
    <bean:write name="page" property="totalPages"/>頁,當前是第 
    <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.apache.org/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數據庫,以及表book(name,author,parce);其中數據的配置可以根據你的不同情況在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"

    posted on 2006-11-02 14:26 蘆葦 閱讀(386) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 2022久久国产精品免费热麻豆| 亚洲国产一二三精品无码| 99久热只有精品视频免费看 | 国产成人1024精品免费| 亚洲日本在线电影| 亚洲精品影院久久久久久| 国产精品亚洲综合一区| 狠狠久久永久免费观看| 91在线品视觉盛宴免费| 三年片在线观看免费大全电影 | 最新欧洲大片免费在线| 99久久国产免费-99久久国产免费| 四虎影视久久久免费观看| 亚洲变态另类一区二区三区| 亚洲国产av一区二区三区丶| 亚洲精品资源在线| 91亚洲导航深夜福利| 亚洲av无码乱码国产精品fc2| 国产成人精品久久亚洲| 亚洲成人影院在线观看| 免费人成视频x8x8入口| 国产成人综合久久精品免费| 性感美女视频免费网站午夜| 成人AV免费网址在线观看| 黄网站色在线视频免费观看| 最近免费中文字幕高清大全| 久久aa毛片免费播放嗯啊| 免费在线看污视频| 国产麻豆成人传媒免费观看| a毛片在线看片免费| 在线毛片片免费观看| 华人在线精品免费观看| 九九精品成人免费国产片| 国产免费一区二区三区不卡| 嫩草在线视频www免费观看| 无码国产精品一区二区免费式芒果| 免费一区二区三区| 免费观看美女用震蛋喷水的视频 | 无码不卡亚洲成?人片| 国产99视频精品免费视频7| 亚洲av无码不卡私人影院|