Erro ao redirecionar requisicao em servlet!

9 respostas
A

Quando executo via console chamado da servlet ele roda normalmente, mas quando deixo para ele redirecionar para outra pagina aparece tudo em branco com o link como se nao fosse mapeado no web.xml .

Nao sei porque esta acontecendo isso, sei que pode ser um errinho besta, mas estou comecando em java para web.

Por favor me ajudem !

Servlet

package br.com.afOliveira.controle;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

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

import br.com.afOliveira.modelo.pessoa;
import br.com.afOliveira.persistencia.pessoaDAO;
import br.com.afOliveira.utils.datas;

/**
 * Servlet implementation class ServletControle
 */
public class ServletControle extends HttpServlet {

	private static final long serialVersionUID = 6487591703767958015L;

	public ServletControle() {

	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

//---------------------------------------------------------------------------------------------------------------	
	
	private void process(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		
		// pega parte da action ativada
		String cmd = request.getParameter("cmd");

		// inicializa variaveis a serem instanciadas
		pessoa objPessoa;
		pessoaDAO objPessoaDao;

		
				
// -------------------------------------------------------------------------------------------------------------

		// condicao para modulo inserir
		try {

			// verifica resto da String da action passada
			if (cmd.equalsIgnoreCase("inserir")) {
				// passara valores para o construtor da classe, null representa
				// matricula q eh auto incremento
				objPessoa = new pessoa(request.getParameter("nome"),
						datas.formataData(request.getParameter("data")));

				// instancia objeto DAO e passa como parametro o objeto
				// inicializado no construtor do bean
				objPessoaDao = new pessoaDAO();
				objPessoaDao.inserirPessoa(objPessoa);

				// Informa que foi gravado com sucesso
				request.setAttribute("mensagem", "Pessoa gravada com sucesso !");
				// redireciona para pagina index
				request.getRequestDispatcher("/index.html").forward(request,
						response);

			}

		} catch (Exception e) {
			// informa erro ao tentar gravar
			request.setAttribute("mensagem", "erro" + e.getMessage());
		}

//---------------------------------------------------------------------------------------------------------------------------

		// condicao para modulo ListarTodos
		try {

			// verifica resto da String da action passada (equalsIgnoreCase) =
			// tanto faz o tamanho das letras
			if (cmd.equalsIgnoreCase("listarTodos")) {

				PrintWriter out = response.getWriter();

				// instancia objeto DAO e lanca o foreach para percorrer a lista
				objPessoaDao = new pessoaDAO();

				out.print("<h1>As pessoas cadastradas sao :</h1>");
				out.print("<table border='1'>");
				out.print("<tr>");
				out.print("<td>Matricula</td>");
				out.print("<td>Nome</td>");
				out.print("<td>Data de Nascimento</td>");
				out.print("</tr>");

				for (pessoa itPessoa : objPessoaDao.consultarPessoa()) {
					out.print("<td>" + itPessoa.getMatricula() + "</td>");
					out.print("<td>" + itPessoa.getNome() + "</td>");
					out.print("<td>" + itPessoa.getDataNasc() + "</td>");
				}

				out.print("</table>");

				// redireciona para pagina resultado
				request.getRequestDispatcher("/resultado.jsp").forward(request,
						response);

			}

		} catch (Exception e) {
			// informa erro ao tentar listar
			request.setAttribute("mensagem", "erro" + e.getMessage());
		}

// -------------------------------------------------------------------------------------------------------------------

	}

}

HTML index.html

<!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></title>
</head>
<body>
<h1>Selecione : </h1>
<form action="ServletControle?cmd=listarTodos" method="post" style="width: 134px; ">
<input type="submit" value="Listar Todos"></input>
<br/>
</form>
<input type="button" value="Alterar" onclick="location.href='alterar.jsp'">
<br/>
<input type="button" value="Inserir" onclick="location.href='inserir.jsp'" >
<br/>
<input type="button" value="Excluir" onclick="location.href='excluir.jsp'" >

</body>
</html>

DAO

package br.com.afOliveira.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import br.com.afOliveira.modelo.*;
import br.com.afOliveira.persistencia.*;

public class pessoaDAO {

	private PreparedStatement comando;
	private Statement comando2;
	
	
	public void inserirPessoa(pessoa Pessoa) {
		try {
			pessoa obj = new pessoa();
			comando = (PreparedStatement) FactoryConnection.getConnection()
					.createStatement();
			String sql = "insert into pessoa (matricula, nome, data_nasc) values(?,?,?)";
			
			comando.setInt(1, obj.getMatricula());
			comando.setString(2, obj.getNome());
			comando.setDate(3, (java.sql.Date) obj.getDataNasc());
			
			comando.execute();
			comando.close();
			
		} catch (SQLException e) {
			e.getErrorCode();
		}

	}

	public void alterarPessoa(pessoa Pessoa) {

	}

	public void excluirPessoa(pessoa Pessoa) {

	}

	public List<pessoa> consultarPessoa() {

		List<pessoa> resultPesquisa = new ArrayList<>();

		try {
			pessoa obj = new pessoa();
			comando2 = FactoryConnection.getConnection()
					.createStatement();
			String sql = "select * from pessoa";
			ResultSet resultado = comando2.executeQuery(sql);

			while (resultado.next()) {

				obj.setMatricula(resultado.getInt("matricula"));
				obj.setNome(resultado.getString("nome"));
				obj.setDataNasc(resultado.getDate("data_nasc"));

				resultPesquisa.add(new pessoa(obj.getMatricula(),
						obj.getNome(), obj.getDataNasc()));
			}
			return resultPesquisa;
		}

		catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;

	}
}

9 Respostas

drsmachado

Não entendi. O erro ocorre quando?

A

entao eu clico no submit do ListarTodos por exemplo, ai ele gera a url ServletControle?cmd=listarTodos e a pagina em branco, ou seja, nao redireciona para resultado.jsp como eu setei la. Se eu colocar no servlet p ele rodar via console (sysout) ele lista sem problemas.

A

erro 404 esta dando !

L

Cade a pagina resultado.jsp erro 404 é que ele nao esta encontrando a pagina voce tem certeza que criou ela e ela esta no mesmo diretorio da index.html

A

sim

A

o problema eh q nem redireciona redireciona, a url aparece a do servlet ! nao encontrou o servlet entao !

Alys

Olá,

Cara, não entendi direito o problema exposto. Você postou os fontes, muito bom, mas faltou colocar também o web.xml (principalmente porque você suspeita que possa ser um problema de mapeamento).

  1. Creio que não, mas, para confirmar: quando você sobe o Tomcat, aparece algum erro no log?

  2. Quando você acessa a url do seu projeto, tipo http://localhost:8080/<nome_do_projeto>, o que é exibido?

  3. Você tentou debugar o projeto, para ver se o servlet está sendo chamado? E se o fluxo está seguindo conforme você esperava?

  4. Essa é mais por curiosidade: por que você usou inputs tipo “button” ao invés de “submit”? Se o Get e o Post fazem a mesma coisa, não entendi o objetivo disso.

Tente ser mais claro ao explicar o problema.

A

respondendo as perguntas :

1- subo normalmente e nao aparece nenhum erro no log.
2- quando coloco a url do projeto http://localhost:8080/SisCadPessoa ele acessa normalmente o index.html.
3- tentei debugar mas nem abre, ( cai na tela em branco ) escrito source not found e um botao ( edit source lookup path ), no log do debug aparece a Thread[main](suspended(exception ClassNotFoundException))
4- o submit e pq dali ele ja chama as servlets, os buttons sao p chamar as outras paginas q la vao ter seus submits para chamar a servlet por post ou get. Ou seja, button soh por aparencia ao inves de links.

A
<?xml version="1.0" encoding="UTF-8"?>
<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>SisCadPessoa</display-name>
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
 
  <servlet>
    <servlet-name>ServletControle</servlet-name>
    <servlet-class>br.com.afOliveira.controle.ServletControle</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>ServletControle</servlet-name>
    <url-pattern>/ServletControle</url-pattern>
  </servlet-mapping>
  
</web-app>

O web.xml

Criado 12 de setembro de 2012
Ultima resposta 19 de set. de 2012
Respostas 9
Participantes 4