javaWeb实现分页

来源:互联网 发布:北风网大数据 编辑:程序博客网 时间:2024/05/21 17:47

本博客主要实现jsp页面的分页功能。在数据库拥有上千条数据或者更多的时候,一个简单的SQL语句:SELECT * FROM user 是不行的,一个页面不仅不能够显示这么多页面,即使能够显示也不能这么做,在一个就是全部搜索是非常消耗数据库的性能,影响用户的体验。解决方法就是使用:select * from user limit ?,?语句。
分页思路:
1.创建bean包
(1)创建user实体类。
(2)创建page类

    private int pageOfUser=3;//页面大小,初始化为3    private int totalPage;//页面总数,计算得到    private int pageNumber=1;//当前页码,初始化为1    private List<User> list;//记录条件搜索的list    private int count;//记录总数,在servlet类中获取

2.创建dao包
(1)创建ConnectionJDBC类,实现数据库驱动加载,连接,返回连接对象Connection
(2)创建SelectAll类,使用SELECT * FROM UsersInformation语句返回总数。
(3)创建ShowLimit类,实现条件查找,返回list
3.创建service包
创建Show类,实现dao层方法。
4.创建servlet包
创建ShowUsers包,实现分页逻辑。
5.创建show.jsp

代码如下:
User.java

package com.ysu.bean;public class User {    private String name;    private String password;    private String email;    private int id;    private String mark;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getMark() {        return mark;    }    public void setMark(String mark) {        this.mark = mark;    }}

Pages.java

package com.ysu.bean;import java.util.List;public class Pages {    private int pageOfUser=3;//页面大小,初始化为3    private int totalPage;//页面总数    private int pageNumber=1;//当前页码,初始化为1    private int indexPage;//分页开始的索引    private List<User> list;//记录条件搜索的list    private int count;//记录总数    private int isSeek=0;//0为不索引,1为索引    public int getPageOfUser() {        return pageOfUser;    }    public void setPageOfUser(int pageOfUser) {        this.pageOfUser = pageOfUser;    }    public void setCount(int count) {        this.count = count;        if(count%pageOfUser==0){            this.totalPage=this.count/this.pageOfUser;        }else{            this.totalPage=this.count/this.pageOfUser+1;        }    }    public int getTotalPage() {        return totalPage;    }    public int getIndexPage() {        return indexPage;    }    public void setIndexPage(int indexPage) {        this.indexPage = indexPage;    }    public List<User> getList() {        return list;    }    public void setTotalPage(int totalPage) {        this.totalPage = totalPage;    }    public void setList(List<User> list) {        this.list = list;    }    public int getCount() {        return count;    }    public int getPageNumber() {        return pageNumber;    }    public void setPageNumber(int pageNumber) {        this.pageNumber = pageNumber;    }   }

ConnectionJDBC.java

package com.ysu.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnectionJDBC {    public static Connection getConn(){        Connection conn=null;        try {            Class.forName("com.mysql.jdbc.Driver").newInstance();        } catch (InstantiationException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IllegalAccessException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        String url="jdbc:mysql://localhost:3306/UserRegister?user=root&password=1234&useUnicode=true&characterEncoding=utf-8";        try {            conn=DriverManager.getConnection(url);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }           return conn;    }}

SelectAll.java

package com.ysu.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.ysu.bean.User;public class SelectAll {    public List<User> getAllUser(){        List<User>list=new ArrayList<User>();        Connection conn=null;        PreparedStatement p=null;        ResultSet rs=null;        conn=ConnectionJDBC.getConn();        String sql="SELECT * FROM UsersInformation";        try {            p=conn.prepareStatement(sql);            rs=p.executeQuery();            while(rs.next()){                User user=new User();                user.setEmail(rs.getString(4));                user.setId(rs.getInt(1));                user.setName(rs.getString(2));                user.setPassword(rs.getString(3));                user.setMark(rs.getString(5));                list.add(user);            }                    } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return list;    }    public int getUserCount(){        int num=0;          Connection conn=null;        PreparedStatement p=null;        ResultSet rs=null;        conn=ConnectionJDBC.getConn();        String sql="SELECT count(*) FROM UsersInformation";        try {            p=conn.prepareStatement(sql);            rs=p.executeQuery();            while(rs.next()){                num=rs.getInt(1);            }            conn.close();                    } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return num;     }}

ShowLimit.java

package com.ysu.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.ysu.bean.Pages;import com.ysu.bean.User;public class ShowLimit {    public List<User> showlimit(Pages page){        List<User> list=new ArrayList<User>();        Connection conn=null;        PreparedStatement p=null;        ResultSet rs=null;        conn=ConnectionJDBC.getConn();        String sql="SELECT * FROM UsersInformation LIMIT ?,?";        try {            p=conn.prepareStatement(sql);            p.setInt(1, (page.getPageNumber()-1)*3);            p.setInt(2, page.getPageOfUser());            rs=p.executeQuery();            while(rs.next()){                User user=new User();                user.setId(rs.getInt(1));                user.setName(rs.getString(2));                user.setPassword(rs.getString(3));                user.setEmail(rs.getString(4));                user.setMark(rs.getString(5));                list.add(user);            }            conn.close();                    } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        page.setList(list);        return list;    }}

Show.java

package com.ysu.servic;import java.util.List;import com.ysu.bean.Pages;import com.ysu.bean.User;import com.ysu.dao.Login;import com.ysu.dao.SelectAll;import com.ysu.dao.SelectById;import com.ysu.dao.ShowLimit;public class Show {    //登录    public boolean getLogin(String name,String password){        Login log=new Login();        return log.logins(name, password);    }    //查找所有    public List<User> showUsers(){        return new SelectAll().getAllUser();    }    //部分显示    public List<User> showLimit(Pages page){        ShowLimit showlimit=new ShowLimit();        return showlimit.showlimit(page);    }    //按ID查找    public User getById(int id){        return new SelectById().getUser(id);    }    //得到总数    public int getCount(){        return new SelectAll().getUserCount();    }}

ShowUsers.java

package com.ysu.servlets;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;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 com.ysu.bean.Pages;import com.ysu.bean.User;import com.ysu.servic.Show;/** * Servlet implementation class ShowUsers */@WebServlet("/ShowUsers")public class ShowUsers extends HttpServlet {    private static final long serialVersionUID = 1L;    Pages page=new Pages();    Show s=new Show();    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String key=request.getParameter("key");        if(key.equals("page")){            String ID=request.getParameter("pageNum");            int id=Integer.parseInt(ID);            if(id<1){                page.setPageNumber(1);            }else if(id>page.getTotalPage()){                page.setPageNumber(page.getTotalPage());            }else{                page.setPageNumber(id);            }            page.setCount(s.getCount());//初始化总条数            page.setList(s.showLimit(page));            request.setAttribute("page", page);            request.getRequestDispatcher("/show.jsp").forward(request, response);        }    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(request, response);    }}

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>用户信息展示界面</title>    </head>    <body>        <table  border="1">            <thead>            <tr>                <td>ID</td>                <td>用户名</td>                <td>密码</td>                <td>电子邮箱</td>                <td>备注</td>            </tr>            </thead>            <tbody>            <c:forEach items="${page.list }" var="user">                <tr>                    <td>${user.id }</td>                    <td>${user.name }</td>                    <td>${user.password }</td>                    <td>${user.email }</td>                    <td>${user.mark }</td>                </tr>                </c:forEach>                            <tr>                </tr>            </tbody>        </table>        <a href="http://localhost:8080/showUsers/ShowUsers?key=page&pageNum=1">首页</a>        <a href="http://localhost:8080/showUsers/ShowUsers?key=page&pageNum=${page.pageNumber-1 }">上一页</a>        <c:choose>        <c:when test="${page.pageNumber <= 3}">            <c:set var="begins" value="1"></c:set>            <c:set var="ends" value="5"></c:set>        </c:when>        <c:otherwise>            <c:set var="begins" value="${page.pageNumber-2}"></c:set>            <c:set var="ends" value="${page.pageNumber+2}"></c:set>            <c:if test="${ends > page.totalPage }">                <c:set var="ends" value="${page.totalPage}"></c:set>                <c:set var="begins" value="${page.pageNumber-4}"></c:set>            </c:if>        </c:otherwise>        </c:choose>        <c:forEach var="i" begin="${begins }" end="${ends }">        <c:choose>            <c:when test="${page.pageNumber==i}">            【${page.pageNumber }】            </c:when>            <c:otherwise>                <a href="http://localhost:8080/showUsers/ShowUsers?key=page&pageNum=${i }">[${i }]</a>            </c:otherwise>        </c:choose>        </c:forEach>        <a href="http://localhost:8080/showUsers/ShowUsers?key=page&pageNum=${page.pageNumber+1 }">下一页</a>        <a href="http://localhost:8080/showUsers/ShowUsers?key=page&pageNum=${page.totalPage }">末页</a>        共${page.totalPage }页        共有${page.count }条记录    </body></html>
原创粉丝点击