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