Problema a fazer login com jsp + servlet

8 respostas
S

Boa tarde galera, segue abaixo o codigo para verificação,

durante o código vou estar comentando e explicando o q está acontecendo

index.jsp
// bom acho q aqui num tem segredo,  um formulário mandando os dados 

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="css/styleLogin.css" />
<link rel="shortcut icon" href="favion.ico" /> 
<title>Login do Sistema</title>
</head>

<body>
	<div id="box">
    	<div id="content">
    		<div id="header">            
                  <div id="header_topo">
                      
                     <img    />
                     <p>Bem vindo a Comunidade Bahá'í do Brasil!</p>
                    
                  &lt;/div&gt;&lt;!--fecha div topo--&gt;                                
        	&lt;/div&gt;&lt;!--fecha div header--&gt;
			
            &lt;div id="corpo"&gt;
            	&lt;div id="corpo_txt"&gt;
	                <p>SIGAB -&lt;span&gt;ADMINISTRAÇÃO&lt;/span&gt;</p>                        
                &lt;/div&gt;&lt;!--fecha div txt--&gt;
                
                &lt;div id="corpo_form"&gt;
		  &lt;form method="post" action="EfetuarLogin.do" &gt;
                    &lt;label&gt;
                       	&lt;span&gt;Login:&lt;/span&gt;
                        &lt;input type="text" name="login" /&gt;
                    &lt;/label&gt;
                    &lt;label&gt;
                       	&lt;span&gt;Senha:&lt;/span&gt;
                        &lt;input type="password" name="senha" /&gt;
                    &lt;/label&gt;
                    &lt;input type="submit" name="entrar" value="Entrar" /&gt;
                  &lt;/form&gt;
                &lt;/div&gt;&lt;!--fecha div form--&gt;
        
            &lt;/div&gt;&lt;!--fecha div corpo--&gt;
            &lt;div id="footer"&gt;
                <p>"...Hoje todos os horizontes do mundo estão iluminados com a luz da unidade
                fomos criados para levar avante uma civilização em constante evolução..."</p>
            &lt;/div&gt;&lt;!--fecha div footer--&gt;
        &lt;/div&gt;&lt;!--fecha div content--&gt;
    
    &lt;/div&gt;&lt;!--fecha div box--&gt;
&lt;/body&gt;
&lt;/html&gt;

Meu servlet: EfetuarLogin.java

package controllers;

import java.io.IOException;
import java.io.PrintWriter;
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 modelo.Usuario;
import modelo.UsuarioDAO;

public class EfetuarLogin extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType(&quot;text/html;charset=UTF-8&quot;);
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession();
        
        
        try {
                String login, senha;
                login = request.getParameter(&quot;login&quot;);
                senha = request.getParameter(&quot;senha&quot;);
                Usuario usuario = new Usuario();
                usuario.setLogin(login);
                usuario.setSenha(senha);

// bom até aki eu testei se ele estava recebendo os valores do formulario, aparentemente tudo OK
                                
                UsuarioDAO usuarioDB = new UsuarioDAO();//o erro começa apartir daki
//se eu comentar todo o resto abaixo e deixar a linha de cima da erro na minha execução.
                
                usuarioDB.conectar();
                usuario = usuarioDB.logar(usuario);
                
                session.setAttribute(&quot;usuario&quot;, usuario); 
               
                if (usuario.getId() &gt; 0) {
                   response.sendRedirect(&quot;areaAdmin.jsp&quot;);
                } else {
                    out.print(&quot;&lt;script language='javascript' type='text/javascript'&gt;");
                    out.print(" alert('Usuário ou senha inválidos!');");
                    out.print(" window.location = 'controle.do?acao=login';");
                    out.print("&lt;/script&gt;");
                }
                usuarioDB.desconectar();
            } catch (Exception e) {
                out.print(e);
            }
    }

    // &lt;editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."&gt;
    /** 
     * Handles the HTTP &lt;code&gt;GET&lt;/code&gt; method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP &lt;code&gt;POST&lt;/code&gt; method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// &lt;/editor-fold&gt;
}

Minha classe DAO: UsuarioDAO

package modelo;

import Cryptography.Cryptography;
import Cryptography.CryptographySHA512;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;

public class UsuarioDAO extends DataBaseDAO {

    public UsuarioDAO() throws Exception {
    }

    public Usuario logar(Usuario usuario) throws Exception {
        Statement stm;
        ResultSet rs;
        stm = conn.createStatement();
        String pass;
        String sql = "SELECT * FROM usuario WHERE login='" + usuario.getLogin() + "'";
        rs = stm.executeQuery(sql);
        Cryptography cryptography;
        cryptography = new CryptographySHA512();
        pass = cryptography.encrypt(usuario.getSenha());
        if (rs.next()) {
            if (rs.getString("senha").equals(pass)) {
                usuario.setId(rs.getInt("id"));
                usuario.setPerfilId(rs.getInt("perfil_id"));
                usuario.setAl(rs.getInt("assembleia_local_id"));
                usuario.setNome(rs.getString("nome"));
                usuario.setLogin(rs.getString("login"));
                usuario.setSenha(rs.getString("senha"));
                return usuario;
            }
        }
        return usuario;
    }

meu javaBean: Usuario

package modelo;

public class Usuario {
    private int id;
    private int perfilId;
    private int al;
    private String nome;
    private String login;
    private String senha;
    private Perfil perfil;
    private AssembleiaLocal assembleiaLocal;

    public Usuario() {
    }

    public Usuario(int id, int perfilId, int al, String nome, String login, String senha) {
        this.id = id;
        this.perfilId = perfilId;
        this.al = al;
        this.nome = nome;
        this.login = login;
        this.senha = senha;
    }

    public Usuario(int id, int perfilId, int al, String nome, String login, String senha, Perfil perfil) {
        this.id = id;
        this.perfilId = perfilId;
        this.al = al;
        this.nome = nome;
        this.login = login;
        this.senha = senha;
        this.perfil = perfil;
    }

    public Usuario(int id, int perfilId, int al, String nome, String login, String senha, Perfil perfil, AssembleiaLocal assembleiaLocal) {
        this.id = id;
        this.perfilId = perfilId;
        this.al = al;
        this.nome = nome;
        this.login = login;
        this.senha = senha;
        this.perfil = perfil;
        this.assembleiaLocal = assembleiaLocal;
    }
 

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPerfilId() {
        return perfilId;
    }

    public void setPerfilId(int perfilId) {
        this.perfilId = perfilId;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Perfil getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

    public int getAl() {
        return al;
    }

    public void setAl(int al) {
        this.al = al;
    }

    public AssembleiaLocal getAssembleiaLocal() {
        return assembleiaLocal;
    }

    public void setAssembleiaLocal(AssembleiaLocal assembleiaLocal) {
        this.assembleiaLocal = assembleiaLocal;
    }
}

Erro na minha execução

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.NoClassDefFoundError: Cryptography/Cryptography
	controllers.EfetuarLogin.processRequest(EfetuarLogin.java:31)
	controllers.EfetuarLogin.doGet(EfetuarLogin.java:71)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.ClassNotFoundException: Cryptography.Cryptography
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
	controllers.EfetuarLogin.processRequest(EfetuarLogin.java:31)
	controllers.EfetuarLogin.doGet(EfetuarLogin.java:71)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.11 logs.

8 Respostas

d34d_d3v1l

Uma dica: utilize preparedStatement pois ele tem segurança contra sql injection. :slight_smile:

S

d34d_d3v1l:
Uma dica: utilize preparedStatement pois ele tem segurança contra sql injection. :slight_smile:

vlw, vou estar refazendo. gostaria de dicas msm, pq esse projeto é comercial e vai ser de uma organização q atua mundialmente, porém inicialmente vai ser implantado aqui no Brasil…

é consegui resolver o problema citado no post anterior, porém agora está dando erro na minha conexão

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
d34d_d3v1l

pq vai desenvolver usando servlets?
pq nao faz usando jsp ou vraptor?

S

d34d_d3v1l:
pq vai desenvolver usando servlets?
pq nao faz usando jsp ou vraptor?

1° pq sou novo em java e só sei esse meio, trabalhando com servelts para fazer as validações e comunicação com o banco e o JSP junto ao HTML levando os dados ao usuário final

pelo menos foi o q entendi de MVC… uso JSP na camada view que é aquela no qual o usuário final enxerga, o SERVLETS na camada de controle que é a q faz as requisições entre o usuário e o banco, e o JavaBeans no model

2° pq não sei vraptor

3° pq sempre acreditei q esse era o meio correto de se trabalhar

desculpe se minhas definições estão errada, pelo menos isso foi o q entendi durante meus estudos e agora estou colocando em prática de acordo com o compreendi q seria o correto…se estiver errado, me corrija. Estou aqui para aprender e não quero ser mais um no meio da multidão

d34d_d3v1l

Entendo seu ponto de vista. :slight_smile:

Acharia interessante vc usar algum framework para
agilizar o seu trabalho… Mas se vc já tem afinidade
com as metodologias que esta usando, legal então.

Só achei estranho uma coisa: este software é de ambito mundial
e só vc esta trabalhando no projeto?

S

d34d_d3v1l:
Entendo seu ponto de vista. :slight_smile:

Acharia interessante vc usar algum framework para
agilizar o seu trabalho… Mas se vc já tem afinidade
com as metodologias que esta usando, legal então.

Só achei estranho uma coisa: este software é de ambito mundial
e só vc esta trabalhando no projeto?

não, porém tem só mais uma pessoa…

na verdade esse projeto ja temos uma boa parte dele pronto pq utilizamos esse mesmo, para o trabalho final do curso q fizemos, porém nessa ocasião mais 3 pessoa trabalharam conosco, nós levamos nosso trabalho a organização, eles gostaram e nos pediram mais algumas coisas implementadas para uma reunião q eles terão em agosto assim levando nosso projeto aos outros integrantes, se assim aprovado iremos fechar o contrato com eles…

porém chegamos a um outro ponto. no nosso trabalho tem mta coisa fora dos padrões java, mta coisa errada, então chegamos a conclusão q vai ser melhor recomeçarmos do zero, e os outros integrantes deram para trás e não vão querer levar o projeto a frente, então ficamos somente 2.

só mais uma pergunta, meu pensamento no post anterior está errado?

d34d_d3v1l

Ah legal.

Então, é isso mesmo.
Essa divisão do MVC fica muito mais clara
utilizando um framework.

O VRaptor por exemlpo (da uma lida nele rapidinho, guia de 1 minuto)…
http://vraptor.caelum.com.br/documentacao/vraptor3-guia-de-1-minuto/

S

d34d_d3v1l:
Ah legal.

Então, é isso mesmo.
Essa divisão do MVC fica muito mais clara
utilizando um framework.

O VRaptor por exemlpo (da uma lida nele rapidinho, guia de 1 minuto)…
http://vraptor.caelum.com.br/documentacao/vraptor3-guia-de-1-minuto/

blz, obrigado

Criado 27 de junho de 2012
Ultima resposta 27 de jun. de 2012
Respostas 8
Participantes 2