Erro no meu RequestDispatcher

10 respostas
Hermanitto

Oi…
alguem poderia me ajudar,
eu tenho esse requestDispatcher
q esta dando erro ao dispachar pra pagina, apos ter feito a ação
alguem pode dar uma dica?

package br.com.supremacia.controller;

import java.sql.SQLException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import br.com.supremacia.dao.CidadeDAO;
import br.com.supremacia.model.CidadeVO;

public class IncluiCidadeAction implements BusinessLogic {

public void execute(HttpServletRequest req, HttpServletResponse res)
		throws Exception {
	System.out.println("Executando a logica e redirecionando...");
	CidadeVO cidade = new CidadeVO();
	cidade.setNome(req.getParameter("nome"));
	cidade.setDdd(req.getParameter("ddd"));
	cidade.setUf(req.getParameter("uf"));
	 
	 try{
		 CidadeDAO dao = new CidadeDAO();
		 dao.adiciona(cidade);
		}catch (SQLException e){
			throw new ServletException (e);
		}
	 RequestDispatcher rd = req.getRequestDispatcher("/cidade-ok.jsp");
	 rd.forward(req, res);
}

}

10 Respostas

rafaelglauber

o post tá duplicado… :frowning:

coloca o erro usando a tag “Code”

Hermanitto

27/11/2007 22:12:24 org.apache.catalina.storeconfig.StoreLoader load INFO: Find registry server-registry.xml at classpath resource 27/11/2007 22:12:24 org.apache.catalina.startup.Catalina start INFO: Server startup in 2328 ms Executando a logica e redirecionando... conectado ao banco 27/11/2007 22:12:41 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet ControllerServlet threw exception java.lang.IllegalStateException: Cannot forward after response has been committed at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:313) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at br.com.supremacia.controller.IncluiCidadeAction.execute(IncluiCidadeAction.java:30) at br.com.supremacia.controller.ControllerServlet.service(ControllerServlet.java:35) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source)

Hermanitto

ta ae o codigo de erro q aparece no meu CONSOLE

furutani

Olá

Acho que você alterou algo no response antes de dar forward.
Tenha certeza que o parametro HttpServletResponse res não é compartilhado com nenhuma outra instância de um objeto BussinessLogic.

Hermanitto

tow axando, q pode ser pq eu passo um HIDDEN no POST do meu form html
será q pode ser isso?

Hermanitto
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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">
<title>Insert title here</title>
</head>
<body>
digite os dados:
	<form action="controller" method="POST">
	 Cidade: <input type="text" name="nome"/><br/>
	 DDD:	 <input type="text" name="ddd"/><br/>
	 UF:     <input type="text" name="uf"/><br/>
	 		 <input type="hidden" name="business" value="IncluiCidadeAction"/><br/>
	 		 <input type="submit" value="Enviar"/>
	</form>
</body>
</html>
Hermanitto

Esse e o meu Controlador

package br.com.supremacia.controller;

import java.io.IOException;

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

public class ControllerServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(req, res);
		String businessLogicClassName = "br.com.supremacia.controller." + req.getParameter("business");
		Class businessLogicClass = null;
		try{
			businessLogicClass = Class.forName(businessLogicClassName);
			}catch (ClassNotFoundException e){
					throw new ServletException("Não encontro a classe" + businessLogicClassName);
			}
		    if(!BusinessLogic.class.isAssignableFrom(businessLogicClass)){
		    	throw new ServletException("classe não implementa a interface: "+ businessLogicClassName);
		    }
		    BusinessLogic businessLogicObject = null;
		    try{
		    	businessLogicObject = (BusinessLogic) businessLogicClass.newInstance();
		      }catch (InstantiationException e){
		    	  throw new ServletException(e);
		      }catch (IllegalAccessException e){
		    	  throw new ServletException(e);
		      }
		      try{
		    	  businessLogicObject.execute(req, res);
		      }catch (Exception e){
		    	  throw new ServletException("A lógica de negócios causou uma exceção", e);
		      }
	}		
	

}
furutani

Tenta rodar sem essa linha

super.service(req, res);
Hermanitto

Caraaaaaa…
mtoooo obrigadooooo
funcionou, foi soh tirar essa linha…

eh pq ele tava construindo o Servlet, e nessa hora ele gravava no Response ne?
legal
valeu…
te mais

furutani

Hermanitto:
Caraaaaaa…
mtoooo obrigadooooo
funcionou, foi soh tirar essa linha…

eh pq ele tava construindo o Servlet, e nessa hora ele gravava no Response ne?


É sim.
De nada

Criado 27 de novembro de 2007
Ultima resposta 27 de nov. de 2007
Respostas 10
Participantes 3