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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章