[problema]ControllerServlet - Caelum FJ21

2 respostas
metanolbr

Bom pessoal,

Dessa vez estou tendo problemas na criação do ControllerServlet. O problema é que na hora de acessar o endereço: "http://localhost:8080/jspteste/mvc?business=TestaMVC" eu obtenho um Erro 404 do Apache Tomcat

Erro do Apache Tomcat

HTTP Status 404 - 

--------------------------------------------------------------------------------

type Status report

message 

description The requested resource () is not available.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.18

web-xml

<servlet>
  	<servlet-name>spy</servlet-name>
  	<servlet-class>br.com.caelum.mvc.ControllerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>syp</servlet-name>
  	<url-pattern>/mvc</url-pattern>
  </servlet-mapping>

Business Logic.java

package br.com.caelum.mvc;

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

public interface BusinessLogic {
	void execute (HttpServletRequest request, HttpServletResponse response) throws Exception;

}

Testa-MVC

package br.com.caelum.mvc;

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

public class TestaMVC implements BusinessLogic {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		System.out.println("Executando a lógica e redirecionando...");
		
		RequestDispatcher rd = request.getRequestDispatcher("/mvc-ok.jsp");
		rd.forward(request, response);

	}

}

ControllerServlet.java

package br.com.caelum.mvc;

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{
	
	protected void service(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		
		String business = request.getParameter("business");
		String className = "br.com.caelum.mvc." + business;
		
		try {
			
			Class clazz = Class.forName(className);
			
			BusinessLogic businessLogic = (BusinessLogic)clazz.newInstance();
			businessLogic.execute(request, response);
		} catch (Exception e) {
			throw new ServletException ("A lógica de negócios causou uma exceção", e);
		}
	}

}
mvc-ok.jsp
<%@ 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>
	<h1>MVC-OK</h1>
</body>
</html>

Alguém consegue me ajudar nessa? Ja avaliei todos os códigos e nada. Não sei se é alguma configuração...

Seria de grande ajuda.

Muito obrigado,
metanolbr

2 Respostas

antonioedirane

Não sei se pode ser isso , mas no seu web.xml tem um erro de digitação.

<servlet>
  	<servlet-name>spy</servlet-name>
  	<servlet-class>br.com.caelum.mvc.ControllerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>syp</servlet-name>
  	<url-pattern>/mvc</url-pattern>
  </servlet-mapping>

Na linha 2 e na linha 6 o nome do servlet está diferente.
Linha 2 - spy
Linha 6 - syp

Espero que resolva.

metanolbr

antonioedirane:
Não sei se pode ser isso , mas no seu web.xml tem um erro de digitação.

<servlet>
  	<servlet-name>spy</servlet-name>
  	<servlet-class>br.com.caelum.mvc.ControllerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>syp</servlet-name>
  	<url-pattern>/mvc</url-pattern>
  </servlet-mapping>

Na linha 2 e na linha 6 o nome do servlet está diferente.
Linha 2 - spy
Linha 6 - syp

Espero que resolva.

Ai na moral, parei… rs :oops:. Não é que era isso mesmo, putz… Funcionando 100%. valeu!

Criado 5 de junho de 2009
Ultima resposta 5 de jun. de 2009
Respostas 2
Participantes 2