博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java web 简单的分页显示
阅读量:5217 次
发布时间:2019-06-14

本文共 8026 字,大约阅读时间需要 26 分钟。

题外话:该分页显示是用 “表示层-控制层-DAO层-数据库”的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步。

思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来。

重点:两个方法:(1)计算总的页数。 (2)查询指定页数据。

 

1.DAO层-数据库

JDBCUtils 类用于打开和关闭数据库,核心代码如下:

1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6  7 public class JDBCUtils { 8     private Connection conn=null; 9     private PreparedStatement pstmt=null; 10     11     12     /**13      * connect 连接数据库14      * @return15      */16     public Connection connect(){17         String user="root";18         String password="1234";19         String driverClass = "com.mysql.jdbc.Driver";20         String jdbcUrl = "jdbc:mysql://localhost:3306/book";21         22         try {23             Class.forName(driverClass);24             conn = DriverManager.getConnection(jdbcUrl, user, password);25         } catch (Exception e) {26             // TODO Auto-generated catch block27             e.printStackTrace();28         }29         return conn;30         31     }32     33     /**34      * close 关闭数据库35      * @param conn36      * @param pstmt37      * @param resu38      */39     public void close(Connection conn,PreparedStatement pstmt,ResultSet result){40         if(conn != null){41             try {42                 conn.close();43             } catch (SQLException e) {44                 // TODO Auto-generated catch block45             }46         }47         if(pstmt != null){48             try {49                 pstmt.close();50             } catch (SQLException e) {51                 // TODO Auto-generated catch block52                 e.printStackTrace();53             }54         }55         if(result != null){56             try {57                 result.close();58             } catch (SQLException e) {59                 // TODO Auto-generated catch block60                 e.printStackTrace();61             }62         }63     }64 65 }

UserDao 类中的方法 getPage() 和方法 listUser() 分别用来计算总页数和查询指定页的数据,核心代码如下:

1 import java.sql.Connection; 2 import java.sql.PreparedStatement; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.ArrayList; 6 import java.util.List; 7  8 import com.db.JDBCUtils; 9 10 public class UserDao {11     /**12      * 计算总的页数13      * @return14      */15     public int getPage(){16         int recordCount=0,t1=0,t2=0;17         PreparedStatement pstmt=null;18         ResultSet result=null;19         JDBCUtils jdbc=new JDBCUtils();20         Connection conn=jdbc.connect();21         String sql="select count(*) from books";22         try {23             pstmt=conn.prepareStatement(sql);24             result=pstmt.executeQuery();25             result.next();26             recordCount=result.getInt(1);27             t1=recordCount%5;28             t2=recordCount/5;29         } catch (Exception e) {30             // TODO Auto-generated catch block31             e.printStackTrace();32         }finally{33             jdbc.close(conn, pstmt, result);34         }35         if(t1 != 0){36             t2=t2+1;37         }38         39         return t2;40     }41     42     /**43      * 查询指定页的数据44      * @param pageNo45      * @return46      */47     public List
listUser(int pageNo){48 PreparedStatement pstmt=null;49 ResultSet result=null;50 List
list=new ArrayList
();51 int pageSize=5;52 int page=(pageNo-1)*5;53 JDBCUtils jdbc=new JDBCUtils();54 Connection conn=jdbc.connect();55 String sql="select * from books order by id limit ?,?";56 try {57 pstmt=conn.prepareStatement(sql);58 pstmt.setInt(1, page);59 pstmt.setInt(2, pageSize);60 result=pstmt.executeQuery();61 while(result.next()){62 User user=new User();63 user.setId(result.getInt(1));64 user.setName(result.getString(2));65 user.setNumber(result.getString(3));66 list.add(user);67 68 }69 } catch (Exception e) {70 // TODO Auto-generated catch block71 e.printStackTrace();72 }finally{73 jdbc.close(conn, pstmt, result);74 }75 return list;76 }77 78 }

User 类用于存储查询到的数据,核心代码如下:

1 public class User { 2     private int id; 3     private String name; 4     private String number; 5     public int getId() { 6         return id; 7     } 8     public void setId(int id) { 9         this.id = id;10     }11     public String getName() {12         return name;13     }14     public void setName(String name) {15         this.name = name;16     }17     public String getNumber() {18         return number;19     }20     public void setNumber(String number) {21         this.number = number;22     }23 }

 

2.控制层

ListUser 类内部调用 UserDao 对象查询数据并指派页面显示数据,核心代码如下:

1 import java.io.IOException; 2 import java.io.PrintWriter; 3 import java.util.ArrayList; 4 import java.util.List; 5  6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 import com.dao.User;12 import com.dao.UserDao;13 14 public class ListUser extends HttpServlet {15     public ListUser() {16         super();17     }18 19     public void destroy() {20         super.destroy(); // Just puts "destroy" string in log21         // Put your code here22     }23 24     public void doGet(HttpServletRequest request, HttpServletResponse response)25             throws ServletException, IOException {26 27         doPost(request, response);28     }29 30     public void doPost(HttpServletRequest request, HttpServletResponse response)31             throws ServletException, IOException {32 33         34         response.setCharacterEncoding("utf-8");35         int pageNo = 1;36         UserDao userdao=new UserDao();37         List
lists=new ArrayList
();38 String pageno=request.getParameter("pageNos");39 if(pageno != null){40 pageNo=Integer.parseInt(pageno);41 }42 lists=userdao.listUser(pageNo);43 int recordCount=userdao.getPage();44 request.setAttribute("recordCount", userdao.getPage());45 request.setAttribute("listss", lists);46 request.setAttribute("pageNos", pageNo);47 request.getRequestDispatcher("userlist.jsp").forward(request, response);48 }49 50 public void init() throws ServletException {51 // Put your code here52 }53 54 }

 

3.表示层

输出页面 userlist.jsp ,使用 EL 和 JSTL 输出查询结果,核心代码如下:

1 <%@ page language="java" import="java.util.*"  pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>   4 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 5 <% 6 String path = request.getContextPath(); 7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 8 %> 9 10 11 12   13     14     15     My JSP 'userlist.jsp' starting page16     17     
18
19
20
21
22
25 31 32 33 34

图书信息

35
36
37
书号 书名 库存量
38
40
39
41
42
43
44
45 46
${person.id} ${person.name } ${person.number }
47
48 49
50
首页51
上一页52
53 54
55
下一页56
末页57
58 59
60

共${recordCount}页 &nbsp61 页62 63

64
65 66

 

4.效果图

转载于:https://www.cnblogs.com/k-yang/p/5612116.html

你可能感兴趣的文章
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>