Erro ao fazer um cadastro Simples na Web -JavaEE

Ola pessoa estou desenvolvendo um cadastro de Fornecedor para Fac, vou postar minhas Classes(Obs está implementado somendo o campo nome do Fornecedor para melhor intendimento)

Classe FornecedorDAO

package Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import Negocio.Fornecedor;

public class FornecedorDAO implements DAO<Fornecedor> {
	private Connection conexao   = null;
	private PreparedStatement ps = null;
	private String sql           = null;
	private ResultSet rs         = null;
	private List<Fornecedor> lst = null;
	
	@Override
	public void insert(Fornecedor forn) {
		conexao = FabricaConexao.getConexao();
		sql     = "INSERT Fornecedor (nome) VALUES (?)";
		try {
			ps = conexao.prepareStatement(sql);
			ps.setString(1, forn.getNome());
			ps.execute();
			System.out.println("Fornecedor inserido com sucesso");
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro ao inserir no banco ");
		} finally{
			try {
				ps.close();	
				conexao.close();
			} catch (SQLException e) {	
				e.printStackTrace();
				System.out.println("Erro fechar conexão com o banco ");
			}			
		}	
	}
	
	
	@Override
	public void update(Fornecedor obj) {
		
	}

	@Override
	public void delete(Fornecedor obj) {
		
	}


	@Override
	public List<Fornecedor> read() {
		conexao = FabricaConexao.getConexao();
		sql     = "SELECT * FROM Fornecedor";
		Fornecedor f; 
		try {
			ps = conexao.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()){
				f = new Fornecedor(rs.getString("nome"));
				lst.add(f);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro ao criar lista de fornecedor ");

		}finally{
			try {
				rs.close();
				ps.close();
				conexao.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("Erro fechar conexão com o banco ");
			}

		}
		return lst;
	}
}

Classe Fornecedor

package Negocio;

public class Fornecedor {

	private String nome;

	public Fornecedor() {
	}

	public Fornecedor(String nome) {
		this.nome = nome;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

Classe CadastroFornecedorS - meu Servlet

package Apresentacao;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Negocio.Fornecedor;
import Persistencia.FornecedorDAO;


public class CadastroFornecedorS extends HttpServlet implements Servlet {
	private static final long serialVersionUID = 1L;
    private FornecedorDAO fDAO = new FornecedorDAO();
	       
	public CadastroFornecedorS() {
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}
		
	protected void doService(HttpServletRequest request, HttpServletResponse response){
		String nome  = request.getParameter("nome");
		Fornecedor fornecedor = new Fornecedor(nome);
		fDAO.insert(fornecedor);
		List<Fornecedor> lst = fDAO.read();
		request.setAttribute("Lista",lst);
		RequestDispatcher rDispatcher = request.getRequestDispatcher("ListaFornecedor.jsp");
		try {
			rDispatcher.forward(request,response);
		} catch (ServletException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	
	}

}

Arquivo JSP que é direcionado pelo Servlet

<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
    <jsp:directive.page language="java"
        contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />
    <jsp:text>
        <![CDATA[ <?xml version="1.0" encoding="ISO-8859-1" ?> ]]>
    </jsp:text>
    <jsp:text>
        <![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]>
    </jsp:text>
<%@page import="java.util.List" %>
<%@page import="Negocio.Fornecedor" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Lista de Fornecedor</title>
</head>
<h1>Lista de Fornecedor</h1>
<table>
<tr>
	<th>Número</th>
	<th>Nome</th>
</tr>
<%
List<Fornecedor> lstForn = (List<Fornecedor>) request.getAttribute("Lista");
int num = 1;
for(Fornecedor forn : lstForn){
%>	
<tr>
	<th><%=num++%></th>
	<th><%=forn.getNome()%></th>
</tr>
<%	
}
%>
</table>
<p></p>
<p><a href="CadastroFornecedor.html">Voltar</a></p>
<body>

</body>
</html>
</jsp:root>

Arquivo HTML para o cadastro do Fornecedo

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Fornecedor</title>
</head>
<body>
<h1>Cadastro de Fornecedor</h1>
<p></p>
<form name="frmCadastroFornecedor" method="post" action="CadastroFornecedorS">
	<p><input type="text" name="nome" size="50"/></p>
	<p><input type="submit" value="Cadastrar"/></p>
</form>
<p></p>
<p><a href='index.html'>Voltar</a></p>
</body>
</html>

Quando eu envio a requisição para meu Servlet apartir do botão cadastrar gera o seguinte 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
Persistencia.FornecedorDAO.read(FornecedorDAO.java:63)
Apresentacao.CadastroFornecedorS.doService(CadastroFornecedorS.java:42)
Apresentacao.CadastroFornecedorS.doPost(CadastroFornecedorS.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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

Pessoal o que pode ser? O problema é o Servlet eu acho!

vc não instanciou esta lista private List lst; do seu FornecedorDAO, por isso está dando NullPointerException… reveja seus objetos ou vc corre o risco de ter mais erros desse gênero.

[]'s

Sem contar que tá usando scriptlets no JSP, isto não se usa há uns 10 anos!

amhfilho - Então isso é por causa da fac que eu estou usando scriplet

Pessoa eu arrumei minha Classe FornecedorDAO

public List<Fornecedor> read() {
		conexao = FabricaConexao.getConexao();
		sql     = "SELECT * FROM Fornecedor";
		Fornecedor f; 
		try {
			ps  = conexao.prepareStatement(sql);
			rs  = ps.executeQuery();
			lst = new ArrayList<Fornecedor>();
			while(rs.next()){
				f = new Fornecedor(rs.getString("nome"));
				lst.add(f);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro ao criar lista de fornecedor ");

		}finally{
			try {
				rs.close();
				ps.close();
				conexao.close();
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("Erro fechar conexão com o banco ");
			}

		}
		return lst;
	}

CONTINUA DANDO ESSA MESMA MENSAGE DE ERRO

A mesma msg deve ser dificil kra, confere se o container pegou a atualização e se continuar a ter erro, posta o novo stacktrace

Você chegou a debugar? O problema ocorre na inserção ou na seleção?

Então pessoal não sei se é na seleção ou na inserção continua dando o 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
Persistencia.FornecedorDAO.read(FornecedorDAO.java:63)
Apresentacao.CadastroFornecedorS.doService(CadastroFornecedorS.java:42)
Apresentacao.CadastroFornecedorS.doPost(CadastroFornecedorS.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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

não tenho ideia do que poder ser,
me ajudem

Vc chegou a debugar? Viu em qual momento o erro ocorre?

Ola então ele chega inserir o problema acho que é na seleção mesmo, eu so novo em desenvolvimento Java não sei debugar corretamente Web, mais debug aki não sei se foi certo e deu essa mensagem agora

HTTP Status 500 -


type Exception report

message

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

exception

org.apache.jasper.JasperException: /ListaFornecedor.jsp(11,2) The content of elements must consist of well-formed character data or markup.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
org.apache.jasper.compiler.JspDocumentParser.parse(JspDocumentParser.java:212)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:230)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:118)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:171)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:317)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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

Retire o treco de codigo na jsp [code=<jsp:root xmlns:jsp=“http://java.sun.com/JSP/Page” version=“2.0”>
<jsp:directive.page language=“java”
contentType=“text/html; charset=ISO-8859-1” pageEncoding=“ISO-8859-1” />
jsp:text
]]>
</jsp:text>
jsp:text
<![CDATA[ ]]>
</jsp:text> ]

Primeiramente quero agradecer a ajuda, retirei o codigo agora gera essa menssagem

HTTP Status 500 -


type Exception report

message

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

exception

org.apache.jasper.JasperException: /ListaFornecedor.jsp(35,0) The end tag “</jsp:” is unbalanced
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
org.apache.jasper.compiler.Parser.checkUnbalancedEndTag(Parser.java:1714)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1580)
org.apache.jasper.compiler.Parser.parse(Parser.java:130)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:176)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:317)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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


Apache Tomcat/5.5.28

A tag jsp ainda esta aberta…posta o código da sua jsp como esta agora.

Agora está dando este Erro

HTTP Status 500 -


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: /ListaFornecedor.jsp:21

18: <%
19: List lstForn = (List) request.getAttribute(“Lista”);
20: int num = 1;
21: for(Fornecedor forn : lstForn){
22: %>
23:


24: <%=num++%>

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

java.lang.NullPointerException
org.apache.jsp.ListaFornecedor_jsp._jspService(ListaFornecedor_jsp.java:64)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

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


Apache Tomcat/5.5.28

OLHA MINHA JSP


<?xml version="1.0" encoding="ISO-8859-1" ?>

<%@page import="java.util.List" %>
<%@page import="Negocio.Fornecedor" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Lista de Fornecedor</title>
</head>
<body>

<h1>Lista de Fornecedor</h1>
<table>
<tr>
	<th>Número</th>
	<th>Nome</th>
</tr>
<%
List<Fornecedor> lstForn = (List<Fornecedor>) request.getAttribute("Lista"); //OBS NESTA LINHA FICA UM BALÃO DE EXCLAMAÇÃO
int num = 1;
for(Fornecedor forn : lstForn){
%>	
<tr>
	<th><%=num++%></th>
	<th><%=forn.getNome()%></th>
</tr>
<%	
}
%>
</table>
<p></p>
<p><a href="CadastroFornecedor.html">Voltar</a></p>
</body>
</html>

verifica se o seu request.getAttribute(“Lista”); não está retornando null no jsp.

Substitua a linha List lstForn = (List) request.getAttribute(“Lista”); por List lstForn = (ArrayList) request.getAttribute(“Lista”);

Pessoal mudei meu List para um ArrayList mais acho que não deve ser isto continua dando erro, verifiquei na classe CadastroFornecedorS a classe do Servlet me parece que está dando um erro nesta linha

String nome  = request.getParameter("nome");

Não sei porque, porque esta certo é o nome do campo do formulario.

Me ajudem!

Pessoa segue o novo erro que está ocorrendo

HTTP Status 404 - /Servlet/CadastroFornecedorS


type Status report

message /Servlet/CadastroFornecedorS

description The requested resource (/Servlet/CadastroFornecedorS) is not available.


Apache Tomcat/5.5.28

Pessoal mais alguem pode me ajudar? estou precisando muito

Obrigado a todos

Posta o código do seu servlet pois não esta localizando o jsp que vc especificou no foward.

meu Servlet

package Apresentacao;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Negocio.Fornecedor;
import Persistencia.FornecedorDAO;


public class CadastroFornecedorS extends HttpServlet implements Servlet {
	private static final long serialVersionUID = 1L;
    private FornecedorDAO fDAO = new FornecedorDAO();
	       
	public CadastroFornecedorS() {
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}
		
	protected void doService(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		String nome  = request.getParameter("nome");
		Fornecedor fornecedor = new Fornecedor(nome);
		fDAO.insert(fornecedor);
		List<Fornecedor> lst = fDAO.read();
		request.setAttribute("Lista",lst);
		RequestDispatcher rDispatcher = request.getRequestDispatcher("ListaFornecedor.jsp");
		try {
			rDispatcher.forward(request,response);
		} catch (ServletException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	
	}

}

meu HTML

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Fornecedor</title>
</head>
<body>
<h1>Cadastro de Fornecedor</h1>
<p></p>
<form name="frmCadastroFornecedor" method="post" action="CadastroFornecedorS">
	<p><input type="text" name="nome" size="50"/></p>
	<p><input type="submit" value="Cadastrar"/></p>
</form>
<p></p>
<p><a href='index.html'>Voltar</a></p>
</body>
</html>

MEU JSP

<?xml version="1.0" encoding="ISO-8859-1" ?>

<%@page import="java.util.List" %>
<%@page import="java.util.ArrayList" %>
<%@page import="Negocio.Fornecedor" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Lista de Fornecedor</title>
</head>
<body>

<h1>Lista de Fornecedor</h1>
<table>
<tr>
	<th>Número</th>
	<th>Nome</th>
</tr>
<%
List<Fornecedor> lstForn = (ArrayList<Fornecedor>) request.getAttribute("Lista");
int num = 1;
for(Fornecedor forn : lstForn){
%>	
<tr>
	<th><%=num++%></th>
	<th><%=forn.getNome()%></th>
</tr>
<%	
}
%>
</table>
<p></p>
<p><a href="CadastroFornecedor.html">Voltar</a></p>
</body>
</html>

Por favor me ajudem