Duvida sobre pagina de login

3 respostas
K

alguém é capaz de detectar algo errado no código abaixo? quando eu executo, apos digitar o usuario e a senha, a pagina fica em branco.

public class Login extends HttpServlet {

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DATABASE_URL = "jdbc:mysql://localhost/horalivre";
   static final String DB_USER = "root";
   static final String DB_PASS = "kmo1982";

public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
   
    String nome = request.getParameter("nome");
    String senha = request.getParameter("senha");
    
  Connection connection = null;
  Statement statement = null;

  try 
  {
     Class.forName( JDBC_DRIVER );

     connection =  DriverManager.getConnection( DATABASE_URL, DB_USER, DB_PASS );

     statement = connection.createStatement();
     
     ResultSet resultSet = statement.executeQuery("SELECT id, senha FROM usuario WHERE nome='"+nome+"';" );
     
     String pwd = resultSet.getString("senha");
     
     RequestDispatcher rd;
     
     if (pwd.equals(senha)) {
         Cookie c = new Cookie("user",resultSet.getString("id"));
         c.setMaxAge(1000000);
         response.addCookie(c);
         rd = getServletContext().getRequestDispatcher("/menu.jsp");
     }
     else {
         rd = getServletContext().getRequestDispatcher("/erro.jsp");
     }
     rd.forward(request,response);
  }
  catch (SQLException sqlException)                                
  {                                                                  
     sqlException.printStackTrace();
  }
  catch (ClassNotFoundException classNotFound)                     
  {                                                                  
     classNotFound.printStackTrace();            
  }
  finally
  {                                                             
     try                                                        
     {                                                          
        statement.close();                                      
        connection.close();                                     
     }
     catch ( Exception exception )                              
     {                                                          
        exception.printStackTrace();                                                                   
     }
  }
}

3 Respostas

rafaelglauber
  1. coloca o fonte dentro da tag “Code”.
  2. o problema provavelmente é loop infinito, toda hora que vc executa o forward o metodo service é envocado novamente gerando o problema…verifique uma forma de “brecar”.
J

Só estou melhorando o código pra galera responder.

public class Login extends HttpServlet { 

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
static final String DATABASE_URL = "jdbc:mysql://localhost/horalivre"; 
static final String DB_USER = "root"; 
static final String DB_PASS = "kmo1982"; 

public void service(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

String nome = request.getParameter("nome"); 
String senha = request.getParameter("senha"); 

Connection connection = null; 
Statement statement = null; 

try 
{ 
Class.forName( JDBC_DRIVER ); 

connection = DriverManager.getConnection( DATABASE_URL, DB_USER, DB_PASS ); 

statement = connection.createStatement(); 

ResultSet resultSet = statement.executeQuery("SELECT id, senha FROM usuario WHERE nome='"+nome+"';" ); 

String pwd = resultSet.getString("senha"); 

RequestDispatcher rd; 

if (pwd.equals(senha)) { 
Cookie c = new Cookie("user",resultSet.getString("id")); 
c.setMaxAge(1000000); 
response.addCookie(c); 
rd = getServletContext().getRequestDispatcher("/menu.jsp"); 
} 
else { 
rd = getServletContext().getRequestDispatcher("/erro.jsp"); 
} 
rd.forward(request,response); 
} 
catch (SQLException sqlException) 
{ 
sqlException.printStackTrace(); 
} 
catch (ClassNotFoundException classNotFound) 
{ 
classNotFound.printStackTrace(); 
} 
finally 
{ 
try 
{ 
statement.close(); 
connection.close(); 
} 
catch ( Exception exception ) 
{ 
exception.printStackTrace(); 
} 
} 
}
K

modifiquei o codigo para o seguinte, mas continua ocorrendo a mesma coisa (pagina em branco após clicar no botao). no banco de dados já existe uma conta criada (login=admin, senha=123).

/*
 * Login.java
 *
 * Created on 4 de Abril de 2008, 20:38
 */

import java.io.*;
import java.net.*;

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

import java.sql.*;
/**
 *
 * @author klebermota
 * @version
 */
public class Login extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        Connection c = null;
        Statement s = null;
        
        String nome = request.getParameter("nome");
        String senha = request.getParameter("senha");
        
        try {
            Class.forName("com.mysql.jdb.Driver");
            c = DriverManager.getConnection("jdbc:mysql://localhost/horalivre","root","kmo1982");
            s = c.createStatement();
            
            ResultSet rs = s.executeQuery("SELECT id, senha FROM usuario WHERE nome = '"+nome+"';");
            
            String pwd = rs.getString("senha");
            
            //javax.servlet.RequestDispatcher rd;
            
            if (pwd.equals(senha)) {
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet Login</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>HorariosLivres - Menu</h1>");
                out.println("<ul>");
                out.println("<li><a >Cadastrar Evento</a>");
                out.println("<li><a >Cadastrar Usuário</a>");
                out.println("<li><a >Inscrever-se em evento</a>");
                out.println("<li><a >Achar horário para evento</a>");
                out.println("</ul>");
                out.println("<h1>Servlet Login at " + request.getContextPath () + "</h1>");
                out.println("</body>");
                out.println("</html>");
                //rd = getServletContext().getRequestDispatcher("menu.jsp");
            }
            else {
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet Login</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>HorariosLivres - Menu</h1>");
                out.println("<ul>");
                out.println("<p>Erro nos dados.</p>");
                out.println("<p>Clique <a >aqui</a> para tentar novamente.</p>");
                out.println("</ul>");
                out.println("<h1>Servlet Login at " + request.getContextPath () + "</h1>");
                out.println("</body>");
                out.println("</html>");
                //rd = getServletContext().getRequestDispatcher("erro.jsp");
            }
            //rd.forward(request,response);
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        finally {
            try {
                s.close();
                c.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /*out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet Login</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet Login at " + request.getContextPath () + "</h1>");
        out.println("</body>");
        out.println("</html>");*/
        
        out.close();
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
Criado 3 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 3
Participantes 3