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

网友投稿 217 2023-07-13


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";

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

<%@ 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+"/";

%>


首页

上一页

下一页

末页

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:EasyUI在表单提交之前进行验证的实例代码
下一篇:Java字符流与字节流区别与用法分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~