本文主要是介绍Struts2 分页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、 准备工作
开发环境: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;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import com.opensymphony.xwork2.ActionSupport;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
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
java.io.Searializable
java.lang.Cloneable
2、Pager分页类
为了增加程序的分页功能,特意建立共用的分页类。
package com.sterning.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
import java.math. * ;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class Pager
{
private int totalRows; //总行数
private int pageSize = 5; //每页显示的行数
private int currentPage; //当前页号
private int totalPages; //总页数
private int startRow; //当前页在数据库中的起始行
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Pager()
{
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public Pager(int _totalRows)
{
totalRows = _totalRows;
totalPages=totalRows/pageSize;
int mod=totalRows%pageSize;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(mod>0)
{
totalPages++;
}
currentPage = 1;
startRow = 0;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getStartRow()
{
return startRow;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getTotalPages()
{
return totalPages;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getCurrentPage()
{
return currentPage;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getPageSize()
{
return pageSize;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setTotalRows(int totalRows)
{
this.totalRows = totalRows;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setStartRow(int startRow)
{
this.startRow = startRow;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setTotalPages(int totalPages)
{
this.totalPages = totalPages;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public int getTotalRows()
{
return totalRows;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void first()
{
currentPage = 1;
startRow = 0;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void previous()
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage == 1)
{
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void next()
{
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage < totalPages)
{
currentPage++;
}
startRow = (currentPage - 1) * pageSize;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void last()
{
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public void refresh(int _currentPage)
{
currentPage = _currentPage;
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (currentPage > totalPages)
{
last();
}
}
}
com.sterning.commons.Pager.java
同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
package com.sterning.commons;
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
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));
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
这篇关于Struts2 分页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!