服务器之家

服务器之家 > 正文

Java Web 简单的分页显示实例代码

时间:2020-05-21 11:17     来源/作者:没头没脑没烦恼

本文通过两个方法:(1)计算总的页数。 (2)查询指定页数据,实现简单的分页效果。

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

先给大家展示下效果图:

Java Web 简单的分页显示实例代码

题外话:该分页显示是用 “表示层-控制层-DAO层-数据库”的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步。废话不多说了,开始进入主题,详细步骤如下所示:

1.DAO层-数据库

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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();
}
}
}
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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;
}
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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.控制层

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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.表示层

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<%@ 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>

以上所述是小编给大家介绍的Java Web 简单的分页显示实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

标签:

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部