Tenho estudado pela apostila da caelum, onde estou começando com o desenvolvimento web…
E estou acessando uma pagina jsp… mas nao estou conseguindo… se alguem pude me ajudar…
ContatoDAO
package br.com.caelum.agenda.dao;
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;
import br.com.caelum.agenda.factory.ConnectionFactory;
import br.com.caelum.agenda.model.Contato;
public class ContatoDAO {
private Connection connection;
private DAOException exception;
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Contato contato) {
String sql = "INSERT INTO contatos (nome,email,endereco,dataNascimento) VALUES (?,?,?,?)";
try {
PreparedStatement stmt = this.connection.prepareStatement(sql);
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) {
this.exception.getException(e);
}
}
public List<Contato> getLista() {
List<Contato> contatos = new ArrayList<Contato>();
try {
PreparedStatement stmt = this.connection
.prepareStatement("SELECT * FROM contatos");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// Criando o objeto de Contato
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("datanascimento"));
contato.setDataNascimento(data);
// Adiciona o contato a lista
contatos.add(contato);
}
rs.close();
stmt.close();
} catch (SQLException e) {
this.exception.getException(e);
}
return contatos;
}
public void altera(Contato contato) {
String sql = "UPDATE contatos SET " + "nome = ?," + "email = ?,"
+ "endereco = ?," + "datanascimento = ?" + "WHERE id = ?";
try {
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
stmt.setLong(5, contato.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
this.exception.getException(e);
}
}
public void remove(Contato contato) {
try {
PreparedStatement stmt = connection.prepareStatement("delete from contatos where id=?");
stmt.setLong(1, contato.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
this.exception.getException(e);
}
}
}
Factory
package br.com.caelum.agenda.factory;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection() {
try {
System.out.println("Connect to database...");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/fj21", "root", "root");
} catch (SQLException e) {
throw new RuntimeException();
}
}
}
lista-contatos-elegante.jsp
<%@ 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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<!-- Cria a lista -->
<jsp:useBean id="dao" class="br.com.caelum.agenda.dao.ContatoDAO"></jsp:useBean>
<table>
<!-- for -->
<c:forEach var="contato" items="${dao.lista}">
<tr>
<td>${contato.nome}</td>
<td>${contato.email}</td>
<td>${contato.endereco}</td>
<td>${contato.dataNascimento}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
segue um print da estrutura do projeto como esta:
http://img502.imageshack.us/i/estruturaprojeto.jpg/
o JAR encontra-se em:
fj21-agenda\WebContent\WEB-INF\lib
o do MySQL:
…\apache-tomcat-6.0.29\lib
O erro que resulta no console:
08/01/2011 19:46:50 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:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin;C:\Program Files (x86)\CollabNet\Subversion Client;C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin;C:\Users\Public\Documents\RAD Studio\8.0\Bpl;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Dell\DW WLAN Card\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Java\jdk1.6.0_22\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin
08/01/2011 19:46:50 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.
08/01/2011 19:46:50 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
08/01/2011 19:46:50 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 528 ms
08/01/2011 19:46:50 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
08/01/2011 19:46:50 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.29
08/01/2011 19:46:51 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
08/01/2011 19:46:51 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
08/01/2011 19:46:51 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
08/01/2011 19:46:51 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
08/01/2011 19:46:51 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
08/01/2011 19:46:51 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
08/01/2011 19:46:51 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
08/01/2011 19:46:51 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
08/01/2011 19:46:51 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
08/01/2011 19:46:51 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/30 config=null
08/01/2011 19:46:51 org.apache.catalina.startup.Catalina start
INFO: Server startup in 747 ms
08/01/2011 19:47:00 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.LoopTag
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1194)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1421)
at org.apache.jasper.compiler.Parser.parse(Parser.java:130)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
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:317)
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:857)
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)
08/01/2011 19:47:01 org.apache.catalina.loader.WebappClassLoader modified
INFO: Additional JARs have been added : 'jstl-api-1.2.jar'
08/01/2011 19:47:01 org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
08/01/2011 19:47:01 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
GRAVE: The web application [/fj21-agenda] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Eu consigo adicionar, alterar e remover, porem so nao consigo retornar a lista…