Não acha o Controlador de Servlet

4 respostas
M

Olá pessoal estou com problema no meu controlador de servlet la vai todos os códigos:

JSP:

<head>
		<meta charset="utf-8">
		<script src="javascript/javascript.js"></script> 
		<title>Insert title here</title>
	</head>
	<body>
		<header>
		</header>
		
		<article>
			<form action="mvc" method="POST" >
				<fieldset>
					<label> Id:</label>
					<input type="text" name="id"/>
					
					<label >Nome:</label>
					<input type="text" name="nome"/>
					
					<label >E-mail:</label>
					<input type="text" name="email"/>
					
					<label >Endereço:</label>
					<input type="text" name="endereco"/>
					
					<input type="hidden" name="logica" value="AlteraContatoLogic"/>
					<input type="submit" value="enviar">
				</fieldset>
			</form>
		</article>
	</body>
</html>

Mapeamento do controlador de servlet:

<servlet>
	<servlet-name>controlador</servlet-name>
	<servlet-class>br.com.caelum.mvc.ControllerServlet</servlet-class>
  </servlet>

  <servlet-mapping>
	<servlet-name>controlador</servlet-name>
	<url-pattern>/mvc</url-pattern>
  </servlet-mapping>

O proprio controlador:

package br.com.caelum.mvc;

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



public class ControllerServlet {
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException{
		
		String parametro = request.getParameter("logica");
		String nomeDaClasse = "br.com.caelum.mvc."+ parametro;
		
		try{
			Class classe = Class.forName(nomeDaClasse);
			
			Logica logica = (Logica) classe.newInstance();
			logica.executa(request, response);
			
		}catch (Exception e){
			throw new ServletException("A lógica de negócios causou uma exceção", e);
		}
		
	}

}

O outro servlet para onde deveria ser mandado as informações:

package br.com.caelum.mvc;

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

import br.com.caelum.classes.modelo;
import br.com.caelum.jdbc.dao.contatoDAO;

public class AlteraContatoLogic implements Logica{

	@Override
	public void executa(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		System.out.println("Executando a lógica e redirecionando...");
		
		modelo contato = new modelo();
		long id = Long.parseLong(request.getParameter("id"));
		contato.setId(id);
		contato.setNome(request.getParameter("nome"));
		contato.setEndereco(request.getParameter("endereco"));
		contato.setEmail(request.getParameter("email"));
		
		contatoDAO dao = new contatoDAO();
		dao.altera(contato);
		
		RequestDispatcher rd = request.getRequestDispatcher("/listandoContatos.jsp");
		rd.forward(request, response);
		System.out.println("Altera contato ..." + contato.getNome());
		
	}
	

}

Outra pagina que não chega aparecer:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Insert title here</title>
	</head>
	<body>
		<c:catch var="error">
			<jsp:useBean id="dao" class="br.com.caelum.jdbc.dao.contatoDAO" />
			<c:forEach var="contato" items="${dao.lista}">
				<ul>	
					<li>
					     ${contato.nome}
						 ${contato.email}
						 ${contato.endereco}
					</li>
				</ul>				
			</c:forEach>
		</c:catch>
		<c:if test="${not empty error}">
			<p> Ocorreu algum erro ou no acesso ou na manipulação dos dados. </p>
		</c:if>		
	</body>
</html>

O que acontece é que ele não acha o mapeamento mvc que coloco na action na primeira jsp, ja mais de uma hora pra ve se tinha algum erro de escrita, tem mais alguma coisa que eu deva fazer?

4 Respostas

renanreismartins
&lt;form action="mvc" method="POST" &gt;

isso está certo? não deveria ser /nomeDoProjeto/mvc ?

abrasss

M

Não é velho tentei agora não funcionou =|

java.lang.ClassCastException: br.com.caelum.mvc.ControllerServlet cannot be cast to javax.servlet.Servlet

esse cast que ele ta se referindo é o da Logica la neh? é o unico

J

sua classe ControllerServlet não dá um extend na classe javax.servlet.Servlet

M

hmm, se não extende dela não pode ser mapeado mesmo vlw ai velho

Criado 23 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 4
Participantes 3