Struts2 分页

2024-06-18 17:18
文章标签 分页 struts2

本文主要是介绍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

 

Struts2Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过GetterSetter获取。

虽然,在理论上Struts2Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现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

java.io.Searializable

java.lang.Cloneable

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

        
//    获取当前执行的方法,首页,前一页,后一页,尾页。

这篇关于Struts2 分页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072622

相关文章

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但