首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>JAVA专区>JSP>Jsp分页组件制作实例,可以解决大量的数据问题
Jsp分页组件制作实例,可以解决大量的数据问题
来源: 发布时间:2007-11-09 发布人: 浏览: 人次   字体: [ ]  
以前一都是在用mysql数据库,在mysql里可以用select * from table LIMIT 5,10 实现从数据中间位置取固定长短的数据,当是到了公司里,公司是用是sqlserver 搞了半天发现sqlserver里不支持limit函数,无奈到网上找了找资料 发现了这么一个sql语句
  
SELECT TOP 页大小 *

  FROM Table1

  WHERE (ID NOT IN

  (SELECT TOP 页大小*页数 id

  FROM 表

  ORDER BY id))

ORDER BY ID

试了一下很是不错,而且还可以解决大量的数据分页,但是用这个的话你必须在建立表的时候有个“id”字段,并且它为你表的主键。在这里我把它编写成了组件,下面给大家看我的具体实现。
/*
 * Pagination.java
 *
 * Created on 2007年11月1日, 下午1:13
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package cn.CCmingzhou.jsp;

import java.sql.SQLException;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.ResultSet;
import cn.CCmingzhou.db.MsManager;

/**
 *冷漠大神 qq 361619004
 * @author Angel
 */
public class Pagination extends HttpServlet{
   
    /** Creates a new instance of Pagination */
    public Pagination() {
    }
   
    private int pageSize=0;
    private String table="";
    private void setTable(String s)
    {
        this.table=s;
    }
    private String getTable()
    {
        return table;
    }
     /**
     *首页
     *参数说明 request 传入jsp内置的request对象 current 当前页 例:比如你现在在index.jsp页 那你就 XX.top(request,"index.jsp"),当然你也可以懒的写法XX.top(request,"")这么写也可以实现相同的功能
     */
    public String top(HttpServletRequest request,String current)
    {
       request.setAttribute("info","0");
       return "<a href="+current+"?page="+(String)request.getAttribute("info")+">首页</a> ";
    }
    /**
     *上一页
     * 参数说明 request 传入jsp内置的request对象 current 当前页 例:比如你现在在index.jsp页 那你就 XX.shang(request,"index.jsp"),当然你也可以懒的写法XX.shang(request,"")这么写也可以实现相同的功能
     *yema 这个参数就是你当前的页码 你可以在你的my.jsp 这么调用 String pages=request.getParameter("page") 再把pages传到yema 里就一切 OK 了
     */
    public String shang(HttpServletRequest request,String current,String yema)
    {
       int i=Integer.parseInt(yema);
       if(i>0)
           i--;
       String s=""+i;
       request.setAttribute("info",s);
       return "<a href="+current+"?page="+(String)request.getAttribute("info")+">上一页</a> ";
    }
    /**
     *下一页
     * 参数说明 request 传入jsp内置的request对象 current 当前页 例:比如你现在在index.jsp页 那你就 XX.xia(request,"index.jsp"),当然你也可以懒的写法XX.xia(request,"")这么写也可以实现相同的功能
     *yema 这个参数就是你当前的页码 你可以在你的my.jsp 这么调用 String pages=request.getParameter("page") 再把pages传到yema 里就一切 OK 了
     */
    public String xia(HttpServletRequest request,String current,String yema )
    {
        String wei=null;
       MsManager ms=new MsManager();
       ResultSet rs=ms.query("select count(*) as a from  "+this.getTable());
        try {
            if(rs.next())
            {
                wei=rs.getString("a");
             }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
       int ii=0;
       if(wei!=null)
       {
           ii=Integer.parseInt(wei);
           ii=ii/this.getPageSize();
       }
       
      int i=Integer.parseInt(yema);
      if(i<ii)
        i++;
      String s=""+i;
      request.setAttribute("info",s);
      ms.close();
       return "<a href="+current+"?page="+(String)request.getAttribute("info")+">下一页</a> ";
    }
     /**
     *尾页
     *参数说明 request 传入jsp内置的request对象 current 当前页 例:比如你现在在index.jsp页 那你就 XX.bottom(request,"index.jsp"),当然你也可以懒的写法XX.bottom(request,"")这么写也可以实现相同的功能
     */
    public String bottom(HttpServletRequest request,String current)
    {
       String wei=null;
       MsManager ms=new MsManager();
       ResultSet rs=ms.query("select count(*) as a from  "+this.getTable());
        try {
            if(rs.next())
            {
                wei=rs.getString("a");
             }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
       int ii=0;
       if(wei!=null)
       {
           ii=Integer.parseInt(wei);
           ii=ii/this.getPageSize();
       }
       wei=""+ii;
       request.setAttribute("info",wei);
       ms.close();
       return "<a href="+current+"?page="+(String)request.getAttribute("info")+">尾页</a> ";
    }

    private void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    private int getPageSize()
    {
        return this.pageSize;
    }
   
     /**
     *返回sql语句
     *参数说明 pageSize 这个参数是指你每页想显示几条数据 比如说 把10 传进去就会返回10条记录的结果集 tableName 这个没有说明好说的啦 就是把你想要操作的表 的名字传进来就行了
     *yema 这个参数就是你当前的页码 你可以在你的my.jsp 这么调用 String pages=request.getParameter("page") 再把pages传到yema 里就一切 OK 了
     */
    public String getSqlASC(int pageSize,String tableName,String yema) {
        this.setTable(tableName);
        this.setPageSize(pageSize);
        int i=0;
        int temp=0;
        if(yema!=null&&!yema.equals(""))
        {
            i=Integer.parseInt(yema);
            temp=pageSize*i;
        }
        return "select top "+pageSize+" * from "+tableName+" where (id not in (select top "+temp+" id from "+tableName+" order by id)) order by id ";
    }
     /**
     *返回sql语句 按照你的主键id值倒序 输出
     *参数说明 pageSize 这个参数是指你每页想显示几条数据 比如说 把10 传进去就会返回10条记录的结果集 tableName 这个没有说明好说的啦 就是把你想要操作的表 的名字传进来就行了
     *yema 这个参数就是你当前的页码 你可以在你的my.jsp 这么调用 String pages=request.getParameter("page") 再把pages传到yema 里就一切 OK 了
     */
    public String getSqlDESC(int pageSize,String tableName,String yema) {
        this.setPageSize(pageSize);
        this.setTable(tableName);
        int i=0;
        int temp=0;
        if(yema!=null&&!yema.equals(""))
        {
            i=Integer.parseInt(yema);
            temp=pageSize*i;
        }
        return "select top "+pageSize+" * from "+tableName+" where (id not in (select top "+temp+" id from "+tableName+" order by id desc)) order by id desc";
    }
   
}

这里我简单的对这个类做一下解说
import java.sql.SQLException;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.ResultSet;
import cn.CCmingzhou.db.MsManager;

这里必须要引入servlet的jar包 否则你在编译的时候会出错
至于cn.CCmingzhou.db.MsManager; 这个类的引用是对数据库的操作的,这个类里我对数据库简单的做了一下封装,包扩对数据库的 增删该查。
其他的方法我都有写注释,而且很很详细了,你可以把它打成jar包,下面说下怎么去用它,你直接把这个类引用到你的jsp页里,给大家个例子
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="java.sql.ResultSet" %>
<jsp: useBean id="db" scope="page" class="cn.CCmingzhou.db.MsManager">
</jsp:useBean>
<jsp:useBean id="jsp" scope="page" class="cn.CCmingzhou.jsp.Pagination">
</jsp:useBean>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

    <%
        String s=request.getParameter("page");
        if(s==null)
            s="0";
        //首先必须得用request.getParameter("page");获取到当前的页码
        //可能有人会问了 page是怎么出来的啊?其实要是细心看那个类的朋友就
        //就不会有这么的疑问了,没错我们的分页组件的动态生成的
        ResultSet rs=db.query(jsp.getSqlASC(10,"love",s));
        //db. Query()这个方法是我封装好的,如果你没有的话 那么你就写一个方法
         //传进去一个查询的sql语句返回一个ResultSet 很简单 这里不提了
         // jsp.getSqlASC(10,"love",s) 这个才是终点和大家说的 这里面的10 代表是你
        //想一页显示几条数据 “love”这则是你的biao的名字 比如说你在数据库的 test表
       //test    s则是当前的页码 因为我们的分页是自动生成的嘛 :)
        while(rs.next())
        {
            out.println(rs.getString("id"));
            out.println(rs.getString("name"));
            out.println(rs.getString("password")+"<br>");
        }
        out.println(jsp.top(request,"")+jsp.shang(request,"",s)+jsp.xia(request,"",s)+jsp.bottom(request,""));
//这里给给大家解说一下 jsp.top(request,"") 这个方法,这个方法会返回一个String类型
//的字符串 <a href=?page=0>首页</>在浏览器里就会 首页 这么一个超连接 传参的说明
//我在类里都有明确的注释 后头看看吧
        db.close();
    %>
想看结果的话,自己运行一下试试吧,我相信当你看到结构的话你一定会爱上它的


相 关 文 章   发布商链接
·通过流或利用jspsmartupload.jar实现...
·使用struts upload包进行文件上传的...
·八步实现JSP报表打印
·基于JSP的ajax用户注册验证代码
·JSP实现统计当前在线人数的实例代码
·祥解JSP中的标签库
·经验总结java利用jacob操作word文件
·Ajax+servlet实现页面无刷新显示随机...
·JSP防止表单重复提交的三种方案
·jsp+ajax技术实现行政区划代码三级关...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·Jsp实现网站用户注册使用激活
·JSP彩色验证码生成实例代码
·Java使用ANT在线编译不用重启...
·jsp利用Session防止表单重复...
·Java防止非法和重复表单提交...
·JSP报表打印的一种简单解决方
·Servlet 采用forward 时,页面
·jsp生成验证码图片的程序
·jsp+ajax技术实现行政区划代...
·JSP防止表单重复提交的三种方
·Ajax+servlet实现页面无刷新...
·经验总结java利用jacob操作wo...
·祥解JSP中的标签库
·JSP实现统计当前在线人数的实
·基于JSP的ajax用户注册验证代
热 门 文 章
·经验总结java利用jacob操作wo...
·jsp+ajax技术实现行政区划代...
·使用struts upload包进行文件...
·基于JSP的ajax用户注册验证代...
·通过流或利用jspsmartupload....
·jsp利用Session防止表单重复...
·Jsp页面列表组件框架设计
·Java防止非法和重复表单提交...
·Ajax+servlet实现页面无刷新...
·JSP防止表单重复提交的三种方...
·八步实现JSP报表打印
·JSP上传图片的代码提供
·实现jsp页面二级下拉框联动,...
·实例代码讲解jsp上传图片并过...
·实例讲解jsp生成静态网页代码...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .