Boa Noite, estou fazendo o projeto web da apostila fj21 da caelum, tive alguns problemas e consegui resolver graças ao forum, mas me deparei com 1 problema que nem consigo entender…
No projeto Java as classes de conexão, de DAO, e de testes funcionam perfeitamente, ja verifiquei no banco de dados e o contato foi adicionado com sucesso sem erro, coloquei essas classes no projeto web e la elas não funcionam da seguinte maneira…
quando executo no browser e escrevo o nome e etc e clico em gravar, ele da esse maldito erro:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
br.com.wacontactcenter.jdbc.dao.ContatoDAO.adiciona(ContatoDAO.java:25)
br.com.wacontactcenter.servlet.AdicionaFuncionario.service(AdicionaFuncionario.java:33)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.36 logs.
O que eu acho muito estranho e que o xml esta configurado corretamente e as classes quando executo a classe teste que adiciona um contato na mão la dentro do eclipse funciona perfeitamente mesmo dentro do projeto web,mas pelo browser nao funciona, sera que quando vamos no projeto web tem que configurar algo diferente?
Meu xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Intranet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>AdicionaFuncionario</servlet-name>
<servlet-class>
br.com.wacontactcenter.servlet.AdicionaFuncionario
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdicionaFuncionario</servlet-name>
<url-pattern>/adicionaFuncionario</url-pattern>
</servlet-mapping>
</web-app>
Minha Classe DAO:
[code]package br.com.wacontactcenter.jdbc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.wacontactcenter.jdbc.modelo.Contato;
import br.com.wacontactcenter.jdbc.connect.Connect;
public class ContatoDAO {
private Connection connection;
public ContatoDAO() {
this.connection = new Connect().getConexao();
}
public void adiciona(Contato contato) {
String sql = "insert into usuarios_intranet " +
"(nome,departamento)" +
" values (?,?)";
try {
// prepared statement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
// seta os valores
stmt.setString(1,contato.getNome());
stmt.setString(2,contato.getDepartamento());
// executa
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}[/code]
Servlet AdicionaContato:
[code]package br.com.wacontactcenter.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.wacontactcenter.jdbc.dao.ContatoDAO;
import br.com.wacontactcenter.jdbc.modelo.Contato;
public class AdicionaFuncionario extends HttpServlet {
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// busca o writer
PrintWriter out = response.getWriter();
// buscando os parâmetros no request
String nome = request.getParameter("nome");
String departamento = request.getParameter("departamento");
// monta um objeto contato
Contato contato = new Contato();
contato.setNome(nome);
contato.setDepartamento(departamento);
// salva o contato
ContatoDAO dao = new ContatoDAO();
dao.adiciona(contato);
// imprime o nome do contato que foi adicionado
out.println("<html>");
out.println("<body>");
out.println("Funcionario " + contato.getNome() +
" adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}[/code]
Como sou inciante em java não estou conseguindo resolver esse problema, sera que alguem poderia me ajudar?
OBS: Desculpem os erros de português !!