解决Struts分页显示

来源:互联网 发布:马前课指算法日加时 编辑:程序博客网 时间:2024/05/01 02:41

一 开发环境 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=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

书名作者价格nextPage PreviousPage 共有数据总数; 共分页,当前是第 页 5 struts-config.xml

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"; } 好了,全部代码我已经贴完了,难免有不妥的地方,如果您有好的意见或者建议请跟我联系,在下将感激不尽!!

原创粉丝点击