首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的登录身份验证Servlet出现问题

我的登录身份验证Servlet出现问题
EN

Stack Overflow用户
提问于 2013-07-09 07:48:25
回答 1查看 124关注 0票数 0

我的登录身份验证有问题,我有一个类UsuarioLogin:

代码语言:javascript
复制
  package br.com.cad.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.cad.basica.Contato;

public class UsuarioLogin {
private Contato usuario;

    public UsuarioLogin(Contato usr)
    {
        usuario=usr;
    }

        public boolean verificaLogin(){

        if(usuario.getEmail()!=null && usuario.getSenha()!=null)
        {
            try
            {
             ConnectDb con = new ConnectDb();
             String strsql="SELECT PF_EMAIL, PF_SENHA FROM DADOS_CADASTRO WHERE PF_EMAIL = ? and PF_SENHA = ?;";       
             PreparedStatement stmt = con.getConnection().prepareStatement(strsql);
             stmt.setString(1, usuario.getEmail());
             stmt.setString(2, usuario.getSenha());
             boolean logado = false;
             ResultSet rs=stmt.executeQuery();



             rs.close();
             stmt.close();
             return  logado;
            }
            catch (SQLException e) 

        {  
                e.printStackTrace(); 
                return false;
            }

        }
        return false;

}}

和我的Servlet LoginAuthentication:

代码语言:javascript
复制
package br.com.cad.servlet;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
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 br.com.cad.basica.Contato;
import br.com.cad.dao.UsuarioLogin;


public class LoginAuthentication extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

        } finally {            
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String email=request.getParameter("email");
        String senha=request.getParameter("password");
        RequestDispatcher rd = null;
        Contato user = new Contato();
        user.setEmail(email);
        user.setSenha(senha);
        UsuarioLogin ul = new UsuarioLogin(user);
        if(ul.verificaLogin())
        {
            HttpSession sessao = request.getSession();
            sessao.setAttribute("USER",email);
            rd=request.getRequestDispatcher("logado.jsp");
            rd.forward(request,response);
        }
        else
        {
            request.setAttribute("msg", "Usuário ou senha inválidos");
            rd=request.getRequestDispatcher("login.jsp");
            rd.forward(request,response);
        }
    }

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

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

但是如果我输入了有效的电子邮件并通过了,我不知道我是如何使用户或密码无效的!有没有人能帮我?

EN

回答 1

Stack Overflow用户

发布于 2013-07-09 13:51:46

我猜loganto是指示用户是否登录的布尔标志。

代码中的问题在于,您执行了Select查询,但从不检查是否找到记录。你可以这样做:

代码语言:javascript
复制
ResultSet rs=stmt.executeQuery();
while(rs.next()){
  loganto=true; //a valid record was found so return true
}
rs.close();
return loganto;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17537785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档