使用javabean实现分页

本文介绍了如何利用JavaBean来实现分页效果。通过创建一个包含当前页数、每页记录数、总记录数等属性的JavaBean,在JSP页面中进行调用来展示分页信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1分页的javabean

package com.shortmessage.common;


import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.jsp.jstl.sql.Result;

import com.shortmessage.common.db.SQLHelper;

public class SpilitPager {

	/*
	 * 操作分页的javabean组件
	 * 1.pageSize   用于确定每页的大小
	 * 2.currentPage  用于确定当前页
	 * 3.Object[][] pageList   要分页的记录
	 * 
	 * */
	
	private  int pageSize = 2;          //每页的记录数
	private  int currentPage = 1;       //当前页
	private  Object[][] pageList;       //二维数组
	
	//设置要分页的集合
	public void setPageList(Object[][] pageList){
	   this.pageList = 	pageList;
	}
	
	public Object[][] getPageList(){
	   return pageList;
	}
	public Object[][] getAll(int userId){
		
		Object[][] pageList = null;
		
		String sql = "select * from tb_message where receiveUser = ?";
		Integer[] params = {userId};
		Result result = SQLHelper.runExecuteQuery(sql,params);
		
		if(result.getRowCount()>0){
			Map[] rows = result.getRows();
			pageList = new Object[rows.length][7];
			for(int i=0;i<rows.length;i++){

				pageList[i][0] = Integer.parseInt(rows[i].get("Id").toString());
				pageList[i][1] = (rows[i].get("title").toString());
				pageList[i][2] = rows[i].get("content").toString();
				pageList[i][3] = Integer.parseInt(rows[i].get("sendUser").toString());
				pageList[i][4] = Integer.parseInt(rows[i].get("receiveUser").toString());
				pageList[i][5] = Boolean.parseBoolean((rows[i].get("isRead").toString()));
				pageList[i][6] = (Date)(rows[i].get("sendTime"));
			}
		}
		return pageList;
	}
	
	//根据用户的操作设置当前页
	public void setCurrentPage(int how){
		
		switch(how){
		    case 1:          //表示首页
		    	this.currentPage = 1;
		    	break;
		    case 2:            //表示上一页
		    	if(this.currentPage>1){
		    		this.currentPage--;
		    	}
		    	break;
		    case 3:           //表示下一页
		    	if(this.currentPage<this.getPageCount()){
		    		this.currentPage++;
		    	}
		    	break;
		    case 4:
		    	this.currentPage = this.getPageCount();
		    	break;	    	
		}
	}
	
	//得到当前要显示的数据集合
	public List<Object[]> getCurrentPageList(){
		
		int startIndex = (this.currentPage-1)*this.pageSize;   //要显示的第一条记录
		int endIndex = (startIndex+this.pageSize);             //当前页显示的最后一条记录
		if(endIndex>this.pageList.length){         //如果结束位置大于所有的记录
			endIndex = this.pageList.length;        //则结束位置为总记录数
		}
		
		List<Object[]> saveList = new ArrayList<Object[]>();
		for(int i=startIndex;i<endIndex;i++){
			saveList.add(this.pageList[i]);
		}
		return saveList;
	}
	
	//得到当前页
	public int getCurrentPage(){
		return this.currentPage;
	}
	
	//获取总页数
	public int getPageCount(){
		
		int size = this.pageList.length;
		return size%this.pageSize==0?size/this.pageSize:size/this.pageSize+1;
	}
}


2.jsp页面调用

 <!-- 实例化一个操作分页的javabean -->
    <jsp:useBean id="spilitPage" class="com.shortmessage.common.SpilitPager" scope="session"/>
     <%
       UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");  
       if(userInfo == null ){
         out.println("<script>alert('你还没有登录,请登录!');location.href='login.jsp'</script>");  
       }else{
         UserInfoBo userBo = null;      //顶一个userBo,用来获取userName
              
         String dohow = request.getParameter("how");
         int how = 1;
         if(dohow!=null){
           how = Integer.parseInt(dohow);
         }
         Object[][] pageList = spilitPage.getAll(userInfo.getId());
         //spilitPage.setPageList(pageList);
         //spilitPage.setCurrentPage(how);
     %>
     <jsp:setProperty property="pageList" name="spilitPage" value="<%=pageList %>" />
	 <jsp:setProperty property="currentPage" name="spilitPage" value="<%=how %>" />
     <table cellpadding="0" cellspacing="0" border="0" width="550px">
       <tr>
         <td colspan="4" height="30px">
                            当前用户:<font color="#ooooFF">    <%=userInfo.getUserName() %>
                            【<a href="#">发送短信息</a>】  【<a href="exit.jsp">退出</a>】</font>
        </td>
       </tr>
       <tr>
          <td height="30px" width="18%">发信人</td>
          <td height="30px" width="32%">主题</td>
          <td height="30px" width="17%">状态</td>
          <td height="30px" width="33%">发送时间</td>
       </tr> 
       <%
          List<Object[]> messageList = spilitPage.getCurrentPageList();
          for(int i=0;i<messageList.size();i++){
            userBo = new UserInfoBoImpl();
            UserInfo sendUser = userBo.getUserInfoById(Integer.parseInt(messageList.get(i)[4].toString()));
        %>
        <tr bgcolor="#CCCCCC">
          <td height="30px"><%=sendUser.getUserName() %></td>
          <td height="30px">
            <a href="ShowMessageServlet?id=<%=messageList.get(i)[0] %>"><%=messageList.get(i)[1] %></a>
          </td>
          <td height="30px">
              <% 
                 if(Boolean.getBoolean(messageList.get(i)[5].toString())){
              %>
                                                已读
              <%
                 }else{ 
              %>
                                             未读
              <% 
               }
              %>
          </td>
          <td height="30px"><%=((Date)messageList.get(i)[6]).toLocaleString() %></td>
        </tr>
        
         <%
           } 
         %>
         <tr>
           <td colspan="4" align="right" style="padding-top:5px;">
             <a href="index.jsp?how=1">首页</a>  <a href="index.jsp?how=2">上一页</a>  
             <a href="index.jsp?how=3">下一页</a>  <a href="index.jsp?how=4">末页</a>
           </td>
         </tr>
     </table>
     <%
      }
      %>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值