A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊占江 中级黑马   /  2012-8-5 15:17  /  2246 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我一般都是用SQL来处理分页,大家有没有试过用代码分页。
我分页SQl:
select top 页大小*
from texttable
where(id not in (select top 页大小*(页数-1) id from 表 order by id)
)
order by id
数据库sqlserver

7 个回复

倒序浏览
光有Sql语句就能分吗,页面上的显示呢??? 后台处理上页下页的超链接请求呢? ,分页的PageBean呢?
回复 使用道具 举报
谭威 发表于 2012-8-5 15:44
光有Sql语句就能分吗,页面上的显示呢??? 后台处理上页下页的超链接请求呢? ,分页的PageBean呢? ...

在src或者配置里面解决
回复 使用道具 举报
樊占江 发表于 2012-8-6 23:12
在src或者配置里面解决

这是我实习是自己写的一个分页,用的是mysql,希望能给你点思路吧,我这个写的比较简单了。大家共同奋斗哈。
<%@ page import="java.sql.ResultSet" %>
<%@ page import="com.waps.javabean.ConnDB" %>
<%@ page import="java.sql.SQLException" %>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 12-3-5
  Time: 下午1:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Simple jsp page</title>
      <script type="text/javascript" src="jquery/jquery.min.js"></script>
    <script type="text/javascript" src="jquery/jquery.dataTables.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('#example').dataTable( {
               //"bProcessing": true,
               // "bServerSide": true,
               // "sAjaxSource": "/dataTables.jsp"
               "sPaginationType" : "full_numbers"
            } );
        } );

    </script>


</head>
<body>

<%
    //String ID = session.getId();
    //String yanzhenID = (String) session.getAttribute("sessionID");
   // if (ID.equals(yanzhenID)) {

        int num = 0, count = 0, allPage = 0;
        int currentPage = 1;

        String s = request.getParameter("currentPage");
        try {
            currentPage = Integer.parseInt(s);
        } catch (NumberFormatException e) {
            currentPage = 1;
        }
        // String pageCurrent = request.getParameter("currentPage");


        String numSql = "select count(*) from tb_user";
        ResultSet resultSet = new ConnDB().read(numSql);
        try {
            while (resultSet.next()) {
                num = resultSet.getInt(1);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (currentPage < 1)
            currentPage = 1;
        allPage = (num % 20 == 0) ? (num / 20) : (num / 20 + 1);
        if (currentPage > allPage)
            currentPage = allPage;

        if (currentPage <= allPage) {
            count = (currentPage - 1) * 20;



            String sql = "select * from tb_user  limit " + count + ",20";
           // String sql="select * from tb_user";
            ResultSet rs = new ConnDB().read(sql);
            if (rs == null) {
                out.println("no number");
            } else {


                try {
                    while (rs.next()) {

                        out.println(rs.getString(1)+"\t"  + rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getString(4) + "\t"+"<br>");

                    }

                } catch (SQLException e) {
                    e.printStackTrace();
                }


                out.print("<a href=\"show.jsp?currentPage=1\">首页</a>\n" +
                        "     <a href=\"show.jsp?currentPage=" + (currentPage <= 1 ? 1 : (currentPage - 1)) + "\">上一页</a>\n");
                for (int i = 1; i < allPage; i++)
                    out.print("<a href=\"show.jsp?currentPage=" + i + "\">" + i + "</a>");
                out.print("      <a href=\"show.jsp?currentPage=" + (currentPage >= allPage ? currentPage : (currentPage + 1)) + "\">下一页</a>\n" +
                        "      <a href=\"show.jsp?currentPage=" + allPage + "\">尾页</a>");

                out.print("<form action=\"show.jsp\">\n" +
                        "                                                  <input type=\"text\" name=\"currentPage\">Page\n" +
                        "                                                  <input type=\"submit\" value=\"GO TO\">\n" +
                        "                                            </form>");
                // session.setAttribute("currentPage",new Integer(currentPage));


               // currentPage++;

           }
        }
   // } else {
    //    out.print("<a href=\"login1.jsp?currentPage=1\">已过时,请重新登录</a>");
   // }

%>
</body>
</html>
回复 使用道具 举报
刘向阳 发表于 2012-8-6 23:32
这是我实习是自己写的一个分页,用的是mysql,希望能给你点思路吧,我这个写的比较简单了。大家共同奋斗 ...

谢谢分享!说实话我很少在jsp里面写代码。我觉着那样不安全,所以大多数在SRC或者配置里搞定
回复 使用道具 举报
樊占江 发表于 2012-8-6 23:35
谢谢分享!说实话我很少在jsp里面写代码。我觉着那样不安全,所以大多数在SRC或者配置里搞定 ...

恩,当初学的太浅了,所以就没有再干下去,这不是来培训了嘛。
回复 使用道具 举报
樊占江 发表于 2012-8-6 23:12
在src或者配置里面解决

dao层
  1. /**
  2.          * 根据分页条件得到每页的数据
  3.          * @param beginIndex
  4.          * @return List<Company>
  5.          */
  6.         public List<Company> getResultByLimit(int beginIndex) {
  7.                 String sql="SELECT * FROM companys ORDER BY id LIMIT ?,?";
  8.                 BeanListHandler<Company> beanListHandler=new BeanListHandler<Company>(Company.class);       
  9.                 return         template.findAllData(sql, beanListHandler, beginIndex,Constants.EVERYPAGE);
  10.         }
  11.        
复制代码
service层
        /**
         * 得到简单分页的对象
         * @param nowPage
         * @return
         */
        public Page getPage(int nowPage) {
                Page page =new Page();
               
                        int allCounts=companydao.getCompanysCount();
       
               
                        page.init(nowPage, allCounts);
                        page.setAllCounts(allCounts);
                        page.setNowPage(nowPage);

                        int beginIndex=(nowPage-1)*Constants.EVERYPAGE;//设置查询的开始索引位置
                        page.setResult(companydao.getResultByLimit(beginIndex));

               
                return page;
        }

web层
public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
               
                BusinessServiceImpl         service=new BusinessServiceImpl();
               
                int currentPage=1;
                //获取标志位
               
                //获取当前页的页数
                String scurrentPage=request.getParameter("currentPage");
                if(scurrentPage!=null &&!"".equals(scurrentPage))
                currentPage=Integer.parseInt(scurrentPage);
               
                Page page=service.getPage(currentPage);//调用服务层的方法获取Page对象
               
                request.setAttribute("page",page);//将page对象传递到jsp

               
                request.getRequestDispatcher("/company/list.jsp").forward(request, response);//转发
                页面
  <body>

                  <form action="" method="post">
                          <table border="1" align="center">
                          <input type="hidden" name="flag" id="flag" value="page"/>
                                  <tr>
                                          <td>编号</td><td>客户</td><td>职业编号</td><td>客户来源编号</td><td>客户区域编号</td><td>邮编</td><td>地址</td>
                                  </tr>
                                  <c:forEach items="${page.result }" var="com">
                                  <tr>
                                          <td>${com.id }</td><td>${com.company_name}</td><td>${com.job_name }</td><td>${com.source_name }</td><td>${com.location_name }</td><td>${com.pcode }</td><td>${com.address }</td>
                                  </tr>
                                  </c:forEach>
                          </table>
                          <p align="center">共有${page.allCounts}条记录  共${page.allPages }页  当前是第${page.nowPage }页
                                  <a href="javascript:page(1)">首页</a>
                                  <a href="javascript:page(${page.prePage })">上页</a>
                                  <a href="javascript:page(${page.nextPage })">下页</a>
                                  <a href="javascript:page(${page.allPages })">尾页</a>
                          </p>
                  </form>
  </body>
  <script type="text/javascript">
          function page(currentPage){
                  //<input type="hidden" name="flag" id="flag" value="page"/>
                  //获取标志位的值
                  var flag=document.getElementById("flag").value;
                 
                  var path="${pageContext.request.contextPath }/servlet/SimplePagingServlet?currentPage="+currentPage+"&flag="+flag;
                 
                  window.location=path;
          }
  
  </script>
</html>
回复 使用道具 举报
传智播客 老师讲的分页差不多就是上面那样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马