现在的位置: 首页 > 综合 > 正文

Struts分页显示

2013年12月09日 ⁄ 综合 ⁄ 共 6695字 ⁄ 字号 评论关闭

  说道Struts自然是不能离开MVC模式,分页显示也是如此.我不知道我的算法是不是算好的,也希望看过的朋友能发表一下自己的看法,下面简单阐述一下主要的开发思路:

1)建立适当的模型组件,对应你要查询数据库中的表,这部分由熟悉的JavaBean来充当.并在其中建立数据库查询方法,该方法需要一个java.sql.Conntection类型的参数,并返回一个ArrayList,在本例中为Book.java,另外还有一个数据库连接的Bean是SqlBean.java.

2)建立分页所需要的模型组件,也是用JavaBean,通过Book提供的ArrayList来构造,这里用的是PageBean.java.

3)建立控制器组件,这部分由Struts的Action来实现,主要负责实例化Book,并利用返回的ArrayList对象,构造PageBean,以及接收由视图传递来的action参数,从而在PageBean对象中调用不同的方法,该方法返回Book[]对象,最后将Book[]和PageBean放入到request中.本Action为PageListAction.java.

4)建立视图组件,这部分JSP来实现,为了不出现JAVA代码,使用Struts提供的标签库,主要负责从Request中取出刚刚放入的对象,通过反复调用Action以及action参数,而实现分页显示,是pagetest.jsp.

5)建立并配置struts-config.xml和web.xml文件.

6)建立数据库.

我对代码进行了实现,调试通过.如果大家有更好的用Struts实现分页显示的算法可以给我留言,代码如下:

struts-config.xml文件如下,这里配置了一个接收haha的请求提交给PageListAction

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

 

   <action-mappings>

       <action path="/haha"

               type="page.PageListAction"

               scope="request">

             <forward name="success" path="/pagetest.jsp"/>

       </action>

    </action-mappings>

   <message-resources parameter="ApplicationResources" />

</struts-config>

……………………………………………………………………………….

Web.xml文件如下,这里配置了Web的信息,基本都是由Eclipse完成的

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <servlet>

      <servlet-name>action</servlet-name>

      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

      <init-param>

         <param-name>application</param-name>

         <param-value>ApplicationResources</param-value>

      </init-param>

      <init-param>

         <param-name>config</param-name>

         <param-value>/WEB-INF/struts-config.xml</param-value>

      </init-param>

      <init-param>

         <param-name>debug</param-name>

         <param-value>2</param-value>

      </init-param>

      <init-param>

         <param-name>detail</param-name>

         <param-value>2</param-value>

      </init-param>

      <load-on-startup>2</load-on-startup>

   </servlet>

   <servlet-mapping>

      <servlet-name>action</servlet-name>

      <url-pattern>*.do</url-pattern>

   </servlet-mapping>

   <welcome-file-list>

     <welcome-file>index.jsp</welcome-file>

     </welcome-file-list>

</web-app>

…………………………………………………………………………

这个是控制器Action类

 

package page;

import org.apache.struts.action.*;

import javax.servlet.http.*;

import bean.Book;

import java.util.*;

import javax.sql.DataSource;

public class PageListAction extends Action {

    ArrayList arrayList=new ArrayList();

    PageBean pd;

    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 {

                arrayList=Book.getAllBook();

            }

            catch(Exception e) {

                e.printStackTrace();

            }

            pd=new PageBean(arrayList);

            Book[] books=pd.getBooks();

            request.setAttribute("result",books);

            request.setAttribute("page",pd);

        }

        else {

            if(action=="nextPage"||action.equals("nextPage")) {

                Book[] books=pd.getNextPage();

                request.setAttribute("result",books);

                request.setAttribute("page",pd);

            }

            if(action=="previousPage"||action.equals("previousPage")) {

                Book[] books=pd.getPreviousPage();

                request.setAttribute("resule",books);

                request.setAttribute("page",pd);

            }

        }

        return mapping.findForward("success");

    }

}

………………………………………………………………………………….

这个是pagebean类,主要负责分页算法和逻辑处理

 

package page;

 

import bean.Book;

import java.util.*;

 

public class PageBean {

    int currentPage=1;//当前页数

    public int totalPages=0;//总页数

    int pageRecorders=2;//每页显示数

    int totalRows=0;//总数据数

    int pageStartRow=0;//每页的起始数

    int pageEndRow;//每页的终止数

    boolean hasNextPage=false;//是否有下一页

    boolean hasPreviousPage=false;//是否有前一页

    ArrayList arrayList;

    Iterator it;

   

    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;

        }

    }

   

    public void setCurrentPage(int currentPage) {

        this.currentPage=currentPage;

    }

    public void setPageRecorders(int pageRecorders) {

        this.pageRecorders=pageRecorders;

    }

    public void setHasNextPage(boolean hasNextPage) {

        this.hasNextPage=hasNextPage;

    }

    public void setHasPreviosPage(boolean hasPreviosPage) {

        this.hasPreviousPage=hasPreviousPage;

    }

 

    public String getCurrentPage() {

        return this.toString(currentPage);

    }

    public String getTotalPages() {

        return this.toString(totalPages);

    }

    public String getTotalRow() {

        return this.toString(totalRows);

    }

    public int getPageRecorders() {

        return pageRecorders;

    }

    public int getPageEndRow() {

        return pageEndRow;

    }

    public int getPageStartRow() {

        return pageStartRow;

    }

    public boolean isHasNextPage() {

        return hasNextPage;

    }

    public boolean isHasPreviousPage() {

        return hasPreviousPage;

    }

   

    public Book[] getNextPage() {

        currentPage=currentPage+1;

        if((currentPage-1)>0) {

            hasPreviousPage=true;

        }

        else {

            hasPreviousPage=false;

        }

        if(currentPage>=totalPages) {

            hasNextPage=false;

        }

        else {

            hasNextPage=true;

        }

        Book[] books=getBooks();

        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();

        return books;

    }

   

    public Book[] getBooks() {

        if(currentPage*pageRecorders<totalRows) {

            pageEndRow=currentPage*pageRecorders;

            pageStartRow=pageEndRow-pageRecorders;

        }

   

抱歉!评论已关闭.