paginação

Alguem teria algo simples e objetivo?

tenho um codigo que peguei na internet que faz isso porem quando acrescento a clausula where ou ontra da erro se alguem puder me ajudar agradeço desde já.

segue o codigo que esta dando erro:
<%@ page language=“java” import=“java.sql.*” %>

Aprendendo JSP

<%
// Este exemplo mostra como paginar os resultados de uma
// tabela MySQL
// o nome da base de dados é “test”

String url = “jdbc:mysql://localhost/test”;
String usuario = “root”;
String senha = “1234”;

Connection conn = null;

try{
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
conn = DriverManager.getConnection(url, usuario, senha);
}
catch(SQLException ex){
out.println("SQLException: " + ex.getMessage() + “
”);
out.println("SQLState: " + ex.getSQLState() + “
”);
out.println("VendorError: " + ex.getErrorCode() + “
”);
}
catch(Exception e){
out.println(“Problemas ao tentar conectar com o banco de dados”);
}

// conn é a conexão com o banco de dados
int limit = 5; // quantidade de resultados por página

// obtém a quantidade de registros
PreparedStatement pstmt = conn.prepareStatement(
“SELECT COUNT(*) AS c FROM CLIENTES”);
ResultSet rs = pstmt.executeQuery();
rs.next();
int total_rows = Integer.parseInt(rs.getString(“c”));

String pagina = request.getParameter(“pagina”); // página atual
if(pagina == null){
pagina = “1”;
}

int limitValue = (Integer.parseInt(pagina) * limit) - limit;

PreparedStatement pstmt2 = conn.prepareStatement(
"SELECT * FROM CLIENTES LIMIT " + limitValue + ", " + limit);
ResultSet rs2 = pstmt2.executeQuery();

while(rs2.next()) {
int id = rs2.getInt(“CODIGO”);
out.println("ID: " + id + “
”);
String nome = rs2.getString(“NOME”);
out.println("NOME: " + nome + “
”);
int idade = rs2.getInt(“IDADE”);
out.println("IDADE: " + idade + “

”);
}

int anterior;
if(Integer.parseInt(pagina) != 1){
anterior = Integer.parseInt(pagina) - 1;
out.println("<a href=?pagina=" + anterior + “>” + limit + " Anteriores");
}
else
out.println(limit + " Anteriores ");

int numOfPages = total_rows / limit;
int i;

for(i = 1; i <= numOfPages; i++){
if(i == Integer.parseInt(pagina)){
out.println("" + i + " “);
}
else{
out.println(”<a href=?pagina=" + i + “>” + i + " ");
}
}

if((total_rows % limit) != 0){
if(i == Integer.parseInt(pagina)){
out.println(i + " “);
}
else{
out.println(”<a href=?pagina=" + i + “>” + i + " ");
}
}

int proxima;
if((total_rows - (limit * Integer.parseInt(pagina))) > 0){
proxima = Integer.parseInt(pagina) + 1;

out.println("<a href=?pagina=" + proxima + ">Próximos " + limit + "</a>");  

}
else
out.println("Próximos " + limit);
%>

Necessariamente não tenho que usar esta forma caso algum amigo tenho uma solução mais simples.

Abraços e obrigado

Valmir Lopes

A começar por tirar os códigos de dentro das páginas teriamos que rever dezenas de conceitos… mas pra te ajudar precisamos saber qual o erro???

segue o erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:25

22:

Lista de Contatos


23:
24:
25: <display:table name=“pageScope.consulta.rows” pagesize=“4”>
26:
27: <display:column property=“nome” title=“Nome” />
28: <display:column property=“email” />

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: org/apache/commons/collections/FastHashMap
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.index_jsp._jspService(index_jsp.java:159)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap
org.apache.commons.beanutils.PropertyUtils.(PropertyUtils.java:208)
org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:196)
org.displaytag.util.LookupUtil.getBeanValue(LookupUtil.java:74)
org.displaytag.tags.TemplateTag.evaluateExpression(TemplateTag.java:103)
org.displaytag.tags.TableTag.initParameters(TableTag.java:727)
org.displaytag.tags.TableTag.doStartTag(TableTag.java:541)
org.apache.jsp.index_jsp._jspService(index_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

faltou adicionar no seu projeto a biblioteca da Apache Collections:

http://www.docjar.com/s.jsp?q=org%2Fapache%2Fcommons%2Fcollections%2FFastHashMap+&t=q

java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap

Ele não encontrou essa classe, provavelmente o commons-collections não está no seu classPath.

(;

eu sou iniciante fiz um curso rapidão ai vai o meu exemplo q funciona muito bem pra mim

<%@page import="java.sql.*" %>
<%@page pageEncoding="UTF-8"%>
<% if((request.getParameter("busca1")!="")&&(request.getParameter("busca1")!=null)){
    String categoria = request.getParameter("categoria");
    [b]if((categoria!="")&&(categoria!=null))
        {        
        try{
            String busca1 = request.getParameter("busca1");
            String mv = "";
            int pages;
            Connection ocon = null;
            Class.forName("org.gjt.mm.mysql.Driver");
            ocon = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            Statement stmtt = ocon.createStatement();
            ResultSet rc = stmtt.executeQuery("Select count(*) from tbcadastro where nome LIKE '%"+busca1+"%' and categoria ='"+categoria+"'");
            rc.next();
            pages = rc.getInt(1);
            out.println("Total de Empresas : "+(pages)+ "<br>");
            int cPage;
            cPage = (pages / 10) + 1;
            if((cPage * 10) + 1 >= pages) {
                cPage++;
            }
            out.println("Total de Páginas : " + (cPage - 1) + "<br><p><p></p></p>");
            int p;
            for(p = 1; p < cPage; p++) {
                out.println("<a href=# onclick=makeRequest2('busca.jsp?busca1="+busca1+"&categoria="+categoria+"&mv="+p+"');>"+ p +"</a>&nbsp;|&nbsp;");
            }
            out.println("<hr>");
            int cpage;
            int currentRs;
            String pt;
            pt = request.getParameter("mv");
            if (pt == null) {
                currentRs = 0;
            }else{
                cpage = Integer.parseInt((String)pt);
                currentRs = 10 * (cpage - 1);
                out.println(cpage + "<br>");
            }
            Connection con = null;
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            Statement stmt = con.createStatement();
            String sql;
            sql = "Select * from tbcadastro where nome Like '%"+busca1+"%'and categoria ='"+categoria+"' LIMIT "+currentRs+",10";
            ResultSet rs = stmt.executeQuery(sql);[/b]
//rs.absolute(10);
            
            while (rs.next()) {
                out.println("<table border='0' cellpadding='0' cellspacing='0'  id='tabela'>");
                out.println("<tr>");
                out.println("<td width='150px' align='center'  rowspan='4'><div class='demo'><img src='CAMISA2.jpg' class='corners iradius32' alt=''/></div></td>");
                out.println("<td width='200px' height='29' Class='tit'><div align='left'><p>"+rs.getString("nome"));
                out.println("</p></div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td><div align='left'>Endere&ccedil;o :"+rs.getString("endereco")+"</div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td><div align='left'>Bairro : "+rs.getString("bairro")+" &nbsp;&nbsp; Cidade: "+rs.getString("cidade")+"</div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td height='34px'><div align='left'>CEP : "+rs.getString("cep")+"<br>");
                out.println("Site : <a href="+rs.getString("site")+">"+rs.getString("site")+"</a></div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println(" <td colspan='2'>e-mail : "+rs.getString("email")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td colspan='2'>Telefone : "+rs.getString("telefone")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td colspan='2'>Fax : "+rs.getString("fax")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td height='32px' colspan='2'><input name='button' onclick=javascript:window.open('orcamento.jsp?categoria="+rs.getString("categoria")+"','','scrollbars=no,status=no,width=520,height=550,left=20,top=10,resizable=no'); type='button' value='Fazer Orçamento'> ");
                out.println("<input type='button' value='Mapa Local' onclick="+"abre('"+rs.getString("mapa")+"','600','600');"+">");
                out.println("</td>");
                out.println("</tr>");
                out.println("</table>");
                out.println("<a href=http://"+rs.getString("site")+" target=_blank>"+rs.getString("mapa")+"</a>");
                out.println("<br /> <br />");
            }
            rs.close();
            stmt.close();
            con.close();
        } catch(Exception e) {
            out.println("Erro ao Iniciar Busca "+ e)    ;
        }
        
    }
     else 
        {
        try{
            String busca1 = request.getParameter("busca1");
            String mv = "";
            int pages;
            Connection ocon = null;
            Class.forName("org.gjt.mm.mysql.Driver");
            ocon = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            Statement stmtt = ocon.createStatement();
            ResultSet rc = stmtt.executeQuery("Select count(*) from tbcadastro where nome LIKE '%"+busca1+"%'");
            rc.next();
            pages = rc.getInt(1);
            out.println("Total de Empresas : "+(pages)+ "<br>");
            int cPage;
            cPage = (pages / 10) + 1;
            if((cPage * 10) + 1 >= pages) {
                cPage++;
            }
            out.println("Total de Páginas : " + (cPage - 1) + "<br><p><p></p></p>");
            int p;
            for(p = 1; p < cPage; p++) {
                out.println("<a href=# onclick=makeRequest2('busca.jsp?busca1="+busca1+"&categoria=&mv="+p+"');>"+ p +"</a>&nbsp;|&nbsp;");
            }
            out.println("<hr>");
            int cpage;
            int currentRs;
            String pt;
            pt = request.getParameter("mv");
            if (pt == null) {
                currentRs = 0;
           }else{
                cpage = Integer.parseInt((String)pt);
                currentRs = 10 * (cpage - 1);
                out.println(cpage + "<br>");
            }
            Connection con = null;
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            Statement stmt = con.createStatement();
            String sql;
            sql = "Select * from tbcadastro where nome Like '%"+busca1+"%' LIMIT "+currentRs+",10";
            ResultSet rs = stmt.executeQuery(sql);
//rs.absolute(10);
            
            while (rs.next()) {
                out.println("<table border='0' cellpadding='0' cellspacing='0'  id='tabela'>");
                out.println("<tr>");
                out.println("<td width='150px' align='center'  rowspan='4'><div class='demo'><img src='CAMISA2.jpg' class='corners iradius32' alt=''/></div></td>");
                out.println("<td width='200px' height='29' Class='tit'><div align='left'><p>"+rs.getString("nome"));
                out.println("</p></div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td><div align='left'>Endere&ccedil;o :"+rs.getString("endereco")+"</div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td><div align='left'>Bairro : "+rs.getString("bairro")+" &nbsp;&nbsp; Cidade: "+rs.getString("cidade")+"</div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td height='34px'><div align='left'>CEP : "+rs.getString("cep")+"<br>");
                out.println("Site : <a href="+rs.getString("site")+">"+rs.getString("site")+"</a></div></td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println(" <td colspan='2'>e-mail : "+rs.getString("email")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td colspan='2'>Telefone : "+rs.getString("telefone")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td colspan='2'>Fax : "+rs.getString("fax")+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td height='32px' colspan='2'><input name='button' onclick=javascript:window.open('orcamento.jsp?categoria="+rs.getString("categoria")+"','','scrollbars=no,status=no,width=520,height=550,left=20,top=10,resizable=no'); type='button' value='Fazer Orçamento'> ");
                out.println("<input type='button' value='Mapa Local' onclick="+"abre('"+rs.getString("mapa")+"','600','600');"+">");
                out.println("</td>");
                out.println("</tr>");
                out.println("</table>");
                out.println("<a href=http://"+rs.getString("site")+" target=_blank>"+rs.getString("mapa")+"</a>");
                out.println("<br /> <br />");
            }
            rs.close();
            stmt.close();
            con.close();
        } 
         catch(Exception e) {
            out.println("Erro ao Iniciar Busca "+ e);
        } 
    }
}else{
%>
<BR><BR>
<h1>Nenhum dado foi encontrado , Tente novamente</h1>
<script type="text/javascript" src="ajax_index.js"></script>
<%
} 
%>

eu uso o mysql ai apaginação é feita dividindo o resultado com o Limits (SQL)
ai vc divide as paginas usando esse pedaço

String mv = ""; //parametro de paginação int pages; //paginas a serem criadas Connection ocon = null; Class.forName("org.gjt.mm.mysql.Driver"); ocon = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root"); Statement stmtt = ocon.createStatement(); ResultSet rc = stmtt.executeQuery("Select count(*) from tbcadastro where nome LIKE '%"+busca1+"%' and categoria ='"+categoria+"'"); rc.next(); pages = rc.getInt(1); out.println("Total de Empresas : "+(pages)+ "<br>&quot;); int cPage; cPage = (pages / 10) + 1; if((cPage * 10) + 1 &gt;= pages) { cPage++; } out.println(&quot;Total de Páginas : &quot; + (cPage - 1) + &quot;<br><p><p></p></p>&quot;); int p; for(p = 1; p &lt; cPage; p++) { out.println(&quot;<a >"+ p +"</a> | "); } out.println("&lt;hr&gt;"); int cpage; int currentRs; String pt; pt = request.getParameter("mv"); if (pt == null) { currentRs = 0; }else{ cpage = Integer.parseInt((String)pt); currentRs = 10 * (cpage - 1); out.println(cpage + "<br>"); } Connection con = null; Class.forName("org.gjt.mm.mysql.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root"); Statement stmt = con.createStatement(); String sql; sql = "Select * from tbcadastro where nome Like '%"+busca1+"%'and categoria ='"+categoria+"' LIMIT "+currentRs+",10"; ResultSet rs = stmt.executeQuery(sql);[/

Cara prq vc nao utiliza displaytag ele realiza todo trabalho de paginação para vc.

http://hotwork.sourceforge.net/hotwork/manual/displaytag/displaytag-user-guide.html#Criando_links_din�micos

http://displaytag.sourceforge.net/11/

Amigo ramilani12,

seu que estou abusando …mais vc não teria nenhum ex. que pudesse me fornecer …

Agradeço e muito a ajuda do amigo…

Abraços

Valmir Lopes

No proprio link que te passei no post anterior há um exemplo mas veja ai:

http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html

[quote=flaviometalvale]eu sou iniciante fiz um curso rapidão ai vai o meu exemplo q funciona muito bem pra mim
[/quote]

Pelo que entendi voce já terminou o curso.
É sério que os cursos ensinam dessa forma ?? :shock: :shock: :shock: :shock:

:?

[b]Direito de Resposta :
eu fiz um curso de 18 hrs sendo q de jsp(8hrs) só aprendi a conectar com acess … num sei usar servlets nem classes e bibliotecas … Mas to correndo atrás to criando um site bacana na raça com JSP + MySQL + AJAX mais se tudo der certo quero fazer um curso de JAVA e um de j2ee PRA melhorar meu conhecimentos que são bem básicos … eu pego muita coisa aqui no GUJ

Não sou nenhum expert …
só estava tentando ajudar o rapaz que pediu um exemplo de paginação …eu não sei inglês e as documentações são todas em inglês por isso nem sei usar o Displaytag [/b]

[quote=flaviometalvale][b]Direito de Resposta :
eu fiz um curso de 18 hrs sendo q de jsp(8hrs) só aprendi a conectar com acess … num sei usar servlets nem classes e bibliotecas … Mas to correndo atrás to criando um site bacana na raça com JSP + MySQL + AJAX mais se tudo der certo quero fazer um curso de JAVA e um de j2ee PRA melhorar meu conhecimentos que são bem básicos … eu pego muita coisa aqui no GUJ

Não sou nenhum expert …
só estava tentando ajudar o rapaz que pediu um exemplo de paginação …eu não sei inglês e as documentações são todas em inglês por isso nem sei usar o Displaytag [/b]

[/quote]

Cara, me desculpe se entendeu errado, mas em momento algum julguei o seu conhecimento. Quem sou eu para tal, não é mesmo?
Sei que só tentou ajudar o rapaz, e fez bem.

Apenas critiquei, e reforco a critica, os cursos que ensinam de tal forma. Ao meu ver, em 8 horas poderia ser ensinado algo melhor, focando nas boas práticas.

Não leve a mal, por favor :slight_smile:

Fique com Deus,

Renan