没事出来逛逛。。。。。。今天逛出个分页。。呵呵 虽然技术不是太好。但是绝对原创!
可惜只能写在JSP中,02年的老系统,时下流行的框架技术其他的都不支持,只能使用JSP+JavaBean。苦
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@page import="com.info.Info"%> <%@page import="com.info.InfoDB"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <style> .xl24 {mso-style-parent:style0; background:silver; mso-pattern:auto none;} </style> </head> <% int intPageCount = 0;//总页数 int intPage = 0;//当前页数 String myPage = request.getParameter("page");//得到请求发来的page 页数 if( myPage==null || myPage.equals("") ) {//判断 page值 intPage = 1; }else{ //page 值 正常 intPage = Integer.parseInt(myPage); } Info info = null; int count =40;//每页多少条 InfoDB infoDB = new InfoDB(); Vector vector = infoDB.getAllVector("");//根据sql语句得到结果集 但会 vector集合 int vectorCount = vector.size();//得到总数量 int showNumber = vectorCount % count;//得到最后显示的条数 //计算总页数 if(vectorCount%count==0) { intPageCount=vectorCount/count; } else { //除不尽 余数+1 单独设置一页显示 intPageCount=vectorCount/count+1; } //异常情况 当传来页数大于总页数时 修改为最大页数 if(intPageCount<intPage){ intPage = intPageCount; } %> <body> <form action="show.jsp?page=" method="post" name="tt"> <table border="1" cellpadding="1" cellspacing="1" > <tr height="17" style='height: 12.75pt' class="formtitle" align="left"> <td class="xl24" width="50" > 序号 </td> <td class="xl24" width="100" > 保单号 </td> <td class="xl24" width="100" > 号牌颜色 </td> </tr> <% int myCount =1;//循环变量 记录当前显示序号 int k = 0;//记录下一页要显示的下标 //每次都判断一次 记录当前的序号和下标 if( intPage>=1 ){ //得到要显示的序号 myCount = (intPage * count-count)+1; //得到终止标 k = vectorCount-(vectorCount-intPage*count); } for( ; myCount <= k ; myCount++ ) { //判断当前要显示的序号是否 大于 结果集的总条数 if(myCount>vectorCount){ break;//跳出 }else{ //照常输出 info = (Info)vector.get(myCount-1); } %> <tr height="17" style='height: 12.75pt'> <td align="left"><%=myCount%></td> <td align="left"><%=info.getPolicyNo()%></td> <td align="left"><%=info.getLicenseColor() %><td> </tr> <% } %> <tr height="17" style='height: 12.75pt' align="center"> <td colspan="3"><B> <% //只有当总页数大于0的时候才显示 分页组件 if( intPageCount > 0 ) { %> <u> 第 <%=intPage%> 页 <% //处理最后一页 《除不尽 余数+1 单独设置一页显示》 if(intPage==intPageCount){ %> 本页共 <%=showNumber %> 条 <% } else {%> 本页共 <%=count %> 条 <% } %> 共 <%=intPageCount%> 页/共 <%=vectorCount %> 条 </u> <br> <% if( intPage>1 ){ //当 当前页为第二页 显示以后几页操作组件%> <input type="button" value="首 页" onclick="gotoPage(1)"/> <input type="button" value="上一页" onclick="gotoPage(<%=intPage-1 %>)"/> <input type="button" value="尾 页" onclick="gotoPage(<%=intPageCount %>)"/> <% } %> <% if( intPage<intPageCount ){ //当 当前页数小于 最大页数有下一页%> <input type="button" value="下一页" onclick="gotoPage(<%=intPage+1 %>)"/> <% } %> <font color="red">转到 第<input name="page" id="myPage" size="2">页</font><input type="button" onclick="gotoPage('go')" value="GO"> <% } %></B> </td> </tr> </table> <script type="text/javascript"> <!--分页调用的JS方法 ---> function gotoPage(myPage){ var page = document.getElementById("myPage").value; var pageCount = <%=intPageCount%> if(myPage=="go"){ if( page==0 || page > pageCount || isNaN(page) ){ document.getElementById("myPage").value = ""; alert("请输入正确的页码! 最大为 <"+pageCount+"> 页!"); }else{ tt.submit(); } }else{ <!--处理不是点击 GO按钮 提交时操作 ---> tt.action="show.jsp?page="+myPage; tt.submit(); } } </script> </form> <a href="index.jsp"> 返回 </a> </body> </html>
/** * 根据sql语句判断查询条件 * @param sqlString * @return */ public Vector getVector(String sqlString){ Vector vector = new Vector(); Connection connection = null; Statement st = null; ResultSet resultSet = null; Info info = null; try { String url = "jdbc:oracle:thin:@10.0.2.12:1521:db12"; String user = "prp"; String password = "prp"; Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); connection = DriverManager.getConnection(url, user, password); st = connection.createStatement(); resultSet = st.executeQuery(myString); while (resultSet.next()) { info = new Info(); info.setPolicyNo(resultSet.getString("policyNo"));// 保单号 info.setLicenseNo(resultSet.getString("licenseNo"));// 车牌号 info.setEngineNo(resultSet.getString("engineNo"));// 发动机号 if (null != resultSet.getString("frameNo")) { info.setFrameNo(resultSet.getString("frameNo"));// 车架号 } else { info.setFrameNo(" "); } info.setClaimNoConut(resultSet.getString("claimNoConut"));// 事故次数 info.setLicenseColor(resultSet.getString("licenseColor"));// 车号牌颜色 vector.add(info); } } catch (SQLException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally{ try { st.close(); resultSet.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return vector; }
/*** * 分页用到的查询方法 * @param pageNumber * @return */ public Vector getPageVector(int pageNumber,int pageCount,String string){ String addString = "SELECT * FROM(SELECT ROWNUM RN,TA.*FROM(" +myString+ ")TA WHERE " + "ROWNUM <= "+pageNumber+" * "+pageCount+" )WHERE RN > ("+pageNumber+"-1) * "+pageCount+" "; return getVector(addString); } /** * 得到所有 * @return */ public Vector getAllVector(String string){ return getVector(string); }
String addString = "SELECT * FROM(SELECT ROWNUM RN,TA.*FROM(" +myString+ ")TA WHERE " + "ROWNUM <= "+pageNumber+" * "+pageCount+" )WHERE RN > ("+pageNumber+"-1) * "+pageCount+" ";
//计算总页数 if(vectorCount%count==0) { intPageCount=vectorCount/count; } else { //除不尽 余数+1 单独设置一页显示 intPageCount=vectorCount/count+1; } //异常情况 当传来页数大于总页数时 修改为最大页数 if(intPageCount<intPage){ intPage = intPageCount; }
<% int myCount =1;//循环变量 记录当前显示序号 int k = 0;//记录下一页要显示的下标 //每次都判断一次 记录当前的序号和下标 if( intPage>=1 ){ //得到要显示的序号 myCount = (intPage * count-count)+1; //得到终止标 k = vectorCount-(vectorCount-intPage*count); } for( ; myCount <= k ; myCount++ ) { //判断当前要显示的序号是否 大于 结果集的总条数 if(myCount>vectorCount){ break;//跳出 }else{ //照常输出 info = (Info)vector.get(myCount-1); } %>
以下是 oracle10G的架包.