 Muitas aplicações se faz necessário o acompanhamento da navegação do usuário armazenando informações específicas de cada um.  É comum hoje em dia acessarmos.

Slides:



Advertisements
Apresentações semelhantes
Aplicação de exemplo Struts Aplicação de exemplo
Advertisements

Programação em Java Prof. Maurício Braga
Eventos, Variáveis de Sessão e Aplicação
Eventos Marco Antonio, Arquiteto de Software – TJDF Novembro/2005
Objetos Implícitos Contextuais
Personalização Objecto Profile. 1 O objecto Profile O objecto Profile permite armazenar informação única de um utilizador. Quando o utilizador visita.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Introdução ao JavaScript JavaScript 02. Propriedade onMouseOver Observe o SCRIPT abaixo: link O.
Tecnologia para Web Cookies
Cookies e Sessões Mauro César Lopes. Mecanismos para guardar estados entre requisições HTTP HTTP é um protocolo sem estado Uma requisição é independente.
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web
Classes e objetos Arrays e Sobrecarga
Tecnologias para Internet
Desenvolvimento de Projeto e Aplicações Web
Desenvolvimento de Projetos e Aplicações Web
Programação Web com PHP
Hibernate com JPA Prática
PROGRAMAÇÃO II Prof.: Bruno Rafael de Oliveira Rodrigues.
Aplicativos Web Com Orientação a Objetos
Desenvolvimento WEB I Camila Nunes
Aula R Prof. Naércio Filho Técnico em Informática
Capítulo 2 Java Servlets.
Por André Luis e Arthur Kalsing Mini-curso de PHP.
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Servlets: Redirecionamento, Atributos e Sessões
Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina
Jobson Ronan PEC – Filtros e Sessões Jobson Ronan
CONCURSO FLEXFORM COMO É FEITA A VOTAÇÃO, SEGURANÇA E VALIDAÇÃO DOS VOTOS.
Prof. Alexandre Monteiro Recife
Pilhas Profa. Nádia Félix.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Servlets e JSP Desenvolvimento de Aplicações Web
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Arquitetura das JSP - Aula 2
Aplicações Web com Orientação a Objetos
Aplicativos Web Com Orientação a Objetos – Java Server Pages(JSP) Prof. Odair
JSP JavaServer Pages Marco Antonio, Arquiteto de Software – TJDF Dezembro/2005.
Interface HttpServletResquest
Aula Prática 4 Monitoria IP/CC (~if669).
Bruno Inojosa MCP.NET Framework.NET com C#. Aula V  Tópicos abordados:  Desenvolvendo para internet (Parte III) Gerenciamento de Estados User Controls.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Aula 4 Prof. Naércio Filho Técnico em Informática
Programação I Aula 4 (Expressões Booleanas e Expressões de Seleção) Prof. Gilberto Irajá Müller Última atualização 17/3/2009.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
PEC - JSP Jobson Ronan Objetivos Esta aula apresenta tudo o que é necessário para implementar servlets escrevendo JavaServer Pages.
Fundamentos da Linguagem C#
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
ASP.NET Conteúdo Introdução
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Treinamento PHP Módulo 1 PHP Básico Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
Aplicativos Web Com Orientação a Objetos – Redirect vs Forward Prof. Odair
OBJETIVO Nesta aula será apresentado o desenvolvimento básico sobre HTTP Servlets. Espera-se que, ao final da apresentação, o aluno tenha noções de como.
Curso de JSP Básico Camilo Porto Nunes.
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
REDES DE COMPUTADORES II
Aplicativos para Internet Prof. Wolley W. Silva
Felipe Nunes Flores – Programa de Educação Tutorial.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Array e ArrayList LPOO – 01/09/14.
Programação para Web I AULA 2 BANCO DE DADOS.
Programação para Web I Aula 10 Estudo de Caso I
Aula 11 Orientação a Objeto (OO)
Estrutura de Dados Prof. André Cypriano M. Costa
Minicurso Java Básico Ruddá Beltrão | Cristian Costa.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

 Muitas aplicações se faz necessário o acompanhamento da navegação do usuário armazenando informações específicas de cada um.  É comum hoje em dia acessarmos algum site que peça para fazermos nosso login para podermos ter acesso a funcionalidades da aplicação. Esse processo também é conhecido como autenticação. ◦ Mas, como o site sabe, nas requisições seguintes que fazemos, quem somos nós?

 O protocolo HTTP utilizado até agora para o acesso à páginas é limitado por não manter detalhes como quem é quem entre uma conexão e outra.  Para resolver isso, foi inventado um sistema para facilitar a vida dos programadores através do cookie.

 Um cookie nada mais é que um pedaço de informação que é enviado do servidor para o navegador. ◦ Um cookie é normalmente um par de strings guardado no cliente, seguido de propriedade e valor.  Quando um cookie é salvo no cliente, ele é enviado de volta ao servidor toda vez que o cliente efetuar uma nova requisição. ◦ Desta forma, o servidor consegue identificar aquele cliente sempre com os dados que o cookie enviar.

 Usar Cookies parece facilitar muito a vida, mas através de um cookie não é possível marcar um cliente com um objeto, somente com Strings.  Imagine gravar os dados do usuário logado através de cookies. ◦ Seria necessário um cookie para cada atributo: usuario, senha, id, data de inscrição, etc. Sem contar a falta de segurança.

 O Cookie também pode estar desabilitado no cliente, sendo que não será possível lembrar nada que o usuário fez....  Eis que surge a sessão.

 A sessão nada mais é que um tempo que o usuário permanece ativo no sistema.  A cada página visitada, o tempo de sessão é zerado. ◦ Quando o tempo ultrapassa um limite demarcado no arquivo web.xml, o cliente perde sua sessão  Uma sessão facilita a vida de todos por permitir atrelar objetos de qualquer tipo a um cliente, não sendo limitada somente à strings e é independente de cliente.

 Uma sessão pode ser gerenciada de duas formas: ◦ Gerenciada por cookie ◦ Se os cookies estiverem desabilitados, a sessão não funcionará e devemos recorrer para uma técnica (trabalhosa) chamada url-rewriting.

 Por padrão o arquivo web.xml já possui um tempo definido para sessão, como pode ser visto abaixo. 30

 Para configurar 3 minutos como o padrão de tempo para o usuário perder a sessão basta incluir o seguinte código no arquivo web.xml: 3

 Quando estamos trabalhando com sessão gerenciada por cookie temos que simplesmente nos preocupar com em obter o objeto que representa a sessão, e a manipulação do cookie é feita pelo container.  Mas, CUIDADO. ◦ Se o cookie estiver desabilitado no browse, teremos problemas.

 Para obtermos o objeto sessão em um servlet utilizaremos o método getSession() do objeto request. ◦ HttpSession session = request.getSession( );  Retorna um objeto sessão caso exista, caso contrário, crie um novo e retorne-o. ◦ HttpSession session = request.getSession( true/false );  True  Retorna um objeto sessão caso exista, caso contrário, crie um novo (mesmo que request.getSession( ) ).  False  Retorna um objeto sessão caso exista, caso contrário retorne null.

 Nós desenvolvedores quando trabalhamos com Sessão, só precisamos nos preocupar em usar a classe HttpSession, o restante o container se encarrega de fazer para gente.  HttpSession permite a manipulação dos elementos de uma sessão. API HttpSession

 public long getCreationTime() ◦ Para saber qual dia/horário foi criada a sessão.  public java.lang.String getId() ◦ Retorna um objeto String que identifica a sessão.  public long getLastAccessedTime() ◦ Para saber o dia/horário da ultima requisição feita naquela sessão. Date acess = new Date(session.getCreationTime()); Format formatter = new SimpleDateFormat("MM/dd/yy"); System.out.print( formatter.format(acess) );

 public void setMaxInactiveInterval(int interval) ◦ Seta para essa sessão o tempo máximo de inatividade permitido, ou seja, o timeout.  Atenção que aqui não é para todas as sessões, e sim para a sessão corrente.  public int getMaxInactiveInterval() ◦ Retorna o tempo de limite definido para a sessão.  public java.lang.Object getAttribute(java.lang.String name) ◦ Retorna um determinado objeto colocado na sessão, ou null caso não exista.  Observe que o retorno é um objeto “Object”, portanto faz se necessário um ‘cast’

 public java.util.Enumeration getAttributeNames() ◦ Retorna um Objeto Enumeration contendo todos os nomes dos atributos colocados na sessão.  public void setAttribute(java.lang.String name,java.lang.Object value) ◦ Coloca algum objeto na sessão. Enumeration elements = session.getAttributeNames(); while( elements.hasMoreElements() ){ System.out.print( elements.nextElement() ); }

 public void removeAttribute(java.lang.String name) ◦ Remove um objeto que foi armazenado na sessão.  public void invalidate() ◦ Método para terminar a sessão, basicamente retira todos os objetos da sessão corrente.  Ele é chamado ou programaticamente, ou pelo próprio container quando a sessão expira.  public boolean isNew() ◦ Retorna true se o cliente ainda não tem o conhecimento da sessão.

... UsuarioDao userDao = new UsuarioDao(); Usuario userBD = userDao.getUser(user); if( ( userBD != null) && (userBD.getSenha().equals(password) )){ HttpSession session = request.getSession( true ); session.setAttribute("usuario",userBD); response.sendRedirect("/agendaLocalWeb_session_cookie/sistem a.jsp"); }else{ String msgErro = "Caro usuário, login inválido."; request.setAttribute("msgErro", msgErro); (getServletContext().getRequestDispatcher("/index.jsp")).forward( request, response); } userDao.closeConn();...

 O atributos de uma sessão são mantidos em um objeto HttpSession referenciado pela variável session.  Pode-se armazenar valores em uma sessão por meio do método setAttribute() e cuperá- los por meio do método getAttribute().

 Diretiva page session="true|false” ◦ Um valor true (default) indica que a variável predefinida session(HttpSession) deve ser associada à sessão, se existir, caso contrário uma nova sessão deve ser criada e associada a ela. ◦ Um valor false indica que nenhuma sessão será usada. ◦ Vale ressaltar que quando não especificado o valor do atributo session, o mesmo assume true como valor padrão.

 Como implementar uma autenticação do usuário??? ◦ Vamos definir que quando um usuário estiver logado, existirá um objeto que represente-o na sessão. ◦ Caso algum usuário tente acessar alguma página da aplicação e o objeto não exista na sessão, o acesso não deverá ser permitido.

 Para validar a autenticação nos servlets, deveremos incluir as seguinte linhas antes de realizarmos qualquer operação. if (request.getSession( ) == null || request.getSession( ).getAttribute(“usuario”) == null){ request.getRequestDispatcher("/index.jsp").forward(request, response); return; }.... /* operações do servlet */

 Para validar a autenticação nas página JSP, deveremos incluir as seguinte linhas antes de realizarmos qualquer operação na página. <% if (session == null || session.getAttribute("usuario") == null){ request.getRequestDispatcher("/index.jsp").forward(request, response); return; } %>

 Outra alternativa seria criar um arquivo jsp com o código abaixo, e incluí-lo dentro de cada uma das páginas existente na aplicação, através da diretiva include. <% if (session == null || session.getAttribute("usuario") == null){ request.getRequestDispatcher("/index.jsp").forward(request, response); return; } %> Arquivo autentica.jsp

Arquivos *.jsp Untitled Document... A diretiva include é usada para incluir um arquivo estático em uma página JSP, analisando os código JSP presente no arquivo a ser incluído. SINTÁXE JSP:

 Em algumas situações o usuário poderá desabilitar o gerenciamento de cookie do browse. ◦ Como conseqüência, torna-se possível o gerenciamento da sessão usuário, pois o servidor não consegue obter o id da sessão. ◦ Para contornar essa situação, será necessário o gerenciamento de sessão através do método de reescrita da sessão.

 Esta técnica anexa o ID de sessão com um parâmetro de solicitação a todos as URL que se linkam as páginas locais ao servidor da web.  A reescrita de URL tende a demandar mais trabalho da parte de desenvolvedores de sites,já que todas as referências as URL´s devem ser geradas dinamicamente,a fim de fluir o ID de sessão apropriado específico de usuário.

 Request 1, chegou cookie JSESSIONID? ◦ Sim, o container recupera os dados relativos essa sessão e contrói objeto session ◦ Não, antes de criar uma nova Sessão, verifica se veio JSESSIONID pela url (pode ser que o cookie esteja desabilitado no cliente) ◦ Sim, veio cookie na URL, então contrói objeto sessão.Não, Cria um novo objeto sessão. ◦ Não, cria um novo objeto sessão.

 Os mecanismos responsáveis pela reescritaURL são os métodos encodeURL e encodeRedirectURLdo objeto Response. ◦ O segundo método é o irmão do sendRedirect e tem a mesma função com o único incremento que adiciona o JSESSIONID ao fim.