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.logicapackage 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;
}
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";
}
}
<html>
<body>
<h1> Página da nossa primeira lógica </h1>
</body>
</html>
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);
}
}
}
<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.