求一个jsp+oracle简单分页例子

解决方案 »

  1.   

    好吧,我来分享一下我的分页代码。
    首先,我把分页分成了4个部分,LZ 需要把 4个部分分别放到相应的地方。
    html:<tr>
        <td colspan="8" align="left">
        共有${pages}条记录|总计
        <span id="divid">${PageCount}</span>
        页|每页显示
        <select id="page" onchange="cutPage()">
        <c:if test="${v2==5}">
        <option selected>5</option>
        <option>10</option>
        <option>15</option>
        </c:if>
          <c:if test="${v2==10}">
          <option>5</option>
          <option selected>10</option>
          <option>15</option>
          </c:if>
          <c:if test="${v2==15}">
          <option>5</option>
          <option>10</option>
          <option selected>15</option>
          </c:if>
          </select>条
          |<a href="<%=basePath%>infor.do?method=deleteFind&I=1&J=${v2}">首页</a>
          |<a href="<%=basePath%>infor.do?method=deleteFind&I=${v-1 }&J=${v2 }">上一页</a>
          |<a href="<%=basePath%>infor.do?method=deleteFind&I=${v+1 }&J=${v2 }">下一页</a>
          |<a href="<%=basePath%>infor.do?method=deleteFind&I=${PageCount }&J=${v2 }">末页</a> 
          |跳到第<input type="text" id="text1" size="2" value="${v }" onKeyPress="return limitNum(this);"
      >页
          <input type="button" value="Go " onclick="cutPage()">&nbsp;&nbsp;
    </td>
        </tr>---------------------------------------------------------------------------------action:
    public ActionForward deleteFind(ActionMapping mapping, ActionForm form,
    javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) { Object values[] = new Object[10];
    List<?> list =infordao.findAll();
    System.out.println(values.length+"...................");
    System.out.println(list.size()+"------------");
    int pages = list.size();
    System.out.println(pages);
    request.getSession().setAttribute("pages", pages);//总记录放进session
    String a = request.getParameter("I");
    String b = request.getParameter("J");
    int p=infordao.findAll().size();

    if (null == a && null == b) {
    request.getSession().setAttribute("v", 1);
    request.getSession().setAttribute("v2", 5);
    request.getSession().setAttribute("pages", pages);
    int pageCount =getPage(pages, 5);//初始化时有多少页
    request.getSession().setAttribute("PageCount", pageCount);
    List syuser = infordao.findPages(values,0, 5);//初始时默认在第一页
    request.getSession().setAttribute("delete", syuser);
    return mapping.findForward("infor"); } else {
    int i = Integer.parseInt(request.getParameter("I".trim()));
    int j = Integer.parseInt(request.getParameter("J"));
    System.out.println(i + " --------------" + j);
    int q=p/j+1;
    System.out.println("q="+q);
    int pageCount = getPage(pages, j);//初始化时有多少页
    System.out.println(pageCount+"this is the page");
       if (p % j != 0 && i == q) 
       {
       request.getSession().setAttribute("PageCount", pageCount);
    request.getSession().setAttribute("v", i);
    request.getSession().setAttribute("v2", j);

    List<?> syuser2 = infordao.findPages(values, (i-1)*j, p-((i-1)*j));
    request.getSession().setAttribute("delete", syuser2);
    System.out.println("say 1"+(p-((i-1)*j)));
    return mapping.findForward("infor");
       }
    if (i <= pageCount && i > 0) {
    request.getSession().setAttribute("PageCount", pageCount);
    request.getSession().setAttribute("v", i);
    request.getSession().setAttribute("v2", j);

    List<?> syuser2 = infordao.findPages(values, (i-1)*j, j);
    request.getSession().setAttribute("delete", syuser2);
    System.out.println("say2"+(i-1)*j);
    return mapping.findForward("infor");
    } else {
    return mapping.findForward("infor");
    }
    } }
    public int getPage(int i, int j)
    {
    int mod=i%j;
    int pageCount;
    System.out.println(i+"         "+j);
    if(mod==0)
    {
    pageCount=i/j;
    }
    else if(i<j)
    {
    pageCount=1;
    }
    else
    {
    pageCount=i/j+1;
    }
    return pageCount;

    }
    -----------------------------------------------------------------------------------
    hibernate:public List<?>findPages(Object[] values,int i,int j)
    {
    return findByPage("from CatInfor ",null,i,j);


    }

    public List<?> findByPage(String hql, Object[] values, int offset,
    int pageSize) {
    List<?> list = getHibernateTemplate().executeFind(
    getHibernateCallback(hql, values, offset, pageSize));
    return list;
    }
    public HibernateCallback getHibernateCallback(final String hql,
    final Object[] values, final int offset, final int pageSize) { return new HibernateCallback() {
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    Query query = session.createQuery(hql);
    if (values != null)
    for (int i = 0; i < values.length; i++) {
    query.setParameter(i, values[i]);
    }
    List<?> result = query.setFirstResult(offset).setMaxResults(
    pageSize).list();
    return result;
    }
    };
    }
    ---------------------------------------------------------------------------------
    script:<%@  taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><script type="text/javascript">
    var value1,c1,c2;
    function cutPage()
    {var op=document.getElementById("page");
    for(var i=0;i<op.options.length;i++)
    {
    if(op.options[i].selected==true)
    {
    value1=op.options[i].text;
    }
    }
    var x=document.getElementById("text1").value;//第几页
    var n=value1;//每页显示几条
    var m=${pages};//记录总数
    alert(m);if(n*x-m>n)
    {
    alert("没有这么多页!");
    document.getElementById("text1").value=${v};
    return;
    }
    else
    {
    location.href="<%=basePath%>infor.do?method=deleteFind&I="+x+"&J="+value1;}
    }
    function limitNum(obj) {
       if(event.keyCode<47||event.keyCode>57){event.keyCode=0;}    return ;
    } </script>

    希望LZ能认真看完这些代码。东西是因人而异的,知道原理一切都手到擒来。愿圣光与你同在~阿门
      

  2.   

    lz的不错,我也来一段import com.stmcc.test.*;
    import java.sql.* ;
    import java.util.*; 
    public class StuManager { private static StuManager instance = new StuManager() ;

    private StuManager(){} ;

    public static StuManager getInstance(){
    return instance ;
    }
    //  oracle实现分页的查询语句
    // select s_id, s_name, s_age, s_sex, s_class
    // from
    // (
    //   select rownum rn, s_id, s_name, s_age, s_sex, s_class
    //   from
    //     (select s_id, s_name, s_age, s_sex, s_class 
    //      from t_student order by s_id
    //     )where rownum <= 10
    // )where rn > 5 ;
    public PageModel findStudentList(int pageNo, int pageSize){
    PageModel pageModel = null ;
    StringBuffer sql = new StringBuffer() ;
    sql.append("select s_id, s_name, s_age, s_sex, s_class ")
    .append("from")
    .append("(")
    .append("select rownum rn, s_id, s_name, s_age, s_sex, s_class ")
    .append("from")
    .append("(")
    .append("select s_id, s_name, s_age, s_sex, s_class ")
    .append("from t_student order by s_id")
    .append(")")
    .append("where rownum <= ?")
    .append(")")
    .append("where rn > ? ");
    Connection conn = null ;
    PreparedStatement pstmt = null ;
    ResultSet rs = null ;
    try{
    conn = DbUtil.getConnection() ;
    pstmt = conn.prepareStatement(sql.toString()) ;
    pstmt.setInt(1, pageNo*pageSize) ;
    pstmt.setInt(2, (pageNo - 1)*pageSize) ;
    rs = pstmt.executeQuery() ;
    List<Student> stuList = new ArrayList<Student>() ;
    while (rs.next()){
    Student stu = new Student() ;
    stu.setS_id(rs.getString("s_id")) ;
    stu.setS_name(rs.getString("s_name")) ;
    stu.setS_age(rs.getString("s_age")) ;
    stu.setS_sex(rs.getString("s_sex")) ;
    stu.setS_class(rs.getString("s_class")) ;
    stuList.add(stu) ;
    }
    pageModel = new PageModel() ;
    pageModel.setList(stuList) ;
    pageModel.setTotalRecords(getTotalRecords(conn)) ;
    pageModel.setPageSize(pageSize);
    pageModel.setPageNo(pageNo);
    }catch(Exception e){
    e.printStackTrace() ;
    }finally{
    DbUtil.close(rs) ;
    DbUtil.close(pstmt) ;
    DbUtil.close(conn) ;
    }
    return pageModel ;
    }
    /**
     * 取得总记录数
     * @param conn
     * @return
     */
    private int getTotalRecords(Connection conn) 
    throws SQLException {
    String sql = "select count(*) from t_student";
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    int count = 0;
    try {
    pstmt = conn.prepareStatement(sql);
    rs = pstmt.executeQuery();
    rs.next();
    count = rs.getInt(1);
    }finally {
    DbUtil.close(rs);
    DbUtil.close(pstmt);
    }
    return count;
    }
    }
      

  3.   

    <%@ page import="com.stmcc.test.util.*"%>
    <%@ page import="com.stmcc.test.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%>
    <html>
    <head><title>分页展示</title></head>
    <%
    int pageNo = 1 ;
    int pageSize = 5 ;
    String pageNoString = request.getParameter("pageNo") ;
    if(pageNoString != null){
    pageNo = Integer.parseInt(pageNoString) ;
    }
    PageModel pageModel = StuManager.getInstance().findStudentList(pageNo,pageSize) ;
    %>
    <script type="text/javaScript">
    function topPage() {
    window.self.location = "student.jsp?pageNo=<%=pageModel.getTopPageNo()%>";
    }

    function previousPage() {
    window.self.location = "student.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>";
    }

    function nextPage() {
    window.self.location = "student.jsp?pageNo=<%=pageModel.getNextPageNo()%>";
    }

    function bottomPage() {
    window.self.location = "student.jsp?pageNo=<%=pageModel.getBottomPageNo()%>";
    }
    </script>
    <body>
    <center>
      <table border="1">
      <tr>
       <td>学生编号</td>
       <td>学生姓名</td>
       <td>学生年龄</td>
       <td>学生性别</td>
       <td>学生班级</td>
      </tr>
      <%
       List stuList = pageModel.getList() ;
       for(Iterator<Student> iter = stuList.iterator(); iter.hasNext();){
       Student stu = iter.next() ;
      %>
      <tr>
       <td><%=stu.getS_id() %></td>
       <td><%=stu.getS_name() %></td>
       <td><%=stu.getS_age() %></td>
       <td><%=stu.getS_sex() %></td>
       <td><%=stu.getS_class() %></td>
      </tr>
      <%
       }
      %>
      <tr><td colspan="5">
          共&nbsp;<%=pageModel.getTotalPages() %>&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;
          当前第&nbsp;<%=pageModel.getPageNo() %>页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="button" value="首页" onClick="topPage()">
      <input type="button" value="上一页" onClick="previousPage()">
      <input type="button" value="下一页" onClick="nextPage()">
      <input type="button" value="尾页" onClick="bottomPage()">
      </td></tr>
      </table>
    </center>
    </body>
    </html>
    http://www.iteye.com/topic/1113711
      

  4.   

    分享一下我最近刚做的一个 jsp +oracle+json+Ajax的一个分页  jsp如下:<script type="text/javascript" src="JS/json.js"></script><!-- 此处是Json的异步传输的方法,在此处我们得到想要的数据 -->
    <script type="text/javascript">
      
       var xmlHttp;
    function createXMLHttpRequest() {
        if (window.ActiveXObject) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        else if (window.XMLHttpRequest) { 
            xmlHttp = new XMLHttpRequest();
        }
    }
       //得到首次加载的数据
    function Display() {      
        createXMLHttpRequest();
        var page;
         //得到需要传入的查询条件
        var inputtest =document.getElementById("inputtest").value;
        var url ="reportcheck?timeStamp="+new Date().getTime()+"&inputtest"+inputtest;
        xmlHttp.open("post",url,true);
        xmlHttp.onreadystatechange = process;
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
        xmlHttp.send(inputtest);
    }

    // 分页的时候的方法
       function Displayy(curpage){
          createXMLHttpRequest();
         //得到需要传入的查询条件
        var inputtest =document.getElementById("inputtest").value;
       // alert("inpttest="+inputtest);
        var url ="reportcheck?timeStamp="+new Date().getTime()+"&curpage="+curpage+"&inputtest"+inputtest;
        xmlHttp.open("post",url,true);
        xmlHttp.onreadystatechange = process;
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
        xmlHttp.send(inputtest);
       
       }
    function process() {
         
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200){ 
    //alert(xmlHttp.responseText);

           var users = JSON.parse(xmlHttp.responseText);
            //alert(users[0].ReportName);
             if(users.length==0){
              //alert(users.length);//check list size   
              document.getElementById("floatshow").innerHTML="";
              alert("条件查找的数据不存在!");
              return ;
             
             }else{
             var headers="";
                 headers+="<tr>"
                 headers+="<td align='middle'><link>ReportName<link></td>";
                 headers+="<td align='middle'>Report presentation</td>";
                 headers+="</tr>"
            for ( var i = 0;i< users.length;i++) {
               headers+="<tr>";
    headers+="<td><a href="+users[i].ReportUri+">"+users[i].ReportName+"</td><td>"+users[i].ReportDesc+"</td><td><img  src="+users[i].IMG_URL+"/></td>";
    headers+="</tr>";
    }
       headers+="<tr>";
       headers+="<td height='25' colspan='9' width='727'>";
       headers+="<table cellspacing=1 width='100%' border=0 colspan='4'>";
       headers+="<tr>";
       headers+="<td  align='center' >";
       headers+="<pre>总页数:"+users[users.length-1].alltPage+"&nbsp;当前:"+users[users.length-1].nowPage+"&nbsp;&nbsp;<a href='javascript:Displayy(curpage=1)'>&nbsp;&nbsp;&nbsp;首页<a href='javascript:Displayy(curpage="+users[users.length-1].alltPage+")'>&nbsp;&nbsp;&nbsp;尾页</a><a href ='javascript:Displayy(curpage="+users[users.length-1].nowPage+'-1'+")'>&nbsp;&nbsp;&nbsp;上一页</a><a href ='javascript:Displayy(curpage="+users[users.length-1].nowPage+'+1'+")'>&nbsp;&nbsp;&nbsp;下一页</a>&nbsp;<input id= 'goid' type = 'text' size = '2' name ='t1'/><input  type = 'button' value = 'GO' onclick = 'checktext();'/>";
                   headers+="</pre>";
       headers+="</td>";
       headers+="</tr>";
       headers+="</table>";
       headers+="</td>";
       headers+="</tr>";
       
        var top ="<table id='tableSearch' border='2'style='BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BORDER-LEFT: #999999 1px solid; WIDTH: 90%; BORDER-BOTTOM: #999999 1px solid; BORDER-COLLAPSE: collapse ;margin:15px 30px'>";
        var bottom="</table>";
        
         var  countString=top+headers+bottom;
         document.getElementById("floatshow").innerHTML=countString;   
             
             }
           anole('tableSearch',1,'#ffffff','#ccccff','#ffccff','#cc99ff');
        }
    }

    function checktext(){
           var str = document.getElementById("goid").value;
              if(""==str){
                 alert("请输入一个数字");
                 return false;
              }
              if(isNaN(str)){
                 alert("必须是一个数字");
                 return false;
              }
              window.location ="javascript:Displayy(curpage="+str+")";
           }




       </script>
    </head> <body>
    <form >
    <table id="tableSearch" align="center" >
    <tr>

    <td>
    基本查询:
    <input id="inputtest" text="text" name="checkBasic">
    <font size="2" color="blue">(产品名称/编号等)</font>
    </td >&nbsp;
    <td>
    <input id="test" type="button"  name="Submit1"  value="查询数据 " onclick="Display();">
        </td>
    </tr>

    </table>
    </form>
     <div id="floatshow" dir="ltr" style="background-color:appworkspace;" title="Report List Query"></div> <!-- 在此处我们将会生成一个动态的table来显示查询的数据 --
      

  5.   

     Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login",   "password");   
    Statement stmt = con.createStatement(); 
    User user ; 
    List<User> list = new ArrayList<User>();
     ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); 
    user = new User(); 
     while (rs.next()) {  user.setXXX(rs.get("1"));
    ..............
     
    list.add(user);
     } 
    return list;..............\将list返回到jsp,
    再jsp中调用javaScript分页工具。。