在JSp中直接使用分页

没事出来逛逛。。。。。。今天逛出个分页。。呵呵   虽然技术不是太好。但是绝对原创!
可惜只能写在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%> 页  &nbsp;&nbsp;  
<% 
//处理最后一页 《除不尽 余数+1 单独设置一页显示》 
if(intPage==intPageCount){ 
%> 
  本页共 <%=showNumber %> 条 
<% } else {%> 
       本页共 <%=count %> 条 
<% } %>&nbsp;&nbsp;    
共 <%=intPageCount%> 页/共 <%=vectorCount %> 条 </u> <br>   
  <% if( intPage>1 ){ //当 当前页为第二页 显示以后几页操作组件%> 
  &nbsp;&nbsp;<input type="button" value="首  页" onclick="gotoPage(1)"/>  
  &nbsp;&nbsp;<input type="button" value="上一页" onclick="gotoPage(<%=intPage-1 %>)"/> 
  &nbsp;&nbsp;<input type="button" value="尾  页" onclick="gotoPage(<%=intPageCount %>)"/> 
  <% } %>   
    <% if( intPage<intPageCount ){ //当 当前页数小于 最大页数有下一页%> 
  &nbsp;&nbsp; <input type="button" value="下一页" onclick="gotoPage(<%=intPage+1 %>)"/> 
  <% } %>   
&nbsp;&nbsp;<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的架包.

你可能感兴趣的:(oracle,sql,jsp,jdbc,Go)