您的位置:首页 > Web前端 > JavaScript

JSP交互---分页查询(基本分页查询)

2017-10-17 15:13 387 查看

1、新建分页工具类 PageBean

public class PageBean {
/**
* 当前页 的 页号
*/
private Integer pageNo;
/**
* 分页显示条数   设置默认值()
*/
private Integer pageSize=30;
/**
* 当前页数据在数据库查询的起始行(在数据库使用limit 查询的第一个数据)
*/
private Integer start;
/**
* 总页数
*/
private Integer totalPage;
/**
* 总条数
*/
private Integer count;
/**
* 分页(当前页)显示的信息
*/
private List list =new ArrayList();
/**
* (当前页的)上一页页号
*/
private Integer previous;
/**
* (当前页的)下一页页号
*/
private Integer next;

public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getCount() {
return count;
}
/**
* 设置总条数 (根据总条数  对 PageBean 进行其他数据设置)
* (重点)
* @param count
*/
public void setCount(Integer count) {
this.count = count;
//设置总页数
totalPage=count%pageSize==0?count/pageSize:count/pageSize+1;
//验证页号
if(pageNo<0){
pageNo=1;
}else if(pageNo>totalPage){
pageNo=totalPage;
}

//确认当前页 上页页号
//如果当前页页号 >1 它的上一页页号是 pageNo-1
//否则 那么它的上一页页号是它自己
if(pageNo>1){
previous=pageNo-1;
}else{
previous=1;
}

//确认当前页 下页页号
//如果当前页页号 < 总页数 它的下一页页号是 pageNo+1
//否则 那么它的下一页页号是它自己
if (pageNo<totalPage) {
next=pageNo+1;
} else {
next=pageNo;
}

//确认当前页数据在数据库查询的起始行
//进行判定是为了防止 总页数totalPage为0的情况下--->在验证页号时 对当前页号进行pageNo进行从新赋值为0
//传入的pageNo 为1(默认);
if(pageNo>0){
start = (pageNo - 1) * pageSize;
}else{
start=0;
}
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Integer getPrevious() {
return previous;
}
public void setPrevious(Integer previous) {
this.previous = previous;
}
public Integer getNext() {
return next;
}
public void setNext(Integer next) {
this.next = next;
}

}


2、在UserServiceImpl—–>用户表的业务逻辑类 中添加分页查询方法

/**
* 分页查询
* 获取当前页 用户
* @return
*/
public PageBean getAll(int pageNo) {
//新建 分页类的 实例
PageBean pb = new PageBean();

//写入当前页号 (先写入当前页页号---注意)
pb.setPageNo(pageNo);

//写入总条数---调用数据持久化层的 获取总条数方法(select count(*) from user;)
//umi是---->private UserDao umi = new UserMysqlImpl();数据持久化层接口的实现类的实例
pb.setCount(umi.getUserCount());

//查询  写入分页(当前页)显示的信息
//调用数据持久化层的 分页查询方法(select * from smbms_user limit ?,?)
//getAll(int start,int pageSize)
pb.setList(umi.getAll(pb.getStart(), pb.getPageSize()));

return pb;
}


3、新建查询 用户的 servlet—–>UserListServlet

public class UserListServlet extends HttpServlet {
//创建全局变量 PageBean工具类的实例
PageBean pb=new PageBean();

//重写 doPost 方法 (这里就只重写了一个----->编码过滤器和session过滤器省略)
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取页号
//默认 初始值为1
int pageNo = 1;
//从页面获取页号 数据
if (request.getParameter("pageNo") != null) {
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
//当前页   limit 数据
//下面创建的是 User  业务逻辑类的实例
UserServiceImpl usi = new UserServiceImpl();

//根据 页号查询当前页的信息(在业务逻辑类的方法中 为当前页设置 关于当前的一些信息)
pb = usi.getAll(pageNo);
//写入数据  传到页面(传回页面的是 PageBean 的示例)
request.setAttribute("pb", pb);

request.getRequestDispatcher("/jsp/userList.jsp").forward(request,
response);

}
}


4、在jsp页面 对接收到的 页面信息 进行输出

<!--对 控制器传回的 PageBean 实例进行数据处理-->
<!-- PageBean 的 list 属性 储存了当前页 要展示的实体类 User类的集合-->
<!-- 运用 c:forEach 对 list 进行遍历 items="${requestScope.pb.list }"-->
<c:forEach var="user" items="${requestScope.pb.list }" varStatus="row">
<tr>
<td height="23"><span class="STYLE1">${user.id }</span></td>
<td><span class="STYLE1"><a href="UserViewServlet?userId=${user.id}"> ${user.name }</a>
</span></td>
<td><span class="STYLE1"> ${user.loginName } </span></td>
<td><span class="STYLE1"> ${user.gender==1?"男":"女" }</span></td>
<td><span class="STYLE1"> ${user.age }</span></td>
<td><span class="STYLE1">${user.phone }</span></td>
<td><span class="STYLE1"> ${user.type==1?"管理员":"普通员工"} </span></td>
</tr>

</c:forEach>
<a href="UserListServlet?pageNo=1">首页</a>
<a href="UserListServlet?pageNo=${requestScope.pb.previous } ">上一页</a>
<a href="UserListServlet?pageNo=${requestScope.pb.next}">下一页</a>
<a href="UserListServlet?pageNo=${requestScope.pb.totalPage} ">末页</a>
当前第${requestScope.pb.pageNo }页 , 总页数:${requestScope.pb.totalPage} ,总条数:${requestScope.pb.count}


传到页面的是PageBean 的实例 这个实例 储存了当前页的一些信息:

/**
* 当前页 的 页号
*/
private Integer pageNo;
/**
* 分页(当前页)显示的信息
*/
private List list =new ArrayList();
/**
* (当前页的)上一页页号
*/
private Integer previous;
/**
* (当前页的)下一页页号
*/
private Integer next;


其余信息不作特别列出

根据 上一页 下一页 传回的页号 对 PageBean 的实例 pb 进行更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: