Web分頁顯示資料
阿新 • • 發佈:2019-01-11
這個是基於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)
+ ">«</a></li>");
} else {
out.println("<li class='disabled'><a>«</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)
+ ">»</a></li>");
} else {
out.println("<li class='disabled'><a>»</a></li>");
}
%>
<%
out.println("<li><a href=FyServlet?pagenow=" + pb.getPageCount()
+ ">尾頁</a></li>");
%>
</ul>
</body>