Servlet+JSP使用JDBC连接数据库实现分页

使用jdbc对mysql查询数据实现分页并且显示在前段页面。在开始前创建一个访问数据库的工具类DBUtil

/**
*数据库工具类
* @author 13468
*
*/
public class DBUtil {
     
     private static    DBUtil dbUtil=new DBUtil();
     
     private DBUtil() {
         try {
              Class.forName("com.mysql.jdbc.Driver");
         } catch (ClassNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
         }
     }
     public static Connection getConnection() throws  SQLException {
         String  url="jdbc:mysql://localhost:3306/booksys?useUnicode=true&characterEncoding=utf-8";
         return  DriverManager.getConnection(url,"root","root");
     }
}

  在dao层建立数据库jdbc访问层接口和访问接口的实现类访问接口,建立三个方法

//获得用户总数
     int getUserCount();
     
     //获取总页数
     int getUserPage(int PageeSize);
     
     //获取分页数据
     List<UserInfo> getUsersPages(int currentPage,int  pageSize);

访问接口实现,来实现上面接口的方法

/**
      * 获取数据总条数
      */
     @Override
     public int getUserCount() {
         Connection connection=null;
         PreparedStatement preparedStatement=null;
         ResultSet resultSet=null;
         int count=0;
         
         try {
              connection=DBUtil.getConnection();
              String sql="select count(*) from  user";
              preparedStatement=(PreparedStatement)  connection.prepareStatement(sql);
              resultSet=preparedStatement.executeQuery();
              if(resultSet.next()) {
                  count=resultSet.getInt(1);
              }
         } catch (SQLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
         }finally {
              if(resultSet!=null) {
                  try {
                       resultSet.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
              if(preparedStatement!=null) {
                  try {
                       preparedStatement.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
              if(connection!=null) {
                  try {
                       connection.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
         }
         
         return count;
     }
/**
      * 算出总页数
      */
     @Override
     public int getUserPage(int PageeSize) {
         int count=getUserCount();//获取总条数
         int pages=(count+PageeSize-1)/PageeSize;
         return pages;
     }
     //获取分页数据
     @Override
     public List<UserInfo> getUsersPages(int  currentPage, int pageSize) {
         Connection connection=null;
         PreparedStatement preparedStatement=null;
         ResultSet resultSet=null;
         List<UserInfo>list=new ArrayList<UserInfo>();
         
         try {
              connection=DBUtil.getConnection();
              String sql="select * from user limit  ?,?";
              preparedStatement=(PreparedStatement)  connection.prepareStatement(sql);
              preparedStatement.setInt(1,  (currentPage-1)*pageSize);
              preparedStatement.setInt(2, pageSize);
              resultSet=preparedStatement.executeQuery();
              while (resultSet.next()) {
                  int id=resultSet.getInt(1);
                  String  username=resultSet.getString(2);
                  String  password=resultSet.getString(3);
                  String name=resultSet.getString(4);
                  String email=resultSet.getString(5);
                  String phone=resultSet.getString(6);
                  list.add(new  UserInfo(id,username,password,name,email,phone));
              }
         }catch (SQLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
         }finally {
              if(resultSet!=null) {
                  try {
                       resultSet.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
              if(preparedStatement!=null) {
                  try {
                       preparedStatement.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
              if(connection!=null) {
                  try {
                       connection.close();
                  } catch (SQLException e) {
                       e.printStackTrace();
                  }
              }
         }
              
         return list;
         }

service层省略,但是这个例子是创建了service层的,下面再创建控制层的servlet来调用上面的方法

protected void doPost(HttpServletRequest request,  HttpServletResponse response) throws ServletException,  IOException {
           /**
          * 分页显示用户信息
          */
         if (action.equals("showusers")) {
              String  cupage=request.getParameter("currentPage");
              //获取总页数
              int pages=service.getUserPage(pageSize);
              //获取当前页码
              currentPage=(cupage==null)?1:Integer.parseInt(cupage);
              //如果当前页码小于1,则赋值为1,表示为首页
              if(currentPage<1) {
                  currentPage=1;
              }
              //如果当前页数大于总页数,则赋值为总页数值,表示为尾页
              if(currentPage>pages) {
                  currentPage=pages;
              }
              //将当前的页码保存在session中
              request.getSession().setAttribute("currentPage",  currentPage);
              //将总页数保存在session中
              request.getSession().setAttribute("pages", pages);
              
              //准备分页的user数据
              List<UserInfo>  userInfo=service.getUsersPages(currentPage, pageSize);
              //将user放入到session中
              request.getSession().setAttribute("userInfo",  userInfo);
              //跳转到userman.jsp页面
              response.sendRedirect("admin/userman.jsp");
         }
}

通过前面的准备,现在在前段页面JSP中接收页码

 <div id="page" class="page_div">
              <a  href="/BookSystem/UserServlet?action=showusers&currentPage=1" id="firstpage">首页</a>
              <a  href="/BookSystem/UserServlet?action=showusers&currentPage=${currentPage-1 }" id="prevpage">上一页</a>
              <span>${currentPage }/${pages }</span>
              <a  href="/BookSystem/UserServlet?action=showusers&currentPage=${currentPage+1 }" id="nextpage">下一页</a>
              <a  href="/BookSystem/UserServlet?action=showusers&currentPage=${pages }" id="lastpage">末页</a>
  </div>

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的学生管理系统的示例代码,使用 JDBC 连接数据库Servlet 处理请求,JSP 显示数据: 1. 数据库表设计 创建一个名为 student 的表,包含以下字段: - id (主键) - name (学生姓名) - age (学生年龄) - gender (学生性别) - score (学生成绩) 2. 数据库连接工具类 创建一个名为 DBHelper 的 Java 类,用于连接数据库,代码如下: ``` import java.sql.*; public class DBHelper { private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/test"; private static final String USER = "root"; private static final String PASSWORD = "123456"; static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 3. Servlet 类 创建一个名为 StudentServlet 的 Java 类,用于处理请求,代码如下: ``` import java.io.IOException; import java.sql.*; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/student") public class StudentServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Student> students = new ArrayList<Student>(); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DBHelper.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM student"); while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setGender(rs.getString("gender")); student.setScore(rs.getDouble("score")); students.add(student); } request.setAttribute("students", students); request.getRequestDispatcher("/student.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } finally { DBHelper.close(conn, stmt, rs); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` 4. JSP 页面 创建一个名为 student.jspJSP 页面,用于显示数据,代码如下: ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生管理系统</title> </head> <body> <table> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>成绩</th> </tr> <% for (Student student : (List<Student>) request.getAttribute("students")) { %> <tr> <td><%= student.getId() %></td> <td><%= student.getName() %></td> <td><%= student.getAge() %></td> <td><%= student.getGender() %></td> <td><%= student.getScore() %></td> </tr> <% } %> </table> </body> </html> ``` 5. 实体类 创建一个名为 Student 的 Java 类,用于封装学生数据,代码如下: ``` public class Student { private int id; private String name; private int age; private String gender; private double score; 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } } ``` 以上就是一个简单的基于 JDBCServletJSP 的学生管理系统的示例代码。当然,这只是一个简单的示例,实际开发中应该考虑更多的情况,比如异常处理、数据验证、分页查询等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值