Problema primeira-logica Caelum FJ21

2 respostas
F

Pessoal, bom dia.
Estou com um pequeno problema quanto a um exemplo da apostila da Caelum referente a instanciar uma classe e executar seu método executa.

Procurei alguns tópicos no fórum porém não obtive êxito.

Está sendo lançada a Exception informando que a página não existe, ao tentar executar a seguinte url:
[url]http://localhost:8080/fj21-agenda/mvc?logica=PrimeiraLogica [/url]

Creio que o problema possa estar no mapeamento do servlet, porém não consegui identificar aonde.

Abaixo segue meu código:

1) interface Logica no pacote br.com.caelum.mvc.logica
package br.com.caelum.mvc.logica;

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

public interface Logica {
	String executa(HttpServletRequest req, HttpServletResponse res) throws Exception;
	
}
2) classe PrimeiraLogica, também no pacote br.com.caelum.mvc.logica
package br.com.caelum.mvc.logica;

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

public class PrimeiraLogica  implements Logica
{
	public String executa(HttpServletRequest req, HttpServletResponse res) throws Exception
	{
		System.out.println("Executando a lógica");
		
		System.out.println("Retornando o nome da página JSP...");
		return "primeira-logica.jsp";
	}
}
3) JSP primeira-logica.jsp dentrododiretórioWebContent:
<html>
       <body>
           <h1> Página da nossa primeira lógica </h1>
       </body>
</html>
4) Classe ControllerServlet no pacote br.com.caelum.mvc.servlet:
package br.com.caelum.mvc.servlet;

import java.io.IOException;

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

import br.com.caelum.mvc.logica.Logica;

@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet 
{
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		String parametro = request.getParameter("logica");
		String nomeDaClasse = "br.com.caelum.mvc.logica." + parametro;
		
		try
		{
			Class classe = Class.forName(nomeDaClasse);
			
			Logica logica = (Logica)classe.newInstance();
			String pagina = logica.executa(request, response);
			
			request.getRequestDispatcher(pagina).forward(request, response);
		} catch (Exception e)
		{
			throw new ServletException("A lógica de negócio causou uma exceção", e);
		}
	}
}
5) web.xml:
<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>JSP</display-name>  
  <welcome-file-list>  
    <welcome-file>bemvindo.jsp</welcome-file>  
  </welcome-file-list>  
    
  <servlet>  
    <servlet-name>adicionaContato</servlet-name>  
    <servlet-class>br.com.caelum.servlet.AdicionaContatoServlet</servlet-class>  
  </servlet>  
    
  <servlet-mapping>  
  <servlet-name>adicionaContato</servlet-name>  
  <url-pattern>/adicionaContato</url-pattern>  
  </servlet-mapping>  
  
  <servlet>  
    <servlet-name>ControllerServlet</servlet-name>  
    <servlet-class>br.com.caelum.mvc.servlet.ControllerServlet</servlet-class>  
  </servlet>  
  
  <servlet-mapping>  
    <servlet-name>ControllerServlet</servlet-name>  
    <url-pattern>/mvc</url-pattern>  
  </servlet-mapping>  
  
       
  <error-page>  
  <exception-type>java.lang.*</exception-type>  
  <location>/erro.html</location>  
  </error-page>    
  
  <error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
  </error-page> 
    
</web-app>

Desde já agradeço,
Fernando Nascimento.

2 Respostas

F
F

Problema resolvido.
Retirada a anotation e inserido o mapeamento através do arquivo web.xml.

Criado 28 de maio de 2014
Ultima resposta 28 de mai. de 2014
Respostas 2
Participantes 1