实现SSI分页的基本步骤:查看使用数据库的分页方式;java后台数据的处理,jsp前台数据的显示
采用mysql数据库分页,主要用到mysql数据检索中的limit a,b 函数实现,a表示从第几条开始,b表示需要获取的条数,采用ibatis框架xml代码如下:
select ... from table limit #start#,#pageSize#
java后台数据的处理主要采用自己写一个分页类来实现前台和数据的交互操作,代码如下:
package com.common.pojo; import java.io.Serializable; public class PageInfo implements Serializable { private static final long serialVersionUID = 7553973735794350843L; /** * 总记录数 默认为-1 */ private int totalRecords = -1; /** * 总页数 */ private int totalPages; /** * 每页显示的记录数 * */ private int pageSize = 10; /** * 当前所在页码(在第几页) * */ private int curPageNo = 1; /** * 显示第几页 */ private int curPage; public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getCurPageNo() { return curPageNo; } public void setCurPageNo(int curPageNo) { this.curPageNo = curPageNo; } public int getTotalPages() { this.totalPages=this.totalRecords%this.pageSize==0?this.totalRecords/this.pageSize:this.totalRecords/this.pageSize+1; return totalPages; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public int getCurPage() { return curPage; } public void setCurPage(int curPage) { this.curPage = curPage; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } }
定义了几个分页的基本属性,可根据自己进行优化。初始化了属性的值,将pageSize默认一页10条,getTotalPage直接将现有的数据计算出来,方便调用。
在BaseDomain将pageInfo作为它的属性来调用,然后每个不同的domain继承BaseDomain
public class BaseDomain implements Serializable { private static final long serialVersionUID = -653238472375867369L; PageInfo page = null; public PageInfo getPage() { if(page == null){ page = new PageInfo(); } return page; } public void setPage(PageInfo page) { this.page = page; } }
后台dao层代码:
(List<ExamInfoDomain>)queryForList("query_exam_info",map);
service层,根据页面传过来的数据设置Map
Map<String, Object> map = new HashMap<String, Object>(); map.put("start", (page.getCurPageNo()-1)*page.getPageSize()); map.put("pageSize",page.getPageSize()); ......
action层直接调用service层方法就可以了。
页面实现分页:
<s:form action="/queryExamByCondition" id="mainForm" namespace="/" method="post"> <s:hidden name="examInfoDomain.page.totalPages"></s:hidden> ..... <div class="pth_page"> <a href="javascript:queryBefOrNext(${examInfoDomain.page.curPageNo-1 <= 1?1:examInfoDomain.page.curPageNo-1})" class="nbtn">上一页</a> <s:if test="examInfoDomain.page.curPageNo <= examInfoDomain.page.totalPages / 7 * 7"> <s:bean name="org.apache.struts2.util.Counter" id="counter"> <s:param name="first" value="1 + 7 * ((examInfoDomain.page.curPageNo-1)/7)" /> <s:param name="last" value="7 + 7 * ((examInfoDomain.page.curPageNo-1)/7)" /> <s:iterator var="curPage"> <s:if test="#curPage == examInfoDomain.page.curPageNo"> <a href="javascript:GotoPage(<s:property/>);" class="current"> <s:property/></a> </s:if> <s:else> <a href="javascript:GotoPage(<s:property/>);"> <s:property/></a> </s:else> </s:iterator> </s:bean> </s:if> <s:else> <s:bean name="org.apache.struts2.util.Counter" id="counter"> <s:param name="first" value="examInfoDomain.page.totalPages / 7 * 7 + 1" /> <s:param name="last" value="examInfoDomain.page.totalPages" /> <s:iterator var="curPage"> <s:if test="#curPage == examInfoDomain.page.curPageNo"> <a href="javascript:GotoPage(<s:property/>);" class="current"> <s:property/></a> </s:if> <s:else> <a href="javascript:GotoPage(<s:property/>);"> <s:property/></a> </s:else> </s:iterator> </s:bean> </s:else> <a href="javascript:queryBefOrNext(${examInfoDomain.page.curPageNo+1 >= examInfoDomain.page.totalPages?examInfoDomain.page.totalPages:examInfoDomain.page.curPageNo+1})" class="nbtn">下一页</a> 共${examInfoDomain.page.totalPages}页 到第<input type="text" id="curPageNo" value="" class="cinput">页 <a href="javascript:GotoPage()" class="cbtn">确定</a> </div> ... </form>
javascript 实现方法:
function GotoPage(pageNum){ if(pageNum == undefined || pageNum == null || $.trim(pageNum) == ""){ pageNum = $("#curPageNo").val(); var reg = /^\d+$/; if(reg.test(pageNum)==false){ return; } var totalPages = $("#mainForm_examInfoDomain_page_totalPages").val(); if( $.trim(pageNum) * 1 > totalPages * 1) { pageNum = totalPages; } } var form = $("#mainForm"); form.attr("action","queryExamByCondition?examInfoDomain.page.curPage="+$.trim(pageNum)); form.submit(); } function queryBefOrNext(curPage){ var form = $("#mainForm"); form.attr("action","queryExamByCondition?examInfoDomain.page.curPage="+curPage); form.submit(); }
这样,基于mysql数据库的struts2分页就搞定了,后台不难,前台页面实现1,2,3,4,5,6,7这个稍微有点不好弄。
相关推荐
Struts2分页 使用mysql数据库
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
能了解Struts1.2实现MySQL数据库分页的过程和注意事项。
Struts实现MySQL数据库分页.chm。教程比较详细,也比较通用,pagebean作为分页bean。
Struts1.2实现MySQL数据库分页,不能不看!!!!!!!!
struts2 分页 多数据库连接mysql 移植方便 把unit中文件考入 在action文件中加入相应代码
这是数据库mysql的查增删改操作,应用的是struts2,hibernate3.6.8框架,并且具有分页技术。是个不错的学习的程序
Struts2实现的吊炸天留言板系统(包含完整源+mysql数据库+bootstraps3) 1)数据库设计(对于系统的功能进行数据库设计) 2)用户登录界面以及注册设计 3)按照留言的时间的先后顺序进行留言排序以及分页 4)对于...
下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...
jQuery ajax 局部刷新分页。mysql数据库
采用Struts2框架,完成数据库操作(增删改查),完成分页,模糊查询,
做的一个简单分页程序,使用struts开发,action中只需3行代码,很方便,使用了struts标签完成功能,内带mySql数据库.
实现了struts2通过jdbc连接mysql数据库进行数据存储及从数据库中 查询出数据并显示到页面(jsp页面使用了struts2标签)上
struts2 hibernate2.5 struts2.1整合,实现了crud以及分页 数据库为mysql
具体看webroot下面的note文件,有详细介绍。已经实现了首页转跳,上一页,下一页,首页,尾页,指定页跳转...我用的是mysql数据库。有问题麻烦留言,我会及时修改的!求指教,可能有些类的耦合内聚做的不是很好,见谅~
利用Struts2+Hibernate+maven进行分页查询,用到的数据库为mysql
一个很简单的mybatis分页demo,数据库是MySQL,页面是Bootstrap
使用Spring集成struts2、ibatis、poi实现的增删改查功能,包括采用jquery实现的无刷新查询机分页、dwr实现的两级联动、以及采用poi动态将数据库数据导出成excel,本demo采用mysql数据库,附有建表sql,项目导入...
struts2+hibernate3+spring3分页;附带数据库;能输出结果;数据库采用mysql;