Bom dia galera, esse é o meu primeiro Post aqui no GUJ :P Estou estudando pela apostila FJ-21 do Caelum, mas tô com problema na hora de mostrar os dados com Display Tag. Já tentei seguir o tuto da sourcefourge mas tb não consegui, vejam meu código:
Minha classe contatoDAO.Javapackage jee;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class ContatoDAO {
private Connection con;
public ContatoDAO(){
this.con = new ConnectionFactory().getConnection();
}
public void adiciona(Contato contato)
{
String sql = "insert into contatos(nome, email,endereco,datanascimento) values (?,?,?,?)";
try
{
PreparedStatement stmt = con.prepareStatement(sql);
//insere valores
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
stmt.execute();
stmt.close();
}catch (SQLException e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
public List<Contato> getLista() throws SQLException{
String sql = "select * from contatos";
try{
List<Contato> contatos = new ArrayList<Contato>();
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
//System.out.println(rs.getInt(1)+ "::" + rs.getString(2)+ "::" + rs.getString(3)+ "::" + rs.getString(4)+ "::" + rs.getDate(5));
Contato contato = new Contato();
contato.setId(rs.getInt(1));
contato.setNome(rs.getString(2));
contato.setEndereco(rs.getString(3));
contato.setEmail(rs.getString(4));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate(5));
contato.setDataNascimento(data);
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
}catch (SQLException e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
public int altera(Contato contato){
String sql = "update contatos set nome=?,email=?,endereco=?,datanascimento=? where id=?";
int ret;
try{
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(5, contato.getId());
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
ret = stmt.executeUpdate();
return ret;
}catch (SQLException e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
public int remove(Contato contato){
String sql = "delete from contatos where id=?";
int ret;
try{
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, contato.getId());
ret = stmt.executeUpdate();
stmt.close();
return ret;
}catch (SQLException e){
throw new RuntimeException(e);
}
}
}
Minha JSP lista-contatos-elegante2.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<%@page import="java.io.PrintWriter"%>
<%@page import="jee.Contato"%>
<%@page import="java.util.List"%>
<%@page import="jee.ContatoDAO"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<jsp:useBean id="cd" class="jee.ContatoDAO" />
<c:import url="cabecalho.jsp"></c:import>
<%
List<Contato> contatos = cd.getLista();
session.setAttribute("lc",contatos);
%>
<display:table name="sessionScope.lc" >
<display:column property="nome" />
</display:table>
<c:import url="rodape.jsp"></c:import>
Os arquivos Jar do displayTag estão em WebContent/WEB-INF/LIB.
Quando chamo http://localhost:8080/fj21-agenda/lista-contatos-elegante2.jsp no novegador a console do eclipse me apresenta o seguinte erro:
07/07/2011 11:13:37 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre6/bin/client;C:/Arquivos de programas/Java/jre6/bin;C:/Arquivos de programas/Java/jre6/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\TortoiseSVN\bin
07/07/2011 11:13:37 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fj21-agenda' did not find a matching property.
07/07/2011 11:13:38 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
07/07/2011 11:13:38 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1428 ms
07/07/2011 11:13:38 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
07/07/2011 11:13:38 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
07/07/2011 11:13:38 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
07/07/2011 11:13:38 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
07/07/2011 11:13:39 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
07/07/2011 11:13:39 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
07/07/2011 11:13:39 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47 config=null
07/07/2011 11:13:39 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1137 ms
07/07/2011 11:13:58 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: org.apache.commons.lang.UnhandledException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at java.beans.Introspector.instantiate(Unknown Source)
at java.beans.Introspector.findExplicitBeanInfo(Unknown Source)
at java.beans.Introspector.
at java.beans.Introspector.getBeanInfo(Unknown Source)
at org.apache.jasper.compiler.Generator$TagHandlerInfo.
at org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2157)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1630)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
at org.apache.jasper.compiler.Generator.generate(Generator.java:3442)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:231)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)