这篇文章主要介绍了Java Web 简单的分页显示实例代码的相关资料,本文通过,计算总的页数和查询指定页数据两个方法实现分页效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
本文通过两个方法:(1)计算总的页数。 (2)查询指定页数据,实现简单的分页效果。
思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来。
先给大家展示下效果图:
题外话:该分页显示是用 “表示层-控制层-DAO层-数据库”的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步。废话不多说了,开始进入主题,详细步骤如下所示:
1.DAO层-数据库
JDBCUtils 类用于打开和关闭数据库,核心代码如下:
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"
;
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();
}
}
}
}
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;
}
}
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 对象查询数据并指派页面显示数据,核心代码如下:
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.表示层
<%@ page language=
"java"
import
=
"java.util.*"
pageEncoding=
"UTF-8"
%>
<%
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>