In diesem Artikel werden hauptsächlich die relevanten Informationen zum Beispielcode für die einfache Paging-Anzeige in Java vorgestellt. Der Paging-Effekt wird durch die Berechnung der Gesamtzahl der Seiten und die Abfrage der angegebenen Seitendaten erreicht benötigte Freunde können sich auf
beziehen. Dieser Artikel verwendet zwei Methoden: (1) Berechnen Sie die Gesamtzahl der Seiten. (2) Fragen Sie die angegebenen Seitendaten ab, um einen einfachen Paging-Effekt zu erzielen.
Idee: Zunächst müssen Sie eine Paging-Abfragemethode im DAO-Objekt bereitstellen, um die Daten der angegebenen Seite auf der Präsentationsebene zu finden Verwenden Sie EL-Ausdrücke und JSTL, um die Daten abzufragen. Die Seitendaten werden angezeigt.
Lassen Sie mich Ihnen zuerst die Renderings zeigen:
Off-Topic: Diese Seite wird angezeigt Es wird unter Verwendung der Designidee „Präsentationsschicht-Kontrollschicht-DAO-Schicht-Datenbank“ implementiert. Wenn es einen Bereich gibt, der verbessert werden muss, werden alle ihn vorbringen und gemeinsam lernen und Fortschritte machen. Kommen wir ohne weiteres zum Thema:
1. DAO-Schicht – Datenbank
JDBCUtils Die Klasse wird zum Öffnen und Schließen der Datenbank verwendet. Der Kerncode lautet wie folgt:
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(); } } } }
Die Methode getPage() und die Methode listUser( ) in der UserDao-Klasse werden jeweils zur Berechnung der Gesamtzahl der Seiten und der Daten der angegebenen Seite verwendet. Der Kerncode lautet wie folgt:
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; } }
Die User-Klasse wird zum Speichern der abgefragten Daten verwendet. Der Kerncode lautet wie folgt:
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; } }
2. Kontrollschicht
Die ListUser-Klasse ruft intern UserDao auf. Das Objekt fragt die Daten ab und weist der Seite die Anzeige der Daten zu. Der Kerncode lautet wie folgt:
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 } }
3. Präsentationsebene
Die Ausgabeseite userlist.jsp verwendet EL und JSTL, um Ausgabeabfrageergebnisse. Der Kerncode lautet wie folgt:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'userlist.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <style type="text/css"> th,td{width: 150px;border: 2px solid gray;text-align: center;} body{text-align: center;} a{text-decoration: none;} table {border-collapse: collapse;} </style> </head> <body> <h2 align="center">图书信息</h2> <table align="center"> <tr><td>书号</td><td>书名</td><td>库存量</td></tr> </table> <table align="center"> <c:forEach items="${listss}" var="person"> <tr> <td class="hidden-480">${person.id}</td> <td class="hidden-480">${person.name }</td> <td class="hidden-480">${person.number }</td> </tr> </c:forEach> </table> <br> <c:if test="${pageNos>1 }"> <a href="ListUser?pageNos=1" >首页</a> <a href="ListUser?pageNos=${pageNos-1 }">上一页</a> </c:if> <c:if test="${pageNos <recordCount }"> <a href="ListUser?pageNos=${pageNos+1 }">下一页</a> <a href="ListUser?pageNos=${recordCount }">末页</a> </c:if> <form action="ListUser"> <h4 align="center">共${recordCount}页   <input type="text" value="${pageNos}" name="pageNos" size="1">页 <input type="submit" value="到达"> </h4> </form> </body> </html>
Das Folgende ist ein einfacher Beispielcode für die Java-Web-Paging-Anzeige, der vom Editor eingeführt wurde. Ich hoffe, dass es Ihnen hilfreich sein wird, wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!