暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JAVA分页

JAVA不归路 2021-09-09
318

JSP页面

<table class="result-tab" width="100%">
  <tr>   
    <th>ID</th>
    <th>姓名</th>
    <th>性别</th>
    <th>email</th>
    <th>手机</th>                        
    <th>操作</th>
  </tr>
     <c:forEach var="u" items="${userList}" >
         <tr>
            <td class="tc"><input name="id[]" value="${u.user_id}" type="checkbox"></td>
            <td>${u.user_id}</td>
            <td>${u.user_name}</td>
            <td>${u.user_sex=='F'?'男':'女'}</td>
            <td>${u.user_email}</td>
            <td>${u.user_mobile}</td>                
        </tr>
     </c:forEach>
</table>
  <div class="list-page">
     共${psum}条记录,当前${npage}/${cpage}页
     <a href="admin_douserselect?np=1${search}">首页</a>
     <a href="admin_douserselect?np=${npage-1<1?1:npage-1}${search}">上一页</a>
     <a href="admin_douserselect?np=${npage+1>cpage?cpage:npage+1}${search}">下一页</a>
     <a href="admin_douserselect?np=${cpage}${search}">尾页</a>
   </div>

servlet类

package servlet;

import java.io.IOException;
import java.util.ArrayList;

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

import dao.UserDao;
import pojo.Shop_user;
@WebServlet("/manager/admin_douserselect")
public class DoUserSelect extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String search = request.getParameter("search");
        /**此处如果出现乱码在tomcat安装路径的conf/server.xml中添加
          <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
                URIEncoding="utf-8" />
                **/

        int npage = 1;//当前页
        String npg = request.getParameter("npage");
        if(npg!=null&&npg!="") {
             npage =Integer.parseInt(npg);
        }
        int count = 5;//每页显示条数
        String np = request.getParameter("np");
        if(np!=null) {
            npage = Integer.parseInt(np);
        }

        int[] arr = UserDao.selectCount(count); 
        ArrayList<Shop_user> list = (ArrayList<Shop_user>) UserDao.selectToPage(npage, count);
        request.setAttribute("userList", list);
        request.setAttribute("psum", arr[0]);//总记录数
        request.setAttribute("cpage", arr[1]);//共几页
        request.setAttribute("npage", npage);//当前第几页        
        request.getRequestDispatcher("admin_user.jsp").forward(request, response);
    }
}

DAO

static QueryRunner qr = new QueryRunner();
public static int[] selectCount(int cpage) {//每页显示几条数据
        int[] arr = new int[2];
        String sql = "select count(*) from shop_user";
        Connection conn = DBMananger.getConn();
        int count = 0;//总记录数
        int page = 0;//共几页
        try {
             count = qr.query(conn,sql,new ScalarHandler<Long>()).intValue();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(count%cpage==0) {
             page = (int) (count/cpage);
        }else {
             page =  (int) (count/cpage)+1;
        }
        arr[0] = count;
        arr[1] = page;
        return arr;
    }
public static ArrayList<Shop_user> selectToPage(int npage,int count){
                                                //第几页   每页显示几条数据
    String sql = "select * from shop_user limit ?,?";
    Connection conn = DBMananger.getConn();
    ArrayList<Shop_user> list = new ArrayList<Shop_user>();
    try {
        list =   (ArrayList<Shop_user>) qr.query(conn,sql, new BeanListHandler<Shop_user>(Shop_user.class),(npage-1)*5,count);
        } catch (SQLException e) {
            e.printStackTrace();
            }
        return list;        
    }

实体类

public class Shop_user {
    private String user_id;
    private String user_name;
    private String user_password;
    private String user_sex;
    private String user_birthday;
    private String user_idenityl;
    private String user_email;
    private String user_mobile;
    private String user_adress;
    private int user_status;
    public Shop_user() {
    }
}

总结:

明确参数:每页显示几条数据

前端访问servlet如果没有页数参数,默认为1,显示n条数据

sql语句   select * from table limit 1,n ;

使用取模得到

if(总数据%每页显示数据==0)

{总页数 =  总数据/每页显示数据  }

else

{总页数 = 总数据/每页显示数据 + 0 }

当点击首页  limit 1,n;

当点击下一页显示 (当前页数-1)*5,n条数据,               

做出判断 当前页数 = (当前页+1)>总页数?当前页: 当前页+1        

当点击上一页显示 (当前页数-1)*5,n条数据,                           

做出判断 当前页数 = (当前页-1)<1?1: 当前页-1          

当点击尾页时    limit 总页数,n;


文章转载自JAVA不归路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论