先讓數據庫中的數據顯示出來
數據庫信息:
然後通過Servlet,使數據庫中的信息在瀏覽器中通過表格的形式顯示出來:
package com.page.one;
import javafx.print.Printer;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Page extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
try{
//1.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.獲得數據庫連接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
//3.創建句柄
Statement stmt = conn.createStatement();
//4.執行SQL語句
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
//5.處理執行結果
out.println("<table border=1 width=500px>");
out.println("<tr><th>ID</th><th>用戶名</th><th>電子郵件</th><th>等級</th></tr>");
while(rs.next()){
out.println("<tr><td>"+rs.getInt("id")+"</td><td>"+
rs.getString("username")+"</td><td>"+
rs.getString("email")+"</td><td>"+
rs.getInt("grade")+"</td></tr>");
}
out.println("</table><br/>");
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
顯示內容:
添加分頁
定義分頁變量:
1. pagenow:表示第幾頁 (由用戶來決定, 因此變化)
2. pageSize:每頁顯示多少條記錄 (有程序制定,也可以讓用戶來定製)
3. pageCount: 表示共有多少頁 (這是計算出來的)
4. rowCount: 共有多少條記錄 (通過查詢數據庫得到的)
先設置變量:
//設置總頁數變量
int pageCount=1;
//設置總行數變量
int rowCount=1;
//設置目前所在頁面
int pageNow=1;
//設置每頁信息行數
int pageSize=4;
求出信息總行數
//執行SQL語句,來確定總信息數量
ResultSet rs2 = stmt.executeQuery("SELECT count(*) FROM users");
rs2.next();
rowCount = rs2.getInt(1);
求出總頁數
//計算PageCount
pageCount = rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize+1;
執行語句顯示本頁面的信息
ResultSet rs = stmt.executeQuery("SELECT * FROM users ORDER BY ID LIMIT "+(pageNow-1)*pageSize+","+pageSize);
在表下方顯示頁面
for(int i = 1; i <= pageCount; i++){
out.println("<a href='/Page2?pageNow="+i+"'><"+i+"></a>");
}
接收超鏈接所提交的頁面選項
String spageNow = request.getParameter("pageNow");
if(spageNow != null){
pageNow = Integer.parseInt(spageNow);
}
因爲沒有選的時候接收到的是空值,直接不需要轉換,使用初定義就行了。
page2.java
public class Page extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//設置總頁數變量
int pageCount=1;
//設置總行數變量
int rowCount=1;
//設置目前所在頁面
int pageNow=1;
//設置每頁信息行數
int pageSize=4;
String spageNow = request.getParameter("pageNow");
if(spageNow != null){
pageNow = Integer.parseInt(spageNow);
}
try{
//1.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.獲得數據庫連 接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
//3.創建句柄
Statement stmt = conn.createStatement();
//執行SQL語句,來確定總信息數量
ResultSet rs2 = stmt.executeQuery("SELECT count(*) FROM users");
rs2.next();
rowCount = rs2.getInt(1);
out.println("rowCount = "+rowCount);
//計算PageCount
pageCount = rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize+1;
//執行SQL語句
ResultSet rs = stmt.executeQuery("SELECT * FROM users ORDER BY ID LIMIT "+(pageNow-1)*pageSize+","+pageSize);
//處理執行結果
out.println("<table border=1 width=500px>");
out.println("<tr><th>ID</th><th>用戶名</th><th>電子郵件</th><th>等級</th></tr>");
while(rs.next()){
out.println("<tr><td>"+rs.getInt("id")+"</td><td>"+
rs.getString("username")+"</td><td>"+
rs.getString("email")+"</td><td>"+
rs.getInt("grade")+"</td></tr>");
}
out.println("</table><br/>");
for(int i = 1; i <= pageCount; i++){
out.println("<a href='/Page2?pageNow="+i+"'><"+i+"></a>");
}
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
結果顯示
當然也可以完善一些,添加上上一頁與下一頁,以及跳轉頁數,但是要注意上一頁到第一頁與下一頁到最後一頁的情況,以及跳轉時輸入不在範圍內的情況:
直接上代碼吧。。
上下一頁:
//當到第一頁時就沒有上一頁這個選項了
if(pageNow!=1){
out.println("<a href='/Page2?pageNow="+(pageNow-1)+"'>上一頁</a>");
}
for(int i = 1; i <= pageCount; i++){
out.println("<a href='/Page2?pageNow="+i+"'><"+i+"></a>");
}
//當到最後一頁時就沒有下一頁這個選項了
if(pageNow!=pageCount){
out.println("<a href='/Page2?pageNow="+(pageNow+1)+"'>下一頁</a>");
}
顯示分頁信息:
//顯示分頁信息
out.println(" 當前頁:"+pageNow+"| 總頁數:"+pageCount);
跳轉:
out.println("<br/><br/>");
out.println("跳轉到第<input type='text' id='pageNow' name='pageNow'/> <input type='button' onClick='gotoPageNow()' value='跳'/>");
JavaScript語言來實現跳轉:
//添加JavaScript代碼
out.println("<script type='text/javascript' language='javascript'>");
out.println("function gotoPageNow(){ "+
"var pageNow=document.getElementById('pageNow');"+
//window.open能把pageNow傳遞給本頁面,而且能夠通過request.getParameter獲得。
"window.open('/Page2?pageNow='+pageNow.value,'_self'); }");
out.println("</script>");
注意超出範圍的情況:
String spageNow = request.getParameter("pageNow");
if(spageNow!=null){
int temp = Integer.parseInt(spageNow);
if(temp<=pageCount&&temp>=1){
pageNow = temp;
}else{
out.println("<script type='text/javascript' language='javascript'>");
out.println("window.alert('所跳頁面不在範圍內'); ");
out.println("</script>");
}
}
page.java
public class Page extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//添加JavaScript代碼
out.println("<script type='text/javascript' language='javascript'>");
out.println("function gotoPageNow(){ "+
"var pageNow=document.getElementById('pageNow');"+
//window.open能把pageNow傳遞給本頁面,而且能夠通過request.getParameter獲得。
"window.open('/Page2?pageNow='+pageNow.value,'_self'); }");
out.println("</script>");
//設置總頁數變量
int pageCount=1;
//設置總行數變量
int rowCount=1;
//設置目前所在頁面
int pageNow=1;
//設置每頁信息行數
int pageSize=4;
try{
//1.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.獲得數據庫連 接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
//3.創建句柄
Statement stmt = conn.createStatement();
//執行SQL語句,來確定總信息數量
ResultSet rs2 = stmt.executeQuery("SELECT count(*) FROM users");
rs2.next();
rowCount = rs2.getInt(1);
out.println("rowCount = "+rowCount);
//計算PageCount
pageCount = rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize+1;
String spageNow = request.getParameter("pageNow");
if(spageNow!=null){
int temp = Integer.parseInt(spageNow);
if(temp<=pageCount&&temp>=1){
pageNow = temp;
}else{
out.println("<script type='text/javascript' language='javascript'>");
out.println("window.alert('所跳頁面不在範圍內'); ");
out.println("</script>");
}
}
//執行SQL語句
ResultSet rs = stmt.executeQuery("SELECT * FROM users ORDER BY ID LIMIT "+(pageNow-1)*pageSize+","+pageSize);
//處理執行結果
out.println("<table border=1 width=500px>");
out.println("<tr><th>ID</th><th>用戶名</th><th>電子郵件</th><th>等級</th></tr>");
while(rs.next()){
out.println("<tr><td>"+rs.getInt("id")+"</td><td>"+
rs.getString("username")+"</td><td>"+
rs.getString("email")+"</td><td>"+
rs.getInt("grade")+"</td></tr>");
}
out.println("</table><br/>");
//當到第一頁時就沒有上一頁這個選項了
if(pageNow!=1){
out.println("<a href='/Page2?pageNow="+(pageNow-1)+"'>上一頁</a>");
}
for(int i = 1; i <= pageCount; i++){
out.println("<a href='/Page2?pageNow="+i+"'><"+i+"></a>");
}
//當到最後一頁時就沒有下一頁這個選項了
if(pageNow!=pageCount){
out.println("<a href='/Page2?pageNow="+(pageNow+1)+"'>下一頁</a>");
}
//顯示分頁信息
out.println(" 當前頁:"+pageNow+"| 總頁數:"+pageCount);
out.println("<br/><br/>");
out.println("跳轉到第<input type='text' id='pageNow' name='pageNow'/> <input type='button' onClick='gotoPageNow()' value='跳'/>");
}catch (SQLException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
結果: