Amigos do GUJ, preciso saber o que está acontecendo com minha servlet ! Ela gera o seguinte erro:
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:368)
at org.apache.catalina.core.ApplicationDispatcher.access$000(ApplicationDispatcher.java:116)
at org.apache.catalina.core.ApplicationDispatcher$PrivilegedForward.run(ApplicationDispatcher.java:131)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:348)
at realsericard.Cadastro.service(Cadastro.java:162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:98)
e meu código fonte é o seguinte:
package realsericard;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import realsericard.Conexao;
public class Cadastro extends HttpServlet
{
public void init() throws ServletException
{ }
private boolean Consulta(Connection con,String cnpj)
{
boolean retorno = false;
try
{
ResultSet rs = null;
PreparedStatement pst = null;
pst = con.prepareStatement(CONSULTA);
pst.setString(1,cnpj);
rs = pst.executeQuery();
if(rs.next())
{
retorno = true;
}else
retorno = false;
}catch(Exception e)
{
e.printStackTrace(System.out);
}
return retorno;
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession sessao = request.getSession(true);
RequestDispatcher disp = null;
String responsavel = request.getParameter("responsavel");
String cpf = request.getParameter("cpf");
String razao = request.getParameter("razao_social");
String cnpj = request.getParameter("cnpj");
String endereco = request.getParameter("endereco");
String cidade = request.getParameter("cidade");
String uf = request.getParameter("uf");
String cep = request.getParameter("cep");
String telefone = request.getParameter("fone");
String email = request.getParameter("email");
String publicidade = request.getParameter("publicidade");
String senha = request.getParameter("senha");
if(responsavel.equals("") || cpf.equals("") || razao.equals("") ||
cnpj.equals("") || endereco.equals("") || cidade.equals("") ||
uf.equals("") || cep.equals("") || telefone.equals("") ||
email.equals("") || publicidade.equals("") || senha.equals(""))
{
//dados obrigatórios não preenchidos
sessao.setAttribute("mensagem","Campos obrigatórios não preenchidos.");
disp = getServletContext().getRequestDispatcher("/jsp/cadastro.jsp");
disp.forward(request,response);
}
senha = senha.toLowerCase();
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
Conexao conexao = new Conexao();
try
{
con = conexao.Conecta();
// verifica se a empresa já foi cadastrada
if(Consulta(con,cnpj))
{
//empresa ja foi cadastrada
sessao.setAttribute("mensagem","ERRO: Empresa/CNPJ já foi cadastrada anteriormente !");
disp = getServletContext().getRequestDispatcher("/jsp/cadastro.jsp");
disp.forward(request,response);
}else
{
pst = con.prepareStatement(INSERE);
pst.setString(1,responsavel);
pst.setString(2,cpf);
pst.setString(3,razao);
pst.setString(4,cnpj);
pst.setString(5,endereco);
pst.setString(6,cidade);
pst.setString(7,uf);
pst.setString(8,cep);
pst.setString(9,telefone);
pst.setString(10,email);
pst.setString(11,publicidade);
pst.setString(12,senha);
String arrayEmail[]={responsavel,cpf,razao,cnpj,endereco,cidade,uf,cep,telefone,email,publicidade,senha};
pst.executeUpdate();
pst = con.prepareStatement(LOGIN);
pst.setString(1,responsavel);
pst.setString(2,email);
pst.setString(3,senha);
pst.executeUpdate();
//empresa foi cadastrada
sessao.setAttribute("email",email);
disp = getServletContext().getRequestDispatcher("/jsp/mensagem.jsp");
disp.forward(request,response);
}
pst.close();
con.close();
}catch(Exception exception)
{
exception.printStackTrace(System.out);
sessao.setAttribute("exception",exception);
disp = getServletContext().getRequestDispatcher("/jsp/erro.jsp");
disp.forward(request,response); //LINHA ONDE DA O ERRO !!
}
sessao.invalidate();
}
private static final String INSERE = "INSERT INTO cadsimples("+
"responsavel,cpf,razao_social,cnpj,endereco,cidade,uf,cep,telefone,email,publicidade,senha,habilitado) "+
"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,'não')";
private static final String LOGIN = "INSERT INTO LOGIN"+
"(RESPONSAVEL,EMAIL,SENHA) VALUES (?,?,?)";
private static final String CONSULTA = "SELECT CNPJ FROM CADSIMPLES "+
"WHERE CNPJ = ?";
}