1. 程式人生 > >Web分頁顯示資料

Web分頁顯示資料

這個是基於MVC框架寫的。

首先對資料庫進行封裝處理

public class DataBase {
    static String driver = "com.mysql.jdbc.Driver";
    static String url = "jdbc:mysql://127.0.0.1:3306/xscjgl2?useUnicode=true&characterEncoding=utf8";
    static String user = "root";
    static String password = "root";
    static String maxsql = null
; static Connection con = null; static int tt ; static Statement sta = null; static ResultSet res = null; //連線資料庫 static public Connection lianjie(){ try { Class.forName(driver); con = DriverManager.getConnection(url, user, password); } catch
(ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; } //查詢 public ResultSet sel(String sql){ con = lianjie(); try { sta = con.createStatement(); res = sta.executeQuery(sql); } catch
(SQLException e) { e.printStackTrace(); } return res; }

資料庫的資料
這裡寫圖片描述

dao層處理

在dao層裡定義分頁的方法

package com.dao;

import java.util.List;

import com.model.Page;

public interface Fy {
    //計算出Page屬性的值
    Page page();
    //按照分頁查詢全部
    List selectAll(int offsetone,int slide);

}

daoImpl實現層裡處理資料庫得到的資料

package com.dao.iml;

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

import com.dao.Fy;
import com.database.DBcon01;
import com.model.Page;
import com.model.Student;

public class FyImpl implements Fy {
    DBcon01 db = new DBcon01();

    @Override
    // 可以查到總條數,根據總條數和每頁顯示計算出總頁數(總條數+每頁顯示數-1)/每頁顯示數
    public Page page() {
        Page p = null;
        // 查詢總條數
        String sql = "select COUNT(*) from student";
        ResultSet res = db.sel(sql) ;  //sel是DataBase.java的一個方法
        // 定義總頁數
        int pc = 0;
        // 定義總條數
        int z = 0;
        try {
            while (res.next()) {
                p = new Page();
                z = res.getInt(1);
                p.setCount(z);
            }
            // 計算出總頁數
            pc = (z + p.getSlide() - 1) / p.getSlide();
            p.setPageCount(pc);
            /*
             * //判斷如果有餘數,那麼總頁數+1 if(z%p.getSlide()==0){ pc =z/p.getSlide();
             * }else{ pc =z/p.getSlide()+1; }
             */

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return p;
    }
    @Override
    //得到每頁要顯示的資料
    public List selectAll(int offsetone, int slide) {
        List list = new ArrayList();
        Student stu = null;
        /*  //select欄位列表        from資料來源 limit [start,]length;
        start表示從第幾行記錄開始檢索,length表示檢索多少行記錄。表中第一行記錄的start值為0*/
        //查詢某幾行記錄
        String sql = "select * from student limit " + offsetone + "," + slide
                + "";
        ResultSet res = db.sel(sql);
        try {
            while (res.next()) {
                int id = res.getInt(1);
                String stuName = res.getString(2);
                String stuSex = res.getString(3);
                String stuAge = res.getString(4);
                //通過有參的構造方法建立Student物件
                stu = new Student(id, stuName, stuSex, stuAge);
                //把Student物件增加到list集合
                list.add(stu);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return list;
    }

}

service層處理

在service層裡,這個比較簡單,service層只是跳轉一下。

package com.service;

import java.util.List;

import com.model.Page;

public interface FyService {
    //計算出Page屬性的值
    Page page();
    //按照分頁查詢全部
    List selectAll(int offsetone,int slide);
}

在serviceImpl層的實現層裡

package com.service.impl;

import java.util.List;

import com.dao.Fy;
import com.dao.iml.FyImpl;
import com.model.Page;
import com.service.FyService;

public class FyServiceImpl implements FyService{
        Fy f = new FyImpl();
    @Override
    public Page page() {
        return f.page();
    }
    @Override
    public List selectAll(int offsetone, int slide) {
        return f.selectAll(offsetone, slide);
    }
}

在servlet裡

package com.servlet;

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

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

import com.model.Page;
import com.model.Student;
import com.service.FyService;
import com.service.impl.FyServiceImpl;

public class FyServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //從頁面獲取pagenow
         int pagenow = Integer.parseInt(request.getParameter("pagenow"));

        FyService fs = new FyServiceImpl();
        Page page =fs.page();
        //通過pagenow計算出offsetone
        page.setOffsetone((pagenow-1)*page.getSlide());
        //通過調取FyServiceImpl中的selectAll(page.getOffsetone(), page.getSlide()),返回每頁查詢的資料集合
        List<Student> list= fs.selectAll(page.getOffsetone(), page.getSlide());

        request.setAttribute("list", list);
        request.getSession().setAttribute("page1", page);
        request.getRequestDispatcher("/fy/StuAll.jsp").forward(request, response);

    }

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


    }

}

在model層裡寫一個Page的類

package com.model;

/*
 * @封裝分頁的共同屬性
 * 
 */

public class Page {

    private int count;//得到資料的總條數
    private int  slide=4; //每頁顯示的4條
    private int offsetone;//每頁的第一條
    private int pageCount;// 總頁數
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public int getSlide() {
        return slide;
    }
    public void setSlide(int slide) {
        this.slide = slide;
    }
    public int getOffsetone() {
        return offsetone;
    }
    public void setOffsetone(int offsetone) {
        this.offsetone = offsetone;
    }
    public int getPageCount() {
        return pageCount;
    }
    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

顯示的介面

寫一個跳轉的介面

pagenow給servlet傳一個頁面引數

 <body>
    <a href="Paging?pagenow=1">查詢所有</a>
  </body>

顯示資料的StuAll.jsp頁面

//匯入JSTL標籤
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<body>
    <%
        List list = (List) request.getAttribute("list");
        int size = list.size();
    %>

    <c:choose>
        <c:when test="<%=size == 0%>">
        對不起,您沒有查到資料。。。。。

        </c:when>
        <c:otherwise>
            <table>
                <tr>
                    <td>學號</td>
                    <td>姓名</td>
                    <td>年齡</td>
                    <td>性別</td>
                    <td>修改</td>
                    <td>刪除</td>
                </tr>
                <c:forEach items="${list}" var="list1">
                    <tr>
                        <td>${list1.stuId}</td>
                        <td>${list1.stuName}</td>
                        <td>${list1.stuSex}</td>
                        <td>${list1.stuAge}</td>
                        <td><a href="">修改</a></td>
                        <td><a href="">刪除</a></td>
                    </tr>
                </c:forEach>
            </table>
            <br>
            <br>


        </c:otherwise>
    </c:choose>

    <ul class="pagination pagination-lg">

        <%
            int offset = new Integer(request.getParameter("pagenow"));
            Page pb = (Page) session.getAttribute("page1");

            out.println("<li ><a href=FyServlet?pagenow=1" + ">首頁</a></li>");
        %>
        <%
            if (offset > 1) {
                out.println("<li ><a href=FyServlet?pagenow=" + (offset - 1)
                        + ">&laquo;</a></li>");
            } else {
                out.println("<li class='disabled'><a>&laquo;</a></li>");
            }
        %>
        <%
            for (int i = 1; i <= pb.getPageCount(); i++) {
                out.print("<li><a href=FyServlet?pagenow=" + i + ">-" + i
                        + "-</a></li>");

            }
        %>
        <%
            if (offset < pb.getPageCount()) {
                out.println("<li><a href=FyServlet?pagenow=" + (offset + 1)
                        + ">&raquo</a></li>");
            } else {
                out.println("<li class='disabled'><a>&raquo</a></li>");
            }
        %>
        <%
            out.println("<li><a href=FyServlet?pagenow=" + pb.getPageCount()
                    + ">尾頁</a></li>");
        %>
    </ul>
</body>