Validando a sessão no struts

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:

[code]
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
    }    
           
}[/code]

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.");                                              
        }