JDBC应用 分页展示 MySQL数据库用户信息

效果图:
index.jsp(你没看错就是这么直男展示)
在这里插入图片描述
userServlet?page=1页面
在这里插入图片描述
userServlet?page=2页面
在这里插入图片描述
userServlet?page=3页面
在这里插入图片描述

代码:
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <a href="userServlet">查看用户信息</a>
  </body>
</html>

showUser.jsp

<%@ page import="cn.test.UserInfoList" %>
<%@ page import="cn.test.UserInfoTrace" %>
<%@ page import="java.util.Vector" %>
<%@ page import="java.util.List" %>
<%@ page import="cn.jdbc.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <table>
        <tr>
            <td align="center" colspan="4">展示所有用户信息</td>
        </tr>
        <tr>
            <td>ID</td>
            <td>用户名</td>
            <td>密码</td>
            <td>邮箱</td>
        </tr>
        <%
            List<User> list = (List<User>) request.getAttribute("list");
            for (User user : list) {
        %>
        <tr>
            <td><%=user.getId()%></td>
            <td><%=user.getUsername()%></td>
            <td><%=user.getPassword()%></td>
            <td><%=user.getEmail()%></td>
        </tr>
        <%
            }
        %>
        <tr>
            <td colspan="4">
                <%=request.getAttribute("bar")%>
            </td>
        </tr>
    </table>
</body>
</html>

User.java

package cn.jdbc;

public class User {
    public static final int PAGE_SIZE = 2;

    private int id;
    private String username;
    private String password;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

UserDao.java

package cn.jdbc;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    //获取数据库连接
    public static Connection getConnecion() {
        Connection conn = null;

        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/showUser";
            String user = "root";
            String password = "qiuqiuqiu";
            conn = (Connection) DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }

    //分页查询用户
    public List<User> find(int page) {
        List<User> list = new ArrayList<>();
        Connection conn = getConnecion();
        String sql = "select * from t_user order by id desc limit ?,?";
        try{
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, (page-1) * User.PAGE_SIZE);
            ps.setInt(2, User.PAGE_SIZE);
            ResultSet rs = ps.executeQuery();

            while(rs.next()){
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setEmail(rs.getString("email"));
                list.add(user);
            }
            rs.close();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return list;
    }


    public int findCount() {
        int count = 0;
        Connection conn = getConnecion();
        String sql = "select count(*) from t_user";
        try{
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            if(rs.next()){
                count = rs.getInt(1);
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return count;
    }
}

userServlet.java

package cn.jdbc;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//servlet注解
@WebServlet("/userServlet")
public class userServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int currPage = 1;
        int pages;
        int count;

        if(req.getParameter("page") != null){
            currPage = Integer.parseInt(req.getParameter("page"));
        }

        //实例化dao
        UserDao dao = new UserDao();

        //查询本页所有用户信息
        List<User> list = dao.find(currPage);

        req.setAttribute("list", list);

        count = dao.findCount();

        if(count % User.PAGE_SIZE == 0){
            pages = count / User.PAGE_SIZE;
        }else{
            pages = count / User.PAGE_SIZE + 1;
        }

        StringBuffer sb = new StringBuffer();

        for(int i=1; i<=pages; i++){
            if(i == currPage){
                sb.append("[").append(i).append("]");
            }else{
                sb.append("<a href='userServlet?page=").append(i).append("'>").append(i).append("</a>");
            }
            sb.append(" ");
        }

        //将分页条的字符串放到request中
        req.setAttribute("bar", sb.toString());

        //转发到product_list.jsp页面
        req.getRequestDispatcher("showUser.jsp").forward(req, resp);
    }
}

发布了46 篇原创文章 · 获赞 1 · 访问量 2411

猜你喜欢

转载自blog.csdn.net/weixin_43708069/article/details/104202133