Sessão Servelt

5 respostas
java
F

Sou novo no GUJ.
Caso esteja fazendo algo errado, me desculpe.

Estou com problema para criar sessão Login, tenho Dois tipos de menu principal (Usuario e Administrator). Alguém poderia verificar meu código, consigo efetuar login normalmente com usuário comum, já com usuário administrador não
consigo criar sessão par o menu administrator;

DAO

public Login autenticaUsuario(Login login) throws ClassNotFoundException {

Login usuarioAutenticado = null;

Connection conexao = null;

PreparedStatement pstmt = null;

ResultSet rsUsuario = null;

try {

conexao = new FabricaConexao().getConnection();

pstmt = conexao.prepareStatement(AUTENTICA_USUARIO);

pstmt.setString(1, login.getLogin());

pstmt.setString(2, login.getSenha());

rsUsuario = pstmt.executeQuery();

if (rsUsuario.next()) {

usuarioAutenticado = new Login();

usuarioAutenticado.setId(rsUsuario.getInt(id));

usuarioAutenticado.setLogin(rsUsuario.getString(login));

usuarioAutenticado.setSenha(rsUsuario.getString(senha));

usuarioAutenticado.setPerfil(PerfilDeAcesso.valueOf(rsUsuario.getString(perfil)));

}

} catch (SQLException sqlErro) {

throw new RuntimeException(sqlErro);

} finally {

if (conexao != null) {

try {

conexao.close();

} catch (SQLException ex) {

Logger.getLogger(LoginDAO.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

return usuarioAutenticado;

}

Servelt

@WebServlet(name = “ControleAcesso”, urlPatterns = {"/ControleAcesso"})
public class ControleAcesso extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        String acao = request.getParameter("acao");
        if (acao.equals("Entrar")) {
            Login login = new Login();
            login.setLogin(request.getParameter("txtLogin"));
            login.setSenha(request.getParameter("txtSenha"));
          
            LoginDAO usuarioDAO = new LoginDAO();
            
            Login usuarioAutenticado = usuarioDAO.autenticaUsuario(login);
            //se o usuario existe no banco de dados
            if (usuarioAutenticado != null) {
            //cria uma sessao para o usuario
                HttpSession sessaoUsuario = request.getSession();
                sessaoUsuario.setAttribute("usuarioAutenticado", usuarioAutenticado);
            //redireciona para a pagina princiapal
                response.sendRedirect("principal.jsp");
            } else {
                RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
                request.setAttribute("msg", "Login ou Senha Incorreto!");
                rd.forward(request, response);
            }
        } else {
            if (acao.equals("Sair")) {
                HttpSession sessaoUsuario = request.getSession();
                sessaoUsuario.removeAttribute("usuarioAutenticado");
                response.sendRedirect("index.jsp");
            }
        }
    } catch (Exception erro) {
        RequestDispatcher rd = request.getRequestDispatcher("/erro.jsp");
        request.setAttribute("erro", erro);
              rd.forward(request, response);
    }
}

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

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

}

5 Respostas

L

Alguma mensagem de erro? Exceção?

F

Boa tarde Luis,

Segue erro.

HTTP Status 500 - Internal Server Error

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.IllegalStateException: Cannot forward after response has been committed
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.

F

Não estou sabendo fazer o IF para login administrator entrar na pagina menu administrator.

L

Tem duas coisas, a primeira é: onde está o if para validar o acesso do administrador?
A segunda é o erro apresentado. Você tem alguns try/catch e o último deles só redireciona para a página de erro. Seria interessante olhar o log e ver o que foi gravado, para certificar-se de qual a causa do erro 500.

F

Obrigado, estou tentando criar validar o acesso do administrador.

Criado 27 de março de 2017
Ultima resposta 27 de mar. de 2017
Respostas 5
Participantes 2