java报表分页例子_Java Web 简单的分页显示实例代码

本文展示了如何在JavaWeb应用中实现简单的数据库分页查询。通过DAO层的UserDao类,利用JDBCUtils工具类进行数据库连接与关闭,实现计算总页数和查询指定页数据的功能。控制层通过ListUser类调用DAO方法,获取数据并传递给表示层的userlist.jsp页面展示。JSP页面使用EL和JSTL输出查询结果,实现了动态分页显示。
摘要由CSDN通过智能技术生成

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

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

先给大家展示下效果图:

3bb5c2e6bca65c7b0a008b66d8b3c464.png

题外话:该分页显示是用 “表示层-控制层-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";

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() 分别用来计算总页数和查询指定页的数据,核心代码如下:

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 listUser(int pageNo){

PreparedStatement pstmt=null;

ResultSet result=null;

List list=new ArrayList();

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 类用于存储查询到的数据,核心代码如下:

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 lists=new ArrayList();

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 输出查询结果,核心代码如下:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'userlist.jsp' starting page

th,td{width: 150px;border: 2px solid gray;text-align: center;}

body{text-align: center;}

a{text-decoration: none;}

table {border-collapse: collapse;}

图书信息

书号书名库存量
${person.id}${person.name }${person.number }

首页

上一页

下一页

末页

共${recordCount}页 &nbsp

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值