1.

常见分页实现方式

(1) Java程序分页的实现主要是用List 接口中的subList(int startIndex,int endIndex)方法,这种方式也称为程序内存分页。
(2) 使用数据库的SQL语句实现数据分页。适用于数据量较大,访问频度较低的操作。

最近在用Strust2写项目,涉及到从数据库里取数据时使用分页功能,网上分页插件代码很多,特别是js的内存分页。
我在大学期末作品中也用过js分页,它的一个缺点是:当数据多的时候,可能会出现错误。我当时出错可能是因为List长度问题,只能取出来30多条数据。这个问题比较难打理,所以这次我特意使用Sql语句进行分页,一次从数据库中就只取10条数据来展示。这个就比较简单。

2. 先上效果图

DAO方法:

public List<Userbean> selAlluser(){   //管理员查询全部用户int pageSize=10;//取几条数据int showPage=1;//当前页int pageCount = 0;//总页数int recordCount=0;//总记录数int ushow=1;String show;ResultSet rs1;Statement stmt1;HttpSession session= ServletActionContext.getRequest().getSession();Dbase ab=new Dbase();con=(Connection) ab.getCon();try {   stmt1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);String sql="select * from tb_user";rs1=stmt1.executeQuery(sql);rs1.last();//记录最后一行recordCount=rs1.getRow();//根据行数得到总记录数pageCount=(recordCount%pageSize==0)?(recordCount/pageSize):(recordCount/pageSize+1);//计算页数show=ServletActionContext.getRequest().getParameter("showPage");//得到显示页面传来的想要跳转的页号//这里的show类型要设为String,因为int类型无法判空if(show==null){ushow=1;showPage=1;}else{ushow=Integer.parseInt(show);//转换成intif(ushow<=0){showPage=1;}if(ushow>=pageCount){showPage=pageCount;}else{showPage=ushow;}if(showPage<=1){//当用户输入负数或0时,设置显示第一页showPage=1;}}con.close();rs1.close();stmt1.close();} catch (SQLException e) {// TODO Auto-generated catch blockshowPage=1;e.printStackTrace();} //下面是查询操作List<Userbean> ulist=new ArrayList<Userbean>();con=(Connection) ab.getCon();int position=(showPage-1)*pageSize;//计算当前页的第一条数据在整个数据库中位于第几条if(position<=0){position=0;}//0就是第一条String sql1="select * from tb_user limit "+position+",10";//这里的10就是pagesizetry {stmt=con.createStatement();ResultSet rs=stmt.executeQuery(sql1);while(rs.next()){u=new Userbean();u.setUid(rs.getInt("uid"));u.setUname(rs.getString("uname"));u.setUpwd(rs.getString("upwd"));u.setUsex(rs.getString("usex"));u.setUage(rs.getInt("uage"));u.setUaddr(rs.getString("uaddr"));u.setUdesc(rs.getString("udesc"));ulist.add(u);}       con.close();rs.close();stmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}//用session保存页号,总页数,总数据数,便于在前台取出session.setAttribute("showpage", showPage);session.setAttribute("pagecount", pageCount);session.setAttribute("recordcount", recordCount);return ulist;}

jsp页面

<body>
<table width="90%"  border="0"><tr align="center" height="10"><td bgcolor="#33FFCC" width="15%">ID</td><td width="30%" bgcolor="#99FF99">用户名</td><td width="25%" bgcolor="#99FF99">密码</td><td colspan="10" width="30%" bgcolor="#33FFCC">操作</td></tr><s:iterator value="ulist" status="status"><tr bgcolor="white" height="10"><td><s:property value="uid"/></td><td><s:property value="uname"/></td><td><s:property value="upwd"/></td><td width="10%"><a href="lookuser.action?uid=<s:property value="uid"/>">查看</a></td><td width="10%"><a href="deluser.action?uid=<s:property value="uid"/>">删除</a></td><td width="10%"><a href="deluser.action?uid=<s:property value="uid"/>">封号</a></td></tr></s:iterator><tr><td align="center" height="10%" colspan="10">  <ul class="pagination"><li><a href="useroper.action?showPage=<% String s=session.getAttribute("showpage").toString();String s1=session.getAttribute("pagecount").toString();int pin=Integer.parseInt(s);int pin1=Integer.parseInt(s1);int pin2=Integer.parseInt(s1);int be=Integer.parseInt(s)-1;out.print(be); %>">«</a></li><li><a class="<%if(pin<=1){out.print("active");}else{} %>" href="useroper.action?showPage=1">1</a></li><li><a class="<%if(pin==2){out.print("active");}else{} %>" href="useroper.action?showPage=2">2</a></li><li><a class="<%if(pin==3){out.print("active");}else{} %>" href="useroper.action?showPage=3">3</a></li><li><a class="<%if(pin==4){out.print("active");}else{} %>" href="useroper.action?showPage=4">4</a></li><li><a class="<%if(pin==5){out.print("active");}else{} %>" href="useroper.action?showPage=5">5</a></li><li><a href="useroper.action?showPage=<% int af=Integer.parseInt(s)+1;out.print(af); %>">»</a></li><li><a href="useroper.action?showPage=<% out.print(session.getAttribute("pagecount")); %>">尾页</a></li></ul>
</td></tr></table><table width="90%"  border="0"><tr><td align="right" height="20%" style="color: white;"><form action="useroper.action"><input placeholder="输入页数" style="border-radius: 5px;border: none;height:30; width: 60" name="showPage" type="text" onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu ="value=value.replace(/[^0-9]/g,'')"/><input type="submit" name="tz" style="border-radius: 5px;height:30; width: 50;border:none; background-color: yellow; " value="跳转"></form><br>数据库中有<% out.print(session.getAttribute("recordcount")); %>条数据,共<% out.print(session.getAttribute("pagecount")); %>页,当前第<% out.print(session.getAttribute("showpage")); %>页。<br><br>
</td></tr>
</table>
</body>

css代码:

ul.pagination {display: inline-block;padding: 2px 0px;margin: 0;width: 100%;
}ul.pagination li {display: inline;}ul.pagination li a {color: black;float: left;padding: 8px 16px;text-decoration: none;border-radius: 5px;
}ul.pagination li a.active {background-color: #4CAF50;color: white;border-radius: 5px;
}ul.pagination li a:hover:not(.active) {background-color: #ddd;}

完事!

Strust2 Mysql数据库,sql语句分页,JSP显示相关推荐

  1. mysql数据库sql语句大全

    mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...

  2. MySql数据库SQL语句小结

    数据库概述 什么是数据库? 什么是关系型数据库? 数据库相关概念 什么是SQL语言? 连接mysql服务器 数据库及表操作 创建.删除.查看数据库 创建.删除.查看表 新增.更新.删除表记录 查询表记 ...

  3. Java菜鸟补给站---MySQL数据库 SQL 语句补充( 一 )

    目录 SQL 语句 truncate 语句 不属于DML语句 1>作用 截断名 2>语法: truncate table 表名 3>和 delete 语句的区别 对于自增长字段,使用 ...

  4. Mysql数据库sql语句

    目录 一.MySQl概述 关系型数据库(RDBMS) 二.SQL 2.3.DDL 2.4.DML 2.5.DQL 2.6.DCL 一.MySQl概述 关系型数据库(RDBMS) 概念:建立在关系模型基 ...

  5. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

  6. Mysql 数据库 -------- SQL语句进阶查询 ------- 后部分

    Mysql ---- SQL高级查询 连接查询 内连接 外连接 数据库函数 数学函数 聚合函数(给数据表用的) 字符串函数(字符串用''格式) 日期时间函数 存储过程 创建存储过程 创建存储过程中的传 ...

  7. mySQL数据库Sql语句执行效率检查--Explain命令

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  8. MySQL数据库 sql语句的简单入门学习

    初步学习MySQL后的一些总结 MySQL简介 MySQL在过去由于性能高.成本低.可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中.随着MySQL的不断成熟, ...

  9. MySQL 数据库--SQL 语句(一)

    一.准备 1.源码编译安装 MySQL 必须先准备好软件包至/opt目录下 软件包资源传送门:百度网盘 请输入提取码 提取码:u4vw #!/bin/bashsystemctl stop firewa ...

最新文章

  1. 自动驾驶公司尴尬处境
  2. Android开发环境部署:JDK+Android Studio
  3. 怎么知道python有哪些库、哪些方法-哪些 Python 库让你相见恨晚?
  4. 一篇文章告诉你:荣耀10 GT为什么叫全能旗舰
  5. POJ 3320 Jessica's Reading Problem (尺取)
  6. PowerDesigner 15生成数据字典
  7. JAVA判断数组最大值
  8. Spark RDD 之间的依赖关系
  9. HDU 1063 [Exponentiation]高精度
  10. android播放器录制视频,Android播放器的录制实践
  11. 中央和省级产业政策匹配数据(含完整stata代码)
  12. Cesium中的Heading/Pitch/Roll
  13. OpenHarmony啃论文俱乐部玩法攻略
  14. 2022年茶艺师(初级)考试试卷及茶艺师(初级)模拟试题
  15. 通过Frp内网穿透和Nginx反向代理实现不带端口号访问家里内网服务器网站
  16. 教程 |「川言川语」:用神经网络RNN模仿特朗普的语言风格
  17. 学会计学java_我只是一个初中毕业的,现在很想学会计,我不知道从何学起?...
  18. VB——消费记录及查询系统。
  19. Abaqus CPU并行计算 加速计算信息汇总
  20. Unity Shader 简单地挖一个洞

热门文章

  1. 139_Power BI之某制造企业HR相关数据年度复盘
  2. sqlite3修改表内容python_python之sqlite3使用详解(转载)
  3. Java面试汇总:Java基础(一)
  4. Hive 的窗口函数
  5. Python random模块常用方法的使用
  6. ASP.NET中UpdatePanel与jQuery同时使用所遇问题解决
  7. NLP:语言模型与n元语法
  8. 数据结构的堆栈与内存中堆栈的区别
  9. windows下使用cmake+mingw配置makefile(2)
  10. python中matlab函数图像处理,MATLAB图像处理--同态滤波(代码及示例)