• jsp中利用MySQL实现分页技术


    分页是很常用的一种技术,而mysql中对于分页的操作也很简单,今天就说说如何在jsp页面中利用标签来最简化的实现分页:

    链接:MySQL分页技术详解http://blog.csdn.net/u011637069/article/details/49928513

    step1:编写DAO中代码:

    [java] view plain copy
     
    1. public List<Employee> findAll2(int page, int perPageRows) throws Exception {  
    2.     List<Employee> employees = new ArrayList<Employee>();  
    3.     Connection conn = null;  
    4.     try{  
    5.         conn = DBUtil.getConnection();  
    6.         PreparedStatement prep =   
    7.             conn.prepareStatement("select id,name,salary,age from t_emp limit ?,?");  
    8.         prep.setInt(1, (page-1)*perPageRows);  
    9.         prep.setInt(2,perPageRows);  
    10.         ResultSet rs = prep.executeQuery();  
    11.         while(rs.next()){  
    12.             int id = rs.getInt("id");  
    13.             String name = rs.getString("name");  
    14.             double salary = rs.getDouble("salary");  
    15.             int age = rs.getInt("age");  
    16.             Employee e = new Employee(id, name, salary, age);  
    17.             employees.add(e);  
    18.         }  
    19.     }catch (Exception e) {  
    20.         e.printStackTrace();  
    21.         throw e;  
    22.     }finally{  
    23.         DBUtil.close(conn);  
    24.     }  
    25.     return employees;  
    26. }  
    [java] view plain copy
     
    1. public int findPages(int perPageRows) throws Exception {  
    2.     int totalPage = 0;  
    3.     Connection conn = null;  
    4.     try{  
    5.         conn = DBUtil.getConnection();  
    6.         Statement state = conn.createStatement();  
    7.         ResultSet rs = state.executeQuery("select count(*) from t_emp");  
    8.         int rows = 0;  
    9.         if(rs.next()){  
    10.             rows = rs.getInt(1);  
    11.         }  
    12.         if(rows % perPageRows == 0){  
    13.             totalPage = rows / perPageRows;  
    14.         }else{  
    15.             totalPage = rows / perPageRows + 1;  
    16.         }  
    17.     }catch (Exception e) {  
    18.         e.printStackTrace();  
    19.         throw e;  
    20.     }finally{  
    21.         DBUtil.close(conn);  
    22.     }  
    23.     return totalPage;  
    24. }  

    step2:编写servlet代码:

    [java] view plain copy
     
    1. EmployeeDAO dao = (EmployeeDAO) Factory.getInstance("EmployeeDAO");  
    2. List<Employee> employees = null;  
    3. String pageStr = request.getParameter("page");  
    4.   
    5. int perPageRows = 5;  
    6. int totalPage = 0;  
    7. int page = 1;  
    8. try {  
    9.     totalPage = dao.findPages(perPageRows);  
    10.     if(pageStr!=null){  
    11.         page = Integer.parseInt(pageStr);  
    12.     }  
    13.     if(page<1 || page>totalPage){  
    14.         page = 1;  
    15.     }  
    16.     employees = dao.findAll2(page,perPageRows);  
    17.     //转发  
    18.     //step1,绑定数据  
    19.     request.setAttribute("employees",employees);  
    20.     request.setAttribute("page",page);  
    21.     request.setAttribute("totalPage",totalPage);  
    22.     //step2,获得转发器  
    23.     RequestDispatcher rd = request.getRequestDispatcher("/emplist.jsp");  
    24.     //step3,转发  
    25.     rd.forward(request, response);  
    26. catch (Exception e1) {  
    27.     e1.printStackTrace();  
    28.     //1-转发处理异常  
    29.     //request.setAttribute("syserror", "系统正忙,请稍后重试!");  
    30.     //request.getRequestDispatcher("error.jsp").forward(request, response);  
    31.     //2-交给容器处理  
    32.     throw new ServletException(e1);  
    33. }  


    step3:jsp代码:

    [html] view plain copy
     
    1. <c:choose>  
    2.     <c:when test="${page>1}">  
    3.         <href="list.do?page=${page-1}">上一页</a>  
    4.     </c:when>  
    5.     <c:otherwise>  
    6.         上一页  
    7.     </c:otherwise>  
    8. </c:choose>  
    9. 第${page}页  
    10. <c:choose>  
    11.     <c:when test="${page<totalPage}">  
    12.         <href="list.do?page=${page+1}">下一页</a>  
    13.     </c:when>  
    14.     <c:otherwise>  
    15.         下一页  
    16.     </c:otherwise>  
    17. </c:choose>  
    18. 共${totalPage}页  
  • 相关阅读:
    JavaScript实现继承机制(4)——构造函数+原型链混合方式
    NodeJS”热部署“代码,实现动态调试
    初识NodeJS,一个基于GoogleV8引擎的Javascript运行环境
    那些你不得不知道的JavaScript 变量命名规则
    JavaScript声明全局变量的三种方式
    JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
    JavaScript实现继承机制(1)—— 构造函数方法对象冒充
    C# readonly和const
    C# winform增加界面动态加载的流畅性
    C# 正确操作字符串,规避字符串转换所带来的额外开销
  • 原文地址:https://www.cnblogs.com/efforts-will-be-lucky/p/7338432.html
Copyright © 2020-2023  润新知