锁定老帖子 主题:Struts2 分页
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-25
一、 准备工作 开发环境:MyEclipse5.0+Eclipse3.2+JDK5.0+
使用的数据库为mysql 5.0,使用的JDBC驱动JAR包为:mysql-connection-java-5.0.4-bin 创建数据表的sql语句为: create database game
CREATE TABLE `books` (
`book_id` int(11) NOT NULL default '0', `book_name` varchar(200) character set gb2312 default NULL, `book_author` varchar(100) character set gb2312 default NULL, `book_publish` varchar(100) character set gb2312 default NULL, `book_date` date default NULL, `book_isbn` varchar(20) default NULL, `book_page` int(11) default NULL, `book_price` decimal(10,2) default NULL, `book_content` varchar(100) character set gb2312 default NULL, PRIMARY KEY (`book_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED; 二、 建立公共类 1、AbstractAction类
Struts2和Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。 虽然,在理论上Struts2的Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并且重载(Override) package com.sterning.commons;
import com.opensymphony.xwork2.ActionSupport; public class AbstractAction extends ActionSupport { } com.sterning.commons.AbstractAction.java 参考JavaDoc,可知ActionSupport类实现了接口: com.opensymphony.xwork2.Action com.opensymphony.xwork2.LoaleProvider com.opensymphony.xwork2.TextProvider com.opensymphony.xwork2.Validateable com.opensymphony.xwork2.ValidationAware com.uwyn.rife.continuations.ContinuableObject 2、Pager分页类 为了增加程序的分页功能,特意建立共用的分页类。 package com.sterning.commons;
import java.math.*; public class Pager { private int totalRows; //总行数 private int pageSize = 5; //每页显示的行数 private int currentPage; //当前页号 private int totalPages; //总页数 private int startRow; //当前页在数据库中的起始行 public Pager() { } public Pager(int _totalRows) { totalRows = _totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } currentPage = 1; startRow = 0; } public int getStartRow() { return startRow; } public int getTotalPages() { return totalPages; } public int getCurrentPage() { return currentPage; } public int getPageSize() { return pageSize; } public void setTotalRows(int totalRows) { this.totalRows = totalRows; } public void setStartRow(int startRow) { this.startRow = startRow; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRows() { return totalRows; } public void first() { currentPage = 1; startRow = 0; } public void previous() { if (currentPage == 1) { return; } currentPage--; startRow = (currentPage - 1) * pageSize; } public void next() { if (currentPage < totalPages) { currentPage++; } startRow = (currentPage - 1) * pageSize; } public void last() { currentPage = totalPages; startRow = (currentPage - 1) * pageSize; } public void refresh(int _currentPage) { currentPage = _currentPage; if (currentPage > totalPages) { last(); } } } com.sterning.commons.Pager.java 同时,采用PagerService类来发布成为分页类服务PagerService,代码如下: 同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
package com.sterning.commons; public class PagerService { public Pager getPager(String currentPage,String pagerMethod,int totalRows) { // 定义pager对象,用于传到页面 Pager pager = new Pager(totalRows); // 如果当前页号为空,表示为首次查询该页 // 如果不为空,则刷新pager对象,输入当前页号等信息 if (currentPage != null) { pager.refresh(Integer.parseInt(currentPage)); } // 获取当前执行的方法,首页,前一页,后一页,尾页。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-14
怎么不写完啊
|
|
返回顶楼 | |
发表时间:2009-01-13
怎么不写完呀?
|
|
返回顶楼 | |
浏览 4238 次