zoukankan      html  css  js  c++  java
  • JSP分页

    MySQL的limit子句。

    格式:select .... limit [偏移量],<记录个数>

    一、设计一个分页类Pager.java

    package com.nba.player;
    
    public class Pager {
        private int pageSize=10;// 默认每页记录数
        private int pageNosDisplay=10;// 默认每次显示的页码数
        private int totalPages;// 总页数
        private int pageNo = 1;// 当前页码数
    
        public int getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public int getPageNosDisplay() {
            return pageNosDisplay;
        }
    
        public void setPageNosDisplay(int pageNosDisplay) {
            this.pageNosDisplay = pageNosDisplay;
        }
    
        public int getTotalPages() {
            return totalPages;
        }
        
        //通过传入的表名得到总页数
        public void setTotalPages(String tableName) {
         int totalRecords=getTotalRecords(tableName); totalPages
    = totalRecords % pageSize == 0 ? totalRecords / pageSize : totalRecords / pageSize + 1; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; }
      

      //获得某表的记录总数
      private int getTotalRecords(String tableName) {
        int totalRecords=0;
        Connection connection=DB.getConnection();
        ResultSet rs=null;
        Statement st=null;

        String sql="select count(*) from "+tableName;
        try {
          st=connection.createStatement();
          rs=st.executeQuery(sql);
          if(rs.next())
            totalRecords=rs.getInt(1);
          rs.close();
          st.close();
          connection.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
        return totalRecords;
      }

    
    }

    二、设计实体类Player.java

    package com.nba.player;
    
    public class Player {
        private int id;
        private String headimgurl;
        private String chinesename;
        private String englishname;
        private String number;
        private String position;
        private double height;
        private double weight;
        private int age;
        private int playAge;
        private int teamid;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getHeadimgurl() {
            return headimgurl;
        }
        public void setHeadimgurl(String headimgurl) {
            this.headimgurl = headimgurl;
        }
        public String getChinesename() {
            return chinesename;
        }
        public void setChinesename(String chinesename) {
            this.chinesename = chinesename;
        }
        public String getEnglishname() {
            return englishname;
        }
        public void setEnglishname(String englishname) {
            this.englishname = englishname;
        }
        public String getNumber() {
            return number;
        }
        public void setNumber(String number) {
            this.number = number;
        }
        public String getPosition() {
            return position;
        }
        public void setPosition(String position) {
            this.position = position;
        }
        public double getHeight() {
            return height;
        }
        public void setHeight(double height) {
            this.height = height;
        }
        public double getWeight() {
            return weight;
        }
        public void setWeight(double weight) {
            this.weight = weight;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getPlayAge() {
            return playAge;
        }
        public void setPlayAge(int playAge) {
            this.playAge = playAge;
        }
        public int getTeamid() {
            return teamid;
        }
        public void setTeamid(int teamid) {
            this.teamid = teamid;
        }
        
    }

    三、设计业务类PlayerService.java

    package com.nba.player;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class PlayerService {
        
        //获得数据库连接
        private static Connection getConnection() {
            Connection connection=null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                connection=DriverManager.getConnection("jdbc:mysql://sh-cdb-qego3b2a.sql.tencentcdb.com:61551/study", "student", "student");
            } catch (Exception e) {
                System.out.println("数据库连接出错!");
                e.printStackTrace();
            }
            return connection;
        }
        
        //获得记录总数
        public static int getPlayersTotalRecords() {
            int totalRecords=0;
            Connection connection=getConnection();
            ResultSet rs=null;
            Statement st=null;
            
            String sql="select count(*) from player";
            try {
                st=connection.createStatement();
                rs=st.executeQuery(sql);
                if(rs.next())
                    totalRecords=rs.getInt(1);
                rs.close();
                st.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return totalRecords;
        }
        
        //得到分页记录
        public static List<Player> getPlayers(Pager pager) {
            List<Player> players=new ArrayList<Player>();
            ResultSet rs=null;
            PreparedStatement ps=null;
            Connection connection=getConnection();
            try {
                String sql="select headimgurl, number, englishname,chinesename,position,height from player limit ?,?";
                ps=connection.prepareStatement(sql);
                ps.setInt(1, (pager.getPageNo()-1)*pager.getPageSize());
                ps.setInt(2, pager.getPageSize());
                rs=ps.executeQuery();
                while (rs.next()) {
                    String headImgUrl=rs.getString("headimgurl");
                    String number=rs.getString("number");
                    String englishName=rs.getString("englishname");
                    String chineseName=rs.getString("chinesename");
                    String position=rs.getString("position");
                    double height=rs.getDouble("height");
                    
                    Player p=new Player();
                    p.setHeadimgurl(headImgUrl);
                    p.setChinesename(chineseName);
                    p.setEnglishname(englishName);
                    p.setNumber(number);
                    p.setPosition(position);
                    p.setHeight(height);
                    
                    players.add(p);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return players;
        }
    }

    四、设计控制器GetPlayersServlet.java

    package com.nba.player;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class GetPlayersServlet
     */
    @WebServlet("/GetPlayersServlet")
    public class GetPlayersServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public GetPlayersServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) {
            Pager pager=new Pager();//建立分页对象
            
            //获得当前页
            String strPageNo = request.getParameter("pageNo");
            int pageNo=1;
            if (strPageNo != null && !strPageNo.equals("")) {
                try {
                    pageNo = Integer.parseInt(strPageNo);
                } catch (NumberFormatException e) {
                    pageNo = 1;
                }
            }
            if (pageNo <= 0) {
                pageNo = 1;
            }
            pager.setPageNo(pageNo);
            
            //获得总页数
            pager.setTotalPages(player);//通过表名得到总页数
            
            //获得某一页的球员列表
            List<Player> players=PlayerService.getPlayers(pager);
            
            //将以下数据带入视图
            request.setAttribute("players", players);//球员数据
            request.setAttribute("pager", pager);//分页数据
            request.setAttribute("servlet", request.getContextPath()+request.getServletPath());//处理请求的servlet
            
            //视图
            RequestDispatcher rd=request.getRequestDispatcher("player/PlayerList.jsp");
            try {
                rd.forward(request, response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * @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);
        }
    
    }

    五、分页控件前端展示文件Pager.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <ul class="pagination">
        <!-- 上一页 (当页码小于等于1时)-->
        <c:if test="${pager.pageNo le 1}">
            <li class="disabled"><a>&laquo;</a></li>
        </c:if>
    
        <!-- 上一页(当页码大于1时) -->
        <c:if test="${pager.pageNo gt 1}">
            <li><a href="${servlet }?pageNo=${pager.pageNo-1}">&laquo;</a>
        </c:if>
    
        <!-- 计算要显示超始页码 (15-1)/10*10+1=11 -->
        <c:set var="num" value="${(pager.pageNo-1) / pager.pageNosDisplay}" />
        <!-- 向下取整 -->
        <fmt:formatNumber var="n" value="${ num + (num % 1 == 0 ? 0 : -0.5)}" pattern="#"></fmt:formatNumber>
        <c:set var="start" value="${n * pager.pageNosDisplay+1 }" />
        
        <c:set var="ii" /><!-- 记循环变量i的值 -->
        
        <!-- 是否加1... -->
        <c:if test="${start gt pager.pageNosDisplay }">
            <li><a href="${servlet}?pageNo=1">1</a></li> 
            <li> <a>...</a></li>
        </c:if>
        
        <!--要显示的页码段 << 1...11,12,13,14,15,16,17,18,19,20...44 >> (设共44页) -->
        <c:forEach var="i" begin="${start}" end="${start-1 + pager.pageNosDisplay }">
            <c:if test="${i le pager.totalPages}">
                <c:set var="ii" value="${i}" />
                <c:if test="${i eq pager.pageNo }">
                    <li class="active"><a>${i}</a><!-- 当前页不作链接 -->
                </c:if>
                <c:if test="${i ne pager.pageNo }">
                    <li><a href="${servlet }?pageNo=${i}">${i}</a></li>
                </c:if>
            </c:if>
        </c:forEach>
    
        <!-- 是否加...[totalPages] -->
        <c:if test="${ii lt pager.totalPages}">
            <c:set var="num1" value="${(pager.totalPages-1) / pager.pageNosDisplay}" />
            <!-- 向下取整 -->
            <fmt:formatNumber var="n1" value="${ num1 + (num1 % 1 == 0 ? 0 : -0.5)}" pattern="#"></fmt:formatNumber>
            <c:if test="${n ne n1 }"><!-- << 1...41,42,43,44 >> -->
                <li><a>...</a></li>
            </c:if>
            <li><a href="${servlet }?pageNo=${pager.totalPages}">${pager.totalPages}</a></li>
        </c:if>
    
    
        <!-- 下一页(页码等于总页) -->
        <c:if test="${pager.pageNo eq pager.totalPages }">
            <li class="disabled"><a>&raquo;</a></li>
        </c:if>
        <!-- 下一页(页码小于总页) -->
        <c:if test="${pager.pageNo lt pager.totalPages }">
            <li><a href="${servlet }?pageNo=${pager.pageNo+1}">&raquo;</a></li>
        </c:if>
    </ul>

    六、视图文件PlayerList.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <title>球员列表</title>
    </head>
    <body>
        <table class="table table-hover table-striped">
            <tr>
                <th>序号</th>
                <th>头像</th>
                <th>中文名</th>
                <th>英文名</th>
                <th>号码</th>
                <th>位置</th>
                <th>身高</th>
            </tr>
            <c:set var="i" value="1" />
            <c:forEach  items="${players}" var="player">
                <tr>
                    <td>${i}</td>
                    <td><img src="${player.headimgurl}" width="58" height="46"></td>
                    <td>${player.chinesename}</td>
                    <td>${player.englishname}</td>
                    <td>${player.number}</td>
                    <td>${player.position}</td>
                    <td>${player.height}</td>
                </tr>
                <c:set var="i" value="${i+1 }" />
            </c:forEach>
        </table>
        <%@ include file="../Pager.jsp" %>
    </body>
    </html>

    七、运行效果

  • 相关阅读:
    兼容多浏览器的网页复制插件(ZeroClipboard)
    兼容主流浏览器的css渐变色
    如何让字体随窗口缩放自动调整大小
    使用javascript实现html页面直接下载网盘文件
    360随身wifi隐藏ssid方法
    javascript特效——烟花燃放的效果[xyytit]
    JavaScript数组定义
    常用特殊符号的HTML代码(HTML字符实体)
    9.JAVA之GUI编程列出指定目录内容
    8.JAVA之GUI编程键盘码查询器
  • 原文地址:https://www.cnblogs.com/beast-king/p/12682004.html
Copyright © 2011-2022 走看看