Problemas com MVC

Ola Pessoal.
Estou aprendedo java web com a apostila fj21 da caelum e encontrei dificuldades com o exercicio 9.7, sobre mvc.
Segem meus códigos:
A interface:

package mvc.logica;

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

public interface Logica {
    void executa(HttpServletRequest req,
            HttpServletResponse res)throws Exception;
}

A classe PrimeiraLogica:

package mvc.logica;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PrimeiraLogica implements Logica{
    public void executa(HttpServletRequest req,
            HttpServletResponse res) throws Exception{
        System.out.println("Executando a logica e redirecionando...");
        
        RequestDispatcher rd = req.
                getRequestDispatcher("/primeira-logica.jsp");
        rd.forward(req, res);
    }
}

A servlet Controller:

package mvc.Controller;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mvc.logica.*;

public class ControllerServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                super.service(request, response);
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
    
        String parametro = request.getParameter("logica");
        String nomeDaClasse = "mvc.logica.PrimeiraLogica";
        nomeDaClasse+= parametro;
        
        try{
            Class classe = Class.forName(nomeDaClasse);
            
            Logica logica = (Logica) classe.newInstance();
            logica.executa(request, response);
        }catch(Exception e){
            throw new ServletException(e);
        }
    }
}

O xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Controlador</servlet-name>
        <servlet-class>mvc.Controller.ControllerServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Controlador</servlet-name>
        <url-pattern>/mvc</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Bom, eu não consegui encotrar o erro, ele sempre vai para a exceção,

17/12/2012 14:43:21 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Controlador] in context with path [/AgendaServlet1] threw exception [java.lang.ClassNotFoundException: mvc.logica.PrimeiraLogicaPrimeiraLogica] with root cause
java.lang.ClassNotFoundException: mvc.logica.PrimeiraLogicaPrimeiraLogica
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at mvc.Controller.ControllerServlet.service(ControllerServlet.java:43)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Desde já, obrigada.

Será que não houve algum engano aí na hora de concatenar o nome da classe?

esse erro seu deve estar neste trecho

String parametro = request.getParameter("logica"); String nomeDaClasse = "mvc.logica.PrimeiraLogica"; nomeDaClasse+= parametro;

[quote=josemanzoli]esse erro seu deve estar neste trecho

String parametro = request.getParameter("logica"); String nomeDaClasse = "mvc.logica.PrimeiraLogica"; nomeDaClasse+= parametro; [/quote]

é isso mesmo josé

String parametro = request.getParameter("logica"); String nomeDaClasse = "mvc.logica.PrimeiraLogica"; // aqui tem que ter apenas o pacote, mas vc já colocou o nome da classe tambem nomeDaClasse+= parametro;

o certo seria assim:

String logica = request.getParameter("logica"); String pacote = "mvc.logica."; // sem a classe pacote += logica ;

Resolvi esse problema, no entanto surgiu outro relacionado ao método forward(), estive procurando, mas não encontrei solução.
Obrigda pela a ajuda.

Este é o novo erro:

17/12/2012 15:59:04 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Controlador] in context with path [/AgendaServlet1] threw exception [java.lang.IllegalStateException: Cannot forward after response has been committed] with root cause
java.lang.IllegalStateException: Cannot forward after response has been committed
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:339)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at mvc.logica.PrimeiraLogica.executa(PrimeiraLogica.java:22)
	at mvc.Controller.ControllerServlet.service(ControllerServlet.java:46)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Obrigada pela ajuda.

O erro era simples. Causado pela linha:

super.service(request, response);

Que deveria ser retirada.