在框架模式下实现分页功能(原理)

目标:在Struts2框架中,使用分层架构方式实现分页功能。

过程:Bean层->Dao层->Services层->Action层->Jsp页面

具体实现:

1.Bean层

      1)首先创建PageBean类(如下所示):   

package com.bean;

import java.util.List;

/**
* 分页类
*/
public class PageBean {
private List list;//通过数据库分页查询出来的list集合 q.list();
private int allRows; //总记录数=q.list().size();
private int totalPage;//总页数=总记录数/每页的记录数
private int showPage;//当前页
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}

public int getAllRows() {
return allRows;
}
public void setAllRows(int allRows) {
this.allRows = allRows;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getShowPage() {
return showPage;
}
public void setShowPage(int showPage) {
this.showPage = showPage;
}

}

2)创建Student类(显示的数据类,通过hibernate导入。不会的可以先参考文档:XXX)

 具体数据略

Student(stuno,sname,sex,phone),通过外键连接的classes类(cno,cname)

2.Dao层

     在把数据逻辑层写好之后,我们就来写这个PageDao类

导包略

/**
* 与数据库的交互
*/
public class PageDao {

Session sess = HibernateSessionFactory.getSession()

}

/**
* 查询学生数据库中的所有信息
* @param nowrow
* @param pagesize
* @return 查询学生数据库中的所有信息(分页)
*/
@SuppressWarnings("unchecked")
public List selectAll(int nowrow,int pagesize){
Query q = sess.createQuery("from Student").setFirstResult(nowrow).setMaxResults(pagesize);
return q.list();
}
/**

* @return 一共有多少记录(行)
*/
public int selectAllrows(){
Query q = sess.createQuery("from Student");
return q.list().size();
}
}

3.Service层

简单的写完Dao层与数据库的交互之后,就来写最重要的PageService层

导包略

public class PageSerivce {
/**
* 实现分页功能
* @param pagesize 每页的记录数
* @param page 当前页
* @return
*/
public PageBean fenye(int pagesize,int page){
PageBean pb = new PageBean();
List list;
PageDao pd = new PageDao ();
//总记录数
int allRows = pd.selectAllRows();
//总页数
int totalPage = (allRows%pagesize == 0)?(allRows/pagesize):(allRows/pagesize)+1;
//当前页
int nowpage = (page<=0)?1:page;
//当前行
int nowrow = pagesize*(page-1)+1;
list = sd.selectAll(nowrow, pagesize);
pb.setAllRows(allRows);
pb.setList(list);
pb.setShowPage(nowpage);
pb.setTotalPage(totalPage);
return pb;
}
}

4.Action层

写完最重要的PageService后,我们直接在PageAction调用,通过Struts2来发送数据到Jsp层完成调用。

导包略

/**
* 业务实现类
*/
public class PageAction {
PageBean pb;
int page; //当前所在页
/**
* 查询所有学生信息
*/
public String selectAll(){
PageSerivce ps = new PageSerivce();
pb = ps.fenye(5, page);
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("list",pb);
return "query";
}

5.Jsp页面

至此,整个分页所有功能都已经完成,剩下的只需要在Jsp页面调用即可。

首先,在jsp页面顶部导入Struts2标签,

<%@ taglib prefix="s" uri="/struts-tags"%>

然后在body中添加如下代码:






学号 姓名 性别 电话号码 班级
 


记录


 

首页|第一页


首页|
">

上一页




">

下一页

|
">

尾页




下一页|尾页

至此,hibernate+struts2实现网页分页功能代码部分就完毕了,效果图如下:




你可能感兴趣的:(Java基础)