设为首页 收藏本站
查看: 428|回复: 0

[经验分享] 采用mysql数据库的struts2 分页实现

[复制链接]

尚未签到

发表于 2016-10-18 08:36:18 | 显示全部楼层 |阅读模式
  实现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>
&nbsp;共${examInfoDomain.page.totalPages}页&nbsp;到第<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这个稍微有点不好弄。

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287715-1-1.html 上篇帖子: Mysql中MyISAM、InnoDB两种表类型的区别 下篇帖子: 项目mysql数据导入数据的Java程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表