Validando a sessão no struts

0 respostas
R

Olá pessoal,

Estou trabalhando com sessão e gostaria de obrigar o usuario a efetuar o login
caso tentasse entrar na aplicação via URL ou clicando no botão voltar após ter
encerrado sua sessão...
Parece que neste action o primeiro if é ignorado sempre que acessamos e se a sessão
não foi criado ele executa Exception thrown: class java.lang.NumberFormatExceptionc dando erro de pagina 500

Aqui posto minha Action que não permite acesso sem login:

public class listaOpeAction extends Action {
    
    public ActionForward execute(ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
    throws Exception {
        
        LinkedList despesas = null;
        LinkedList receitas = null;
        ActionErrors errors = new ActionErrors();
        
        try {
            
            OpeDAO opeDAO = new OpeDAO(); //instancia classe OpeDAO (select * ...)
            
            HttpSession session = request.getSession(false); //carrega o objeto da sessão 
            
            
            if (session == null){
            System.out.println("Encaminhando para pagina de login...");           
            }
            else{  
                
            
            String idUser = (String)session.getAttribute("Id"); // para recuperarmos o Id do user em questão da sessão em formato String!!  
            
            int id = Integer.parseInt(idUser); //convertendo o ID de Strng para inteiro           
                       
            despesas = opeDAO.listaDespesas(id); //passa id recuperado e convertido em int para acionar o met que retorna lista de despesas do id correspondente
            receitas = opeDAO.listaReceitas(id);          
                                   
           
            
            session.setAttribute("listaDespesas", despesas); // nome variavel que sera chamado na JSP, nome variavel que contem o parametro
            session.setAttribute("listaReceitas", receitas); // nome variavel que sera chamado na JSP, nome variavel que contem o parametro                        
            } 
        }
        
        catch (SQLException e) {
            
                        
            errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.ope.lista"));
            
            
        }
        
        
        
        if (!errors.isEmpty()) {
            saveErrors(request, errors);
            return (mapping.findForward("failure")); //pag de erro
        }
        else {
            return (mapping.findForward("lista")); //pag que lista operações
        }    
               
    }
E aqui minha action logout...Ao tentar efetuar Logout se a sessão não estiver ou não estiver ativa ele cai no if session != null e parece que nunca finaliza a sessão...
public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception {
        HttpSession session = request.getSession();
      
       ActionErrors errors = new ActionErrors();
       
      // System.out.println("status da sessão(true expirada)" + session.isNew());
       
        if (session != null){ 
              session.invalidate();
              System.out.println("sessão ativa será encerrada");                       
        }
        else{  
            errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.login.expirado"));  //ERRO usuario/senha invalidos                      
            System.out.println("ERRO! Não existe uma sessão ativa.");                                              
        }
Criado 4 de setembro de 2006
Respostas 0
Participantes 1