jsp 分页实例

这篇博客主要针对初学者,介绍了如何在JSP中实现网页分页。作者分享了在没有找到合适第三方插件的情况下,自己动手编写分页功能的过程。虽然此方法适用于数据量较小的情况,对于大量数据可能需要考虑异步加载。文中提供了分页查询的数据库操作代码示例,并在文末附有实际效果展示。

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

       很多初学者在做jsp网页的时候都会遇到一个很蛋疼的问题,就是网页的分页。

      遇到这种问题就像要去网上找第三方插件,但是找了半天还是没找到,或者找到了但是又不会用。

      我也是这样,后来我就决定自己写一个分页的功能。经过几番努力,终于做了一个简单的分页。

     这个方法只适用于数据较少的情况,如果数据很多,可能很慢,这样好像要用异步加载的方法吧。

    最底部 有图有真相:

     

     


   1、首先你要在数据库的操作类中写一个分页查询的方法根据不同的数据表,方法会有所不同。代码如下:

/*
	 * 分页查询
	 */
	public List<Work> pageQuery(int currentPage, int pageSize) {
		String sql = "select * from work";
		List<Work> list = new ArrayList<Work>();
		int beginrow = pageSize * (currentPage - 1);// 开始的位置
		int endrow = currentPage * pageSize;// 终止的位置
		int currentNum = 0;// 经历的行数

		try {

			PreparedStatement ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				if (currentNum >= beginrow && currentNum < endrow) {
					Work work = new Work();
					work.setID(rs.getInt(1));
					work.setWork_title(rs.getString(2));
					work.setWork_content(rs.getString(3));
					work.setStart_date(rs.getString(4));
					work.setEnd_date(rs.getString(5));
					list.add(work);
					if (currentNum == endrow - 1) {
						break;
					}
				}
				currentNum++;
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;

	}

2、在数据库操作类中写一个获取分页总数的方法。

/*
	 * 查询数据库获得中的页数
	 */
	
	public int getPageSize(int count){//获取总的页数
		  int total = 0;
		  String sql = "select count(*) from student"; 
		  try{
			  PreparedStatement ps = conn.prepareStatement(sql);
				ResultSet rs = ps.executeQuery();
		   if(rs.next()){
		        int records = rs.getInt(1);
		        if(records%count==0){
		         total = records / count;
		        }else{
		         total = records / count + 1;
		       }
		      }
		    }catch(Exception ex){
		     ex.printStackTrace();
		    }
		    return total;
		  }

3、写一个分页的逻辑类。

package com.web.page;

import java.sql.SQLException;
import java.util.List;

import com.web.dbDAO.WorkDAO;
import com.web.dbTable.Work;

public class PageInfo {
  private int total;//总页数
  private int curpage;//当前页
  private int count;//每页显示记录数
  private List<Work> list;//接受数据库操作的方法返回的数组
  private WorkDAO workdao;//实例化数据库操作的类
  public List<Work> getList(){
    list = workdao.pageQuery(curpage,count);//开始进行分页
    return list;
}
  public PageInfo(int curpage){
    this.curpage = curpage;
    try {
        workdao = new WorkDAO();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
  public void setTotal(){
    this.total = workdao.getPageSize(count);//得到总的页数
   }
  public int getTotal(){
   return this.total;
  }
  public void setCurpage(int curpage){
   this.curpage = curpage;

}
  public int getCurpage(){
   return this.curpage;
  }
  public void setCount(int count){
   this.count = count;

}
  public int getCount(){
   return this.count;
  }
}

4、jsp代码页面。

int currentPage = 1;//开始默认第一页
	String c = request.getParameter("currentPage");//获取当前页
	if (c != null && !c.equals("")) {
		currentPage = Integer.parseInt(c);
	}
	PageInfo infos = new PageInfo(currentPage);
	infos.setCurpage(currentPage);
	infos.setCount(2);//每一页显示的页数
	infos.setTotal();
	 List<Work> wlist = infos.getList();

<table class="homework_table" cellspacing="0" cellpadding="0">
						<tr>
							<th style="width:200px">作业标题</th>
							<th>起始时间</th>
							<th>截止时间</th>
							<th>查看</th>
							<th>提交</th>

						</tr>
						<%
							for (Work work : wlist) {
						%>
						<tr>
							<td><%=work.getWork_title()%></td>
							<td><%=work.getStart_date()%></td>
							<td><%=work.getEnd_date()%></td>
							<td><a
								href="WebPage/jsp/person2.jsp?content=<%=work.getWork_content()%>">查看</a>
							</td>
							<td class="file_submit">提交</td>
						</tr>
						<%
							}
						%>
						<tr>
							<td colspan="5" align="center"><a
								href="WebPage/jsp/person.jsp?currentPage=1">首页</a> 
								<%
 	                             int counts = infos.getTotal();
 		                          for (int i = 0; i < counts; i++) {
                                %> 
                                 <a href="WebPage/jsp/person.jsp?currentPage=<%=i + 1%>"><%=i + 1%></a>
								<%}%> 
								<%
 	                              int countes = infos.getTotal();
                                 %> 
                              <a href="WebPage/jsp/person.jsp?currentPage=<%=countes%>">尾页</a></td>
						</tr>
					</table>

以上代码经过测试,完美运行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值