Servlet retorna uma página HTML em branco

3 respostas
Glaubergs

Olá senhores. Estou tentando fazer essa aplicação funcionar a algum tempo. Quando preencho os dados e clico no Enviar do formulário HTML, ele retorna uma página em branco no navegador.

Detalhe é que eu criei um if que verifica se alguns dos campos digitados (disciplina ou senha) estão em branco e se estiver ele retorna a mensagem "Erro! Dados incompletos, há algum campo não preenchido". Isso está funcionando, mas se os campos são preenchidos corretamente, uma página em branco é retornada pelo servlet no browser.

Abaixo está o código do index.jsp que tem o formulário html e do servlet alunos.java

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>e-Chamadas</title>
    </head>
    <body>

        <center>
		<h1>Por favor, insira os dados abaixo:</h1>
		<form action="http://localhost:8084/eBusiness/Alunos">
		<table border=0 align=center>
			<tr>

				<th><b>Disciplina:</b></th>
				<td><input type="text" name="disciplina" size="30"></td>
			</tr>
			<tr>
				<th><b>Senha:</b></th>
				<td><input type="password" name="senha" size="6" maxlength="6"></td>
			</tr>
			<tr>

				<td colspan=2 align=center><input type=submit name="cmdEnviar" value="Enviar dados">
				<input type=reset name="cmdLimpar" value="Limpar dados"></td>
			</tr>
		</table>
		</form>
	</center>
    
    </body>
</html>
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.http.*;

public class Alunos extends HttpServlet {
    
    
    boolean status;
    ResultSet rs;
    Statement MeuState;
    Connection MinhaConexao;
    
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
    {
        //cria duas variáveis String que receberão os dados do formulário
        String disciplina = req.getParameter("disciplina");
        String senha = req.getParameter("senha");
                
        //verifica se o usuário não deixou um dos campos em branco
        if (!disciplina.equals("") && !senha.equals(""))
        {
            String url = "jdbc:mysql://localhost/eBusiness" + "root" + "";
            
            System.out.println("Entrada de dado reconhecida!");
            
            try {
                Class.forName("com.mysql.jdbc.Driver");
                //faz a conexão com o banco de dados, mandando o usuário (root) e a senha (em branco)
                MinhaConexao = DriverManager.getConnection ("jdbc:mysql://localhost/eBusiness" , "root" , "");
                System.out.println("Conexão estabelecida!");
            }
            catch (ClassNotFoundException exc1){
                System.out.println("Driver não encontrado!");
            return;}
            
            catch (SQLException exc){
            System.out.println("Conexão não realizada!");
            return;}
            
            //compara o que foi digitado no formulário com o que há no banco de dados
            try {
                MeuState = MinhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
                String SQL = "select * from senhas" + 
                             "where Materia = '"+disciplina+"'" +
                             "and Senha = '"+senha+"'";
                
                MeuState.execute(SQL);
                System.out.println("SQL executada!");
                //se a verificação foi feita corretamente, a variável status recebe true
                status = true;
            }
            catch (SQLException exc){
                    status = false;
            }
                  
        try {
            if (status)
            {
                PrintStream tela = new PrintStream(res.getOutputStream());
                tela.println("<HTML><BODY bgcolor=black>");
                tela.println("Obrigado, suas informacoes foram gravadas com sucesso");
                tela.println("<BR><P>");
                tela.println("</BODY></HTML>");
            }
            else {
                PrintStream tela = new PrintStream(res.getOutputStream());
                tela.println("<HTML><BODY>");
                tela.println("Dados já previamente cadastrados");
                tela.println("<BR><P>");
                tela.println("</BODY></HTML>");
            }
         }
        
        catch (IOException e){
            System.out.println("Problemas no retorno de dados");
        }
    }
    else
        try {
            PrintStream tela = new PrintStream(res.getOutputStream());
            tela.println("<HTML><BODY>");
            tela.println("Erro! Dados incompletos, há algum campo não preenchido");
        
            tela.println("</BODY></HTML>");
        }
        catch(IOException exc2){
            return;
        }
    }
}

3 Respostas

R

Provavalmente ta dando algum erro ao tentar conectar… o fluxo pode estar entrando em algum dos catch ClassNotFoundException ou SQLException e está executando o comando return.

Coloca um break point e executa em modo de debug que vc deve achar facil, facil onde vc ta errando (talvez falte colocar o jar do banco, ou a url de conexao ta errada, etc.

LPJava

to iniciando em servlets mais ontem fiz um codigo pequeno aqui e tb deu isso… e aqui foi somente pq esqueci de colocar

ele nao imprimiu nada nao sei pq… e deveria imprimir… mais va entender :D. hehe
LeoMarola

Já checou os logs?

:wink:

Criado 18 de novembro de 2007
Ultima resposta 19 de nov. de 2007
Respostas 3
Participantes 4