Thursday, September 19, 2013

Create Pagination with JSP using Oracle Database

This example code to create Pagination using JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.PreparedStatement"  %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%!
public int Converter(String str)
{
    int convrtr=0;
    if(str==null)
        {
            str="0";
        }
    else if((str.trim()).equals("null"))
        {
            str="0";
        }
    else if(str.equals(""))
        {
            str="0";
        }
    try{
            convrtr=Integer.parseInt(str);
        }
    catch(Exception e)
        {
        }
    return convrtr;
}
%>
<%
    Connection con = null;
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:orcl";
Class.forName(driver);
    con=DriverManager.getConnection(url,"hrd_23","hrd_23");

    ResultSet rsPgin = null;
    ResultSet rsRwCn = null;
    PreparedStatement psPgintn=null;
    PreparedStatement psRwCn=null;
   
    // Number of records displayed on each page
    int iSwRws=5;
    // Number of pages index displayed
    int iTotSrhRcrds=10;
   
    int iTotRslts=Converter(request.getParameter("iTotRslts"));
    int iTotPags=Converter(request.getParameter("iTotPags"));
    int iPagNo=Converter(request.getParameter("iPagNo"));
    int cPagNo=Converter(request.getParameter("cPagNo"));

    int iStRsNo=0;
    int iEnRsNo=0;

    if(iPagNo==0)
        {
            iPagNo=0;
        }
    else{
            iPagNo=Math.abs((iPagNo-1)*iSwRws);
        }
   
    String sqlPgintn="SELECT TT.U_ID,TT. NAME,TT.PWD,TT.CREATE_BY,TT. ROLE FROM "+
    "(SELECT DISTINCT M.U_ID, M.NAME, M.PWD, K.NAME AS CREATE_BY, r.NAME AS ROLE,row_number()"+
    " over (ORDER BY M.U_ID DESC) line_number FROM AD_USER K, AD_USER M, AD_ROLE r WHERE M.CREATE_BY"+
    " = K.U_ID AND M.ROLE_ID = r.ROLE_ID) "+
   " TT WHERE TT.LINE_NUMBER between "+iPagNo+" and "+(iPagNo+iSwRws)+" ORDER BY TT.U_ID DESC";
    psPgintn=con.prepareStatement(sqlPgintn);
    rsPgin=psPgintn.executeQuery();
    String sqlRwCnt="SELECT count(*) cnt FROM(SELECT  U.*, COUNT(*) OVER()FROM AD_USER U)";
    psRwCn=con.prepareStatement(sqlRwCnt);
    rsRwCn=psRwCn.executeQuery();
   
    if(rsRwCn.next())
      {
        iTotRslts=rsRwCn.getInt("cnt");
      }
%>
<html>
    <head>
        <title>Pagination using JSP page</title>
    </head>
<body>
    <form name="frm">
        <input type="hidden" name="iPagNo" value="<%=iPagNo%>">
        <input type="hidden" name="cPagNo" value="<%=cPagNo%>">
        <input type="hidden" name="iSwRws" value="<%=iSwRws%>">
       
        <table width="100%" cellpadding="0" cellspacing="0" border="0" >
        <tr>
        <td>ID</td>
        <td>NAME</td>
        <td>PASSWORD</td>
         <td>CREATE BY</td>
         <td>ROLE</td>
        </tr>
<%
    while(rsPgin.next())
      {
%>
        <tr>
            <td><%=rsPgin.getInt(1)%></td>
            <td><%=rsPgin.getString(2)%></td>
            <td><%=rsPgin.getString(3)%></td>
            <td><%=rsPgin.getString(4)%></td>
            <td><%=rsPgin.getString(5)%></td>
        </tr>
<%
     }
%>
<%
    // Calculate next record start and end position
    try{
        if(iTotRslts<(iPagNo+iSwRws))
            {
                iEnRsNo=iTotRslts;
            }
        else
            {
                iEnRsNo=(iPagNo+iSwRws);
            }

            iStRsNo=(iPagNo+1);
            iTotPags=((int)(Math.ceil((double)iTotRslts/iSwRws)));
        }
    catch(Exception e)
        {
                e.printStackTrace();
        }
%>
<tr>
<td colspan="3">
<div>
<%
     // Create index of pages
    int i=0;
    int cPge=0;
    if(iTotRslts!=0)
       {
        cPge=((int)(Math.ceil((double)iEnRsNo/(iTotSrhRcrds*iSwRws))));
        int prePageNo=(cPge*iTotSrhRcrds)-((iTotSrhRcrds-1)+iTotSrhRcrds);
        if((cPge*iTotSrhRcrds)-(iTotSrhRcrds)>0)
            {
        %>
        <a href="index.jsp?iPagNo=<%=prePageNo%>&cPagNo=<%=prePageNo%>"><< Previous</a>
        <%
        }
       
        for(i=((cPge*iTotSrhRcrds)-(iTotSrhRcrds-1));i<=(cPge*iTotSrhRcrds);i++)
        {
            if(i==((iPagNo/iSwRws)+1))
            {
            %>
        <a href="index.jsp?iPagNo=<%=i%>" style="cursor:pointer;color:red"><b><%=i%></b></a>
            <%
            }
            else if(i<=iTotPags)
            {
            %>
        <a href="index.jsp?iPagNo=<%=i%>"><%=i%></a>
            <%
            }
        }
   
        if(iTotPags>iTotSrhRcrds&& i<iTotPags)
        {
         %>
        <a href="index.jsp?iPagNo=<%=i%>&cPagNo=<%=i%>">>> Next</a>
        <%
        }
      }
      %>
    <b> Rows <%=iStRsNo%> - <%=iEnRsNo%>   Total Result  <%=iTotRslts%></b>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
<%
try{
    if(psPgintn!=null){
        psPgintn.close();
    }
    if(rsPgin!=null){
        rsPgin.close();
    }
    if(psRwCn!=null){
        psRwCn.close();
    }
    if(rsRwCn!=null){
        rsRwCn.close();
    }
    if(con!=null){
        con.close();
    }
  }
catch(Exception e)
  {
    e.printStackTrace();
  }
%>

No comments:

Post a Comment