Servlet retorna nada, página em branco. (Resolvido)

9 respostas
T

Ola a todos,

Estando tendo um problema, tenho um formulário queo action é para um Servlet, nesse servlet eu faço o login e abro um sessão, porém quando eu clico em enviar ele vai pro servlet, porém, não me aparece informação alguma alguma, fica com a página em branco. Abaixo segue o código das páginas:

LOGIN.JSP

<%@ include file="cabecalho.jsp" %>
<%@ include file="menu.jsp" %>

<div class="principal">
    
    <h2>Login</h2>
    
    <form action="ServletLogin" method="post">
        E-mail: </br>
        <input type="text" name="email" /></br></br>
        
        Senha: </br>
        <input type="password" name="senha" /></br></br>
        
        <input type="submit" value="Entrar" />
    </form>
    
</div>

<%@ include file="rodape.jsp" %>

ServletLogin

package webmundo.acao;

import com.mysql.jdbc.PreparedStatement;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import webmundo.conexao.ConexaoBd;

public class ServletLogin extends HttpServlet {
    
    private String email, senha;
    private Connection conexao;
    private PreparedStatement ps;
    private ResultSet rs;
    
    public ServletLogin() throws ClassNotFoundException {
        
        this.conexao = new ConexaoBd().Conexao();
        
    }
    
    @Override
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       
         email = request.getParameter("email");
         senha = request.getParameter("senha");
         
    }

    void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        
        
        ps = (PreparedStatement) conexao.prepareStatement("SELECT usu_email, usu_senha, usu_nome FROM Usuarios WHERE "
                + "usu_email = " + email + " AND usu_senha = " + senha);
        rs = ps.executeQuery();
        conexao.close();
        
        if(rs.next()) {
            
            HttpSession sessao = request.getSession();
            String logado = rs.getString("usu_nome");
            sessao.setAttribute("logado", logado);
            request.getRequestDispatcher("index.jsp").forward(request,response);
            
            
            }
            else {
            
                request.getRequestDispatcher("login.jsp?erro=1").forward(request,response);
                
            }
                        
        }
        
    }

Alguém sabe o por que de estar ocorrendo isso?

Obrigado

9 Respostas

L

Amigo implemente apenas o metodo doPost ou entao seu metodo doPost deve chamar o metodo

@Override  
     protected void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
         
         email = request.getParameter("email");  
         senha = request.getParameter("senha");  
         processRequest(request, response);            
    }
T

Ola Leonardo,

Obrigado pela resposta!

Fiz o que você indicou mas continua a mesma coisa. Só com o doPost ou chamando ou método processRequest.

Alguma outra idéia?

Obrigado

L

ele não esta gerando nenhum erro?

esse rs é um resultSet?

Se ele for resultSet como voce esta fechando a conexao e depois dando next nele?

T

Estava la quando estava fazendo alguns testes, mas mesmo colocando no local certo, continua ficando tudo em branco, não retorna nenhuma erro. Segue abaixo o código do Servlet como esta no momento:

package webmundo.acao;

import com.mysql.jdbc.PreparedStatement;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import webmundo.conexao.ConexaoBd;

public class ServletLogin extends HttpServlet {
    
    private String email, senha;
    private Connection conexao;
    private PreparedStatement ps;
    private ResultSet rs;
    
    public ServletLogin() throws ClassNotFoundException {
        
        this.conexao = new ConexaoBd().Conexao();
        
    }
    
    @Override
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       
         email = request.getParameter("email");
         senha = request.getParameter("senha");
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(ServletLogin.class.getName()).log(Level.SEVERE, null, ex);
        }
         
    }

    void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        
        
        ps = (PreparedStatement) conexao.prepareStatement("SELECT usu_email, usu_senha, usu_nome FROM Usuarios WHERE "
                + "usu_email = " + email + " AND usu_senha = " + senha);
        rs = ps.executeQuery();
        
        if(rs.next()) {
            
            HttpSession sessao = request.getSession();
            String logado = rs.getString("usu_nome");
            sessao.setAttribute("logado", logado);
            request.getRequestDispatcher("index.jsp").forward(request,response);
            rs.close();
            
            }
            else {
            
                request.getRequestDispatcher("login.jsp?erro=1").forward(request,response);
                rs.close();
            }
                        
        }
        
    }
L

Amigo faça o seguinte coloque

o codigo na ultima linha do seu metodo doPost

response.getWriter().close();

outra dica tente usar o sendRedirect do response ao invés do request

S

Amigo Desculpe se vou estar falando alguma besteira

sou novo ainda e to tendo um pouco de dificuldade com servlets

porém pelo q meu professor me falou quando vc vai chamar um servlets

vc usa o nome dele e no lugar de .java é .do

e vc não da referencia a nenhum deles [quote=tvieira]
<%@ include file="cabecalho.jsp" %>
<%@ include file="menu.jsp" %>

<div class="principal">
    
    <h2>Login</h2>
    
    <form action="ServletLogin" method="post">
        E-mail: </br>
        <input type="text" name="email" /></br></br>
        
        Senha: </br>
        <input type="password" name="senha" /></br></br>
        
        <input type="submit" value="Entrar" />
    </form>
    
</div>

<%@ include file="rodape.jsp" %>
<form action="ServletLogin.do" method="post">
L

Seguinte o .do é apenas uma nomeclatura muito utilizado quando se usa Struts

a action do seu form tem que ter o nome que voce registrou seu servlet no web.xml a tag é servlet-name

S

leonardobhbr:
Seguinte o .do é apenas uma nomeclatura muito utilizado quando se usa Struts

a action do seu form tem que ter o nome que voce registrou seu servlet no web.xml a tag é servlet-name

blz

vlw!!!

T

Alguma coisa tem de errado!

O Netbeans ele não gerou um arquivo web.xml

E quando eu coloco um ponto de interrupção para debugar o servlet, não acontece nada, como se nem estivesse chamando o servlet.

Fiz as últimas dicas mas nenhuma funcionou, continua a mesma coisa.

EDIT------------------------------------------

Resolvido! Eu não estava colocando as variáveis no SQL entre aspas simples e estava dando erro.

Obrigado

Criado 23 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 9
Participantes 3