Serlvet+jsp+pageUtil实现分页

代码里删除了部分信息,不会影响思路,

 

看代码的朋友把相应的补全就行了,

 

如果有不足的地方,望各位提出意见

 

Servlet代码

 

 

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 

public class ShowServlet extends HttpServlet {

 
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
   try {
  List list = List集合

//  下面为固定写法
  String page = request.getParameter("page");
  String beginpages = request.getParameter("begin");
  //转向路径
  String url="转向你的jsp页面路径";
  int pagesize = 8;// 每页条数
  PageUtil.pageSet(request, response, pagesize, page, beginpages, listAffiche, url);

  } catch (SQLException e) {
   
   e.printStackTrace();
  }
 }

 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request,response);
 }

}

 

jsp页面代码:

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>test</title>
    
   <style type="text/css">
   .table_border td{border-top:1px #DDD solid;border-right:1px #DDD solid;}
 .table_border{border-bottom:1px #DDD solid;border-left:1px #DDD solid;}
  </style>
  </head>
 
  <body>
    
    <div align="center">
     <table class="table_border">     
      <!--标签里都是固定的写法,与util工具类对应-->
      <c:forEach items="${list}" var="temp" begin="${begin}" end="${end-1}">
       <tr>
       <td >${temp.property1 }</td>
       <td>${temp.property2 }</td>
       <td>${temp.property3 }</td>

      </tr>    
      
      </c:forEach>
       <tr>
    <td colspan="2" align="right">
    共${pageNum}页 每页${pagesize }条 共 ${sumCount} 条记录
    </td>
    <td colspan="3" align="right">     
     <a href="showSerlvet.do?page=first&begin=${begin}">首页</a>
     <a href="showSerlvet.do?page=last&begin=${begin}">上一页</a>
     <a href="showSerlvet.do?page=next&begin=${begin}">下一页</a>
     <a href="showSerlvet.do?page=end&begin=${begin}">尾页</a>
    </td>
   </tr>
           </table>
    </div>
  </body>
</html>

 

PageUtil--工具类代码


import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
  * @类名称:PageUtil
 * @类描述:分页工具类
 * @创建人:Ray

 * @修改人:Ray
 * @version 1.0
 *
 */
public class PageUtil {
 
 private static int[] fpage(String page, int beginpage, int pagesize,
   List list) {
  if (page != null) {
   if (page.equals("first")) {
    beginpage = 0;
   } else if (page.equals("last")) {
    if (beginpage == 0) {
    } else {
     beginpage = beginpage - pagesize;
    }
   } else if (page.equals("next")) {
    if (beginpage < list.size() - pagesize) {
     beginpage = beginpage + pagesize;
    }
   } else if (page.equals("end")) {
    if ((list.size() % pagesize) == 0) {
     beginpage = list.size() - pagesize;
    } else {
     pagesize = list.size() % pagesize;
     beginpage = list.size() - pagesize;
    }
   }
  }
  int[] set = { beginpage, pagesize };
  return set;
 }

 /**
  * 描述:统计 页数和记录条数
  * @param int pagesize List listObj
  * @return int[0] 页数 int[1] 记录条数
  */
 private static int[] getTongji(int pagesize, List listObj) {
  int sumCount = listObj.size();
  int pageNum = (int) sumCount / pagesize;

  if (sumCount % pagesize > 0) {// 如果有余数
   pageNum = pageNum + 1;
  }
  int[] set = { pageNum, sumCount };
  return set;
 }
 /***
  * 描述:分页的设置及处理
  * @author Ray
  * @param  int pagesize--每页条数
  *      String page --固定写法
  *      String beginpages--固定写法
  *      List list--要分页的List集合
  *      String --转向路径
  *
  * */
 public static void pageSet(HttpServletRequest request,
   HttpServletResponse response, int pagesize, String page,
   String beginpages, List list, String url) throws ServletException,
   IOException {
  int[] tongji = getTongji(pagesize, list);
  int pageNum = tongji[0];
  int sumCount = tongji[1];

  request.setAttribute("pageNum", pageNum);
  request.setAttribute("sumCount", sumCount);

  request.setAttribute("list", list);
  int beginpage = 0;

  if (beginpages != null) {
   beginpage = Integer.parseInt(beginpages);
  }
  request.setAttribute("pagesize", pagesize);
  int[] aa = fpage(page, beginpage, pagesize, list);

  request.setAttribute("begin", aa[0]);
  if (aa[0] * aa[1] == 0) {
   request.setAttribute("end", aa[1]);
  } else {
   request.setAttribute("end", aa[0] + pagesize);
  }
  request.getRequestDispatcher(url).forward(request, response);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值