如何在Struts 数据库应用程序中实现分页显示(2)

Struts2与Hibernate分页功能的实现详解 Struts2是一个基于MVC设计模式的Web应用框架,它的核心是过滤器Dispatcher,用于将用户请求与Action映射,并返回相应的视图。MVC模式通过分离视图(View)、模型(Model)和控制器(Controller)来实现业务逻辑与界面显示的分离,提高了代码的可维护性和可扩展性。 阅读详情

如何在Struts 数据库应用程序中实现分页显示

 

[相关链接]
《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.youkuaiyun.com/develop/article/28/28871.shtm
《如何实现最简单的Struts程序》http://dev.youkuaiyun.com/develop/article/28/28946.shtm
《Struts下拉框的实现》http://dev.youkuaiyun.com/develop/article/28/28956.shtm
《Sruts单选框的实现》http://dev.youkuaiyun.com/develop/article/29/29042.shtm
《Struts复选框的实现》http://dev.youkuaiyun.com/develop/article/29/29043.shtm
《Struts程序各文件之间的关系(1)》http://dev.youkuaiyun.com/develop/article/29/29131.shtm
《Struts程序各文件之间的关系(2)》http://dev.youkuaiyun.com/develop/article/29/29133.shtm
《如何实现Struts 数据库应用程序(1)》http://dev.youkuaiyun.com/develop/article/29/29135.shtm
《如何实现Struts 数据库应用程序(2)》http://dev.youkuaiyun.com/develop/article/29/29138.shtm
《如何在Struts 数据库应用程序中实现分页显示(1)》http://dev.youkuaiyun.com/develop/article/29/29139.shtm
《如何在Struts 数据库应用程序中实现分页显示(2)》
《如何在Struts 数据库应用程序中实现记录的删除、更新及链接》
《如何在Struts 数据库应用程序中实现记录的添加》
《如何建立一个带登陆页面的Struts数据库应用程序》
《如何建立一个带登陆页面及角色的Struts数据库应用程序》

上述例子开发环境:Java Web Studio系列开发环境visual strutst版本。
最新JavaWebStudio下载地址:ftp://210.36.64.79/kui
上述例子源程序下载地址:ftp://210.36.64.79/kui

 

重点提示:JSPOUT属性页的设置是本例唯一与《如何实现Struts 数据库应用程序》中的步骤不同之处,这是本例的核心内容。我们要做的仅仅是在JSPOUT属性页的设置中把“自动分页”选择项选定并输入每页记录数即可。

 

   

dbListDAO.java文件:

  这里定义一个DAO类,用于实现数据加的查找、删除、更新、添加及生成分页字符串等功能。getPagestr(int ipage)函数用于生成分页字符串,int ipage参数用于转递当前页码。findSQL(String sql,int ipage)函数用于查找数据库数据,String sql参数用于转递SQL查询语句字符串,int ipage参数用于转递当前页码。

。。。。。。。。。。(省略)

public class dbListDAO {

 

    private Connection con;

    private int rowCount;

    private int pageCount;

    private int length;     

    private String pagestr;

    public int getLength()  {  return (this.length);   }

    public void setLength(int length)  { this.length=length; } 

    public String getPagestr(int ipage)

    {

           String strPage="";

              if(getLength()>0)

              {

                    strPage+="共";

                    strPage+=String.valueOf(rowCount);

                    strPage+="条记录,共";

                    strPage+=String.valueOf(pageCount);

                    strPage+="页,当前是第";

                    strPage+=String.valueOf(ipage);

                    strPage+="页,      ";

               

                    int istart,iend;

                    istart=ipage-5;

                    if(istart<0) {istart=0;}

                    iend=istart+10;

                    if(iend>pageCount) {iend=pageCount;}

                    istart=iend-10;

                    if(istart<0) {istart=0;}

                    for(int i=istart;i<iend;i++)

                    {

                        strPage+="<a href='dbListAction.do?action=find&search=search&page=";

                        strPage+=String.valueOf(i+1);

                        strPage+="'>";

                        strPage+=String.valueOf(i+1);

                        strPage+="</a>";

                        strPage+="  ";

                    }

           }

           this.pagestr=strPage;

           return strPage;

  }

 

  中间代码与分页无关,固省略。

 

   public Collection findSQL(String sql,int ipage) {

    PreparedStatement ps = null;

    ResultSet rs = null;

    ArrayList list = new ArrayList();

 

    try {

      if (con.isClosed()) {

        throw new IllegalStateException("error.unexpected");

      }

      ps = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

      rs = ps.executeQuery();

          rs.absolute(-1);

      rowCount=rs.getRow();

    

      int offset=1;

      int pagesize=getLength();

      if(getLength()<1)

      {

          pagesize=rowCount;

          pageCount=1;

      }

      else

      {

          pageCount=rowCount/getLength()+((rowCount%getLength())>0?1:0);

          offset=(ipage-1)*getLength()+1;

          if(offset<1)offset=1;

          if(offset>rowCount)offset=rowCount;       

        

      }

      rs.absolute(offset);

      for(int i=0;i<pagesize&&offset<rowCount+1;i++,offset++) {          

        dbList m_dbList= new dbList();

        //<find>

      m_dbList.set序号(rs.getInt(1));

      m_dbList.set姓名(rs.getString(2));

      m_dbList.set备注(rs.getString(3));

      //</find>

 

        rs.next();

        list.add(m_dbList);

 

      }

 

      return list;

 

    } catch (SQLException e) {

      //e.printStackTrace();

      //throw new RuntimeException("error.unexpected");

       return list;

    } finally {

      try {

        if (ps != null)

          ps.close();

        if (rs != null)

          rs.close();

      } catch (SQLException e) {

        e.printStackTrace();

        throw new RuntimeException("error.unexpected");

      }

    }

  }

 

}

 

dbListAction.java文件:

   在<分页></分页>之间的代码是实现数据库分页显示的代码。

。。。。。。。。。。(省略)

public final class dbListAction extends Action

{

    // 变量定义:

    private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");

 

    private ConnectionPool pool;

 

    public dbListAction() {

        pool = ConnectionPool.getInstance();

    }

 

 

    //函数定义:

    public ActionForward execute(ActionMapping mapping,

                             ActionForm form,

                             HttpServletRequest request,

                             HttpServletResponse response)

       throws Exception

    {

       // Extract attributes and parameters we will need

       Locale locale = getLocale(request);

       MessageResources messages = getResources(request);

       HttpSession session = request.getSession();

       dbListForm m_dbListForm = (dbListForm) form;

      

           Connection con = null;

 

     try

        {

               (省略)                    

             //<分页>

            m_dbListDAO.setLength(10);//设置每页显示记录数

            int ipage;//当前页

            try

            {

                String page=request.getParameter("page");//分页参数,读取请求的当前页

                ipage=java.lang.Integer.parseInt(page,10);

            }

            catch (Exception e)

             {

                 ipage=m_dbListForm.getPage();

             }

             if(ipage<1)ipage=1;

             Collection col = m_dbListDAO.findSQL(sql,ipage);//通过DAO对象查询数据

            request.setAttribute("dbList",col);  //保存数据  

           

            String pagestr=m_dbListDAO.getPagestr(ipage);//分页字符串,分页内容

              String s_find,str;

            if(!"search".equals(search))    //查找和全部显示两个不同的操作,其分页字符串不同,在此进行处理。如果是全部显示则去掉"search=search&"

           {

               s_find="search=search&";

               while(pagestr.indexOf(s_find)!=-1)

               {

                   str=pagestr.substring(0,pagestr.indexOf(s_find));

                   str+=pagestr.substring(pagestr.indexOf(s_find)+s_find.length(),pagestr.length());

                   pagestr=str;

               }

           }

            m_dbListForm.setPagestr(pagestr);  

              m_dbListForm.setAction(action);    

            request.setAttribute("dbListForm",m_dbListForm);

              //</分页>

 

 

                 return mapping.findForward("success");

     }

       catch (SQLException e)

        {

     (省略)              

       }

 

    }

}

 

Struts2组合查询与分页功能的实现示例 Struts2作为Java Web应用开发中的MVC框架,拥有丰富的标签库<sx:>。本章将对这些标签进行深入探讨,介绍它们的功能、使用方式以及在实际开发中的优化技巧。通过掌握<sx:>标签集,开发者可以高效地构建用户界面,减少代码冗余,同时提升应用的可维护性。我们首先从<sx:>标签集的基础概念开始,逐步深入到每一个具体的标签,分析其属性、用法和最佳实践,直至应用这些标签实现复杂的用户交互和数据展示。 阅读详情

相关推荐

实现Struts+Hibernate框架下的高效分页功能

本文还有配套的精品资源,点击获取 简介:通过结合Struts和Hibernate这两个Java开源框架,本项目展示了如何实现Web应用程序中的数据分页。Struts负责处理用户请求并管理流程,而Hibernate用于数据库操作与业务逻辑解耦。项目中首先在Hibernate DAO层编写带有分页条件的查询方法,然后通过Struts的Action类调用这些方法,并在JSP页面利...

weixin_31591833的博客 2014

pager-taglib-2.0+struts2结合实现的分页

[code="java"] //实体类 public class Goods implements java.io.Serializable { private Integer id; private String goodName; private Integer goodType; //省略get/set方法 } [/code] [code="java...

hngmduyi的专栏 173

Struts框架实现简单分页功能指南

Struts是Java EE应用中一个流行的Web层框架,它遵循MVC(Model-View-Controller)设计模式,将应用程序分为三个核心组件以实现业务逻辑与用户界面的分离。Struts简化了企业级应用的开发,尤其是在处理用户请求和展示响应方面。分页功能,是一种数据处理技术,允许用户在处理大量数据时,能够将数据分割成小块(页面)进行分批显示。这种技术在用户界面上的应用十分广泛,尤其在Web开发领域,分页处理是提高用户体验的重要组成部分。

weixin_35982453的博客 981

解决Struts分页显示

学习Struts已经有2个多月了,前几天群里的朋友问我Struts分页显示的问题,觉得好像与在jsp中的差不多,但还是遇到了这样那样的问题,好不容易花了几天时间把问题都搞清楚,觉得还是写点东西跟大家分享一下的好! 至于Struts的语法这里就不多介绍了,不懂的朋友可以先看网上的其他文章。 一 开发环境 Elicpse+Struts Studio+SqlServer2000+Tomcat。 二 开发

为理想而奋斗 8823

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。 1、目录结构 zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C . ├──

恍恍惚惚的大穷猫的博客 3万+

VSCode里玩转AvaloniaUI:手把手教你搭建跨平台桌面应用开发环境(附.NET 7配置避坑)

本文详细介绍了如何在VSCode中搭建AvaloniaUI跨平台桌面应用开发环境,包括.NET 7配置避坑指南。从环境准备、项目创建到调试优化,手把手教你利用VSCode和Avalonia实现高效开发,特别解决了.NET 7依赖等常见问题,助力开发者快速上手跨平台应用开发。

weixin_28826545的博客 577

使用Struts2实现分页显示

在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

anglela的博客 205

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

Struts2 分页

在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库

broadLove的专栏 1267

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3606

ollama环境变量配置:修改ollama的数据路径(安装路径)

ollama安装模型,如果很大,会占用C盘空间,影响系统运行速度,通过设置环境变量,来改变ollama放目录的地址。

正经教主是个热衷于正经学习分享的教主。 1万+

Struts实现分页显示数据

//操作的数据库中的表名为:UserInfo,有三个属性:userId,userName,userPassword(顾名思义) 首先为UserInfo表构造一个相对应的JavaBean,UserInfo.java(因为要贴的代码过多,这个就省略了)。  现在正式开始:新建名为:LendDao.java 的java类,其中有两个方法,一个是用来获得,分页后,每一页应该显示的内容( sel

izhouxiaofei的博客 4869

coredump文件的原理是啥

Core Dump(核心转储)是操作系统在程序崩溃(如段错误、非法指令等)时自动生成的一个文件,它包含了程序崩溃瞬间的。通过 core dump,开发者可以像“时间回溯”一样检查程序崩溃瞬间的状态,是调试复杂问题的利器!终止时,Linux 内核会生成 core 文件。不会生成 core dump,因为它们是“优雅终止”信号。这样 core 文件会直接压缩存储,节省磁盘空间。的文件(类似可执行文件),可以用。Core 文件本质上是一个。

二进制君 381

解决Struts分页显示(z)

解决Struts分页显示作者:李敏强  学习Struts已经有2个多月了,前几天群里的朋友问我Struts分页显示的问题,觉得好像与在jsp中的差不多,但还是遇到了这样那样的问题,好不容易花了几天时间把问题都搞清楚,觉得还是写点东西跟大家分享一下的好!至于Struts的语法这里就不多介绍了,不懂的朋友可以先看网上的其他文章。一 开发环境Elicpse+Struts Studio+SqlServer

null 1387

月薪30k+的工业视觉,必备Java+YOLO技能(工业级落地全拆解)

30k+工业视觉岗的核心不是算法调参,而是用Java把YOLO落地到工业场景的能力——稳运行、能对接、可管理是高薪的核心壁垒;必备技能分五层:模型工业级适配、Java推理核心、SpringBoot后端、工业部署运维、场景适配,每层都要练到“能落地、能讲清、能避坑”;学习路径的核心是“实战驱动”:不要只学理论,从一个完整的工业项目(如锂电缺陷检测)入手,练完就能对标高薪岗。

2601_94871597的博客 524

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

视觉人机器视觉的博客 2639

Struts1.2实现MySQL数据库分页

  应一位朋友的要求。今晚也是我的周末,所以做了个分页。虽然网上相似文章比较多,不过我做分页的时候,看网上的文章也难做得出来。第一次写博客,希望看了我这篇《Struts1.2实现MySQL数据库分页》的还不能做出一个分页的朋友拍我砖头。没办法,文章写作太差了。   我的平台是:Eclipse3.2   MyEclipse5.5 Tomcat5.5 MySql5.0   第一步:创建数据

树下无影的专栏 1299

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何在Struts 数据库应用程序中实现分页显示(1)

如何在Struts 数据库应用程序中实现分页显示 [相关链接]《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.youkuaiyun.com/develop/article/28/28871.shtm《如何实现最简单的Struts程序》http://dev.youkuaiyun.com/develop/article/28/28946.shtm《Stru

kui的专栏 2358

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

struts2实现分页显示

在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种比较好的方法。下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库

窥望奇妙世界 3546

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Struts2+MVC+MySql数据库增删查改及分页显示

刚开始学习Java Web框架中的Struts2,暂且将数据库的增删查改以及分页显示做一总结,过程中使用的是MySQL数据库,其中用到了c3p0连接池,现在将编写过程分享给大家,第一次写,欢迎指正.

baidu_38252207的博客 1059

struts2分页技术

                     最近做了一个等级考试报名系统,需要用到struts2分页技术,在网上书上找了很长时间都没发现符合要求的。最后经过自己研究写了一个struts2分页的程序,特此贴出供大家参考。本人是新手,若有些地方不好的还请大家指教。  因为是一个项目的一个小的demo所以需要大家自己修改,已符合自己的要求。    struts.xml中的配置:

java门徒 6797

struts2实现最简单的分页技术

struts2实现分页技术: 在对MemberUser类(表)中的数据进行分页:  1.在MemberUserDaoImpl 中添加 获取数据库中表的总数量的方法: public int counterByPage() { // TODO Auto-generated method stub sql="select count(*) from memberuser";

六月心悸 1802
上一篇: Struts程序各文件之间的关系(2)
下一篇: 如何实现Struts 数据库应用程序
kui
kui
博客等级 码龄25年 199粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值