這篇文章主要介紹了Java Web 簡單的分頁顯示實例代碼的相關資料,本文通過,計算總的頁數和查詢指定頁數據兩個方法實現分頁效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
本文透過兩個方法:(1)計算總的頁數。 (2)查詢指定頁數據,實現簡單的分頁效果。
思路:首先得在 DAO 物件中提供分頁查詢的方法,在控制層呼叫該方法查到指定頁的數據,在表示層透過 EL 表達式和 JSTL 將該頁資料顯示出來。
先給大家展示下效果圖:
題外話:該分頁顯示是用「表示層-控制層-DAO層-資料庫」的設計思想實現的,有什麼需要改進的想法的地方大家提出來,共同學習進步。廢話不多說了,開始進入主題,詳細步驟如下所示:
1.DAO層-資料庫
JDBCUtils 類別用於開啟和關閉資料庫,核心程式碼如下:
reeeUserDao 類別中的方法getPage() 和方法listUser() 分別用來計算總頁數和查詢指定頁的數據,核心程式碼如下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCUtils { private Connection conn=null; private PreparedStatement pstmt=null; /** * connect 连接数据库 * @return */ public Connection connect(){ String user="root"; String password="1234"; String driverClass = "com.mysql.jdbc.Driver"; String jdbcUrl = "jdbc:mysql://localhost:3306/book"; try { Class.forName(driverClass); conn = DriverManager.getConnection(jdbcUrl, user, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * close 关闭数据库 * @param conn * @param pstmt * @param resu */ public void close(Connection conn,PreparedStatement pstmt,ResultSet result){ if(conn != null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block } } if(pstmt != null){ try { pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(result != null){ try { result.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
User 類別用於儲存查詢到的數據,核心代碼如下:
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.db.JDBCUtils; public class UserDao { /** * 计算总的页数 * @return */ public int getPage(){ int recordCount=0,t1=0,t2=0; PreparedStatement pstmt=null; ResultSet result=null; JDBCUtils jdbc=new JDBCUtils(); Connection conn=jdbc.connect(); String sql="select count(*) from books"; try { pstmt=conn.prepareStatement(sql); result=pstmt.executeQuery(); result.next(); recordCount=result.getInt(1); t1=recordCount%5; t2=recordCount/5; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ jdbc.close(conn, pstmt, result); } if(t1 != 0){ t2=t2+1; } return t2; } /** * 查询指定页的数据 * @param pageNo * @return */ public List<User> listUser(int pageNo){ PreparedStatement pstmt=null; ResultSet result=null; List<User> list=new ArrayList<User>(); int pageSize=5; int page=(pageNo-1)*5; JDBCUtils jdbc=new JDBCUtils(); Connection conn=jdbc.connect(); String sql="select * from books order by id limit ?,?"; try { pstmt=conn.prepareStatement(sql); pstmt.setInt(1, page); pstmt.setInt(2, pageSize); result=pstmt.executeQuery(); while(result.next()){ User user=new User(); user.setId(result.getInt(1)); user.setName(result.getString(2)); user.setNumber(result.getString(3)); list.add(user); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ jdbc.close(conn, pstmt, result); } return list; } }
2.控制層
ListUser 類內部調用UserDao 對象查詢數據並指派頁面顯示數據,核心代碼如下:
public class User { private int id; private String name; private String number; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
3.表示層
輸出頁userlist.jsp ,使用EL 和JSTL 輸出查詢結果,核心代碼如下:
import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; 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.dao.User; import com.dao.UserDao; public class ListUser extends HttpServlet { public ListUser() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); int pageNo = 1; UserDao userdao=new UserDao(); List<User> lists=new ArrayList<User>(); String pageno=request.getParameter("pageNos"); if(pageno != null){ pageNo=Integer.parseInt(pageno); } lists=userdao.listUser(pageNo); int recordCount=userdao.getPage(); request.setAttribute("recordCount", userdao.getPage()); request.setAttribute("listss", lists); request.setAttribute("pageNos", pageNo); request.getRequestDispatcher("userlist.jsp").forward(request, response); } public void init() throws ServletException { // Put your code here } }
以上所述是小編給大家介紹的Java Web 簡單的分頁顯示實例,希望對大家有幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對PHP中文網站的支持!