Java Servlets

46
Introdu¸c˜ ao Praticando Aprofundando... Gerenciamento de Sess˜ ao Programa¸c˜ ao para Web Servlets Ivo Calado Instituto Federal de Educa¸c˜ ao, Ciˆ encia e Tecnologia de Alagoas 13 de Novembro de 2012 1 / 33 Ivo Calado IFAL Programa¸c˜ ao para Web

Transcript of Java Servlets

Page 1: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Programacao para WebServlets

Ivo Calado

Instituto Federal de Educacao, Ciencia e Tecnologia de Alagoas

13 de Novembro de 2012

1 / 33 Ivo Calado IFAL

Programacao para Web

Page 2: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Roteiro

1 Introducao

2 Praticando

3 Aprofundando...

4 Gerenciamento de Sessao

2 / 33 Ivo Calado IFAL

Programacao para Web

Page 3: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Observacao sobre o conteudo

Parte deste material e baseada na apostila FJ-21 - Java paraDesenvolvimento Web desenvolvido pela Caelum(www.caelum.com.br)

3 / 33 Ivo Calado IFAL

Programacao para Web

Page 4: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Definicoes

O que sao?

As Servlets sao a primeira forma que veremos de criar paginasdinamicas com Java

Criaremos classes que terao a capacidade de gerar conteudoHTML!!

O nome “servlet” vem da ideia de um pequeno servidor(servidorzinho, em ingles) cujo objetivo e receber chamadasHTTP, processa-las e devolver uma resposta ao cliente

4 / 33 Ivo Calado IFAL

Programacao para Web

Page 5: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Definicoes

A classe javax.servlet.http.HttpServlet

Trata-se da classe principal de uma servlet

Possui um metodo generico (service) e diversos metodoscomo especıficos como doGet, doPost, doDelete, doPost eoutros representando as diversas operacoes HTTP

O nosso papel e implementa-las!

Cada um desses metodos recebem como parametro um objetoHttpServletRequest e um HttpServletResponserepresentando a requisicao e a resposta!

5 / 33 Ivo Calado IFAL

Programacao para Web

Page 6: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Definicoes

A classe javax.servlet.http.HttpServlet

Trata-se da classe principal de uma servlet

Possui um metodo generico (service) e diversos metodoscomo especıficos como doGet, doPost, doDelete, doPost eoutros representando as diversas operacoes HTTP

O nosso papel e implementa-las!

Cada um desses metodos recebem como parametro um objetoHttpServletRequest e um HttpServletResponserepresentando a requisicao e a resposta!

5 / 33 Ivo Calado IFAL

Programacao para Web

Page 7: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

O metodo doGet

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {S e r v l e t O u t p u t S t r e a m out = r e s p o n s e . getOutputStream ( ) ;out . p r i n t l n ("<html >" ) ;out . p r i n t l n ("<head >" ) ;out . p r i n t l n ("<title >Minha primeira pagina dinamica </

title >" ) ;out . p r i n t l n ("</head >" ) ;out . p r i n t l n ("<body >" ) ;out . p r i n t l n ("<h1>Hello World!!!</h1>" ) ;out . p r i n t l n ("</body >" ) ;out . p r i n t l n ("</html >" ) ;}

6 / 33 Ivo Calado IFAL

Programacao para Web

Page 8: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

Habilitando a execucao da Servlet

Acabamos de definir uma Servlet, mas como iremos acessa-lapelo navegador?

Qual o endereco podemos acessar para fazermos com que elaexecute?

O container nao tem como saber essas informacoes, a nao serque digamos isso para ele

Para isso, vamos fazer um mapeamento de uma URLespecıfica para uma servlet atraves do arquivo web.xml, quefica dentro do WEB-INF

7 / 33 Ivo Calado IFAL

Programacao para Web

Page 9: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

Habilitando a execucao da Servlet

Acabamos de definir uma Servlet, mas como iremos acessa-lapelo navegador?

Qual o endereco podemos acessar para fazermos com que elaexecute?

O container nao tem como saber essas informacoes, a nao serque digamos isso para ele

Para isso, vamos fazer um mapeamento de uma URLespecıfica para uma servlet atraves do arquivo web.xml, quefica dentro do WEB-INF

7 / 33 Ivo Calado IFAL

Programacao para Web

Page 10: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

Web.xml

No arquivo web.xml configuramos todas as propriedades donosso projeto JavaA partir da versao 3.0 todas as configuracoes podem serrealizadas via annotations! Porem veremos isso so mais nafrente!

<? xml v e r s i o n="1.0" e n c o d i n g="UTF -8"?><web−app . . .>

<d i s p l a y−name>M e u P r i m e i r o P r o j e t o 3 . 0</ d i s p l a y−name><welcome− f i l e − l i s t>

<welcome− f i l e> i n d e x . html</ welcome− f i l e><welcome− f i l e> i n d e x . htm</ welcome− f i l e><welcome− f i l e> i n d e x . j s p</ welcome− f i l e><welcome− f i l e>d e f a u l t . html</ welcome− f i l e><welcome− f i l e>d e f a u l t . htm</ welcome− f i l e><welcome− f i l e>d e f a u l t . j s p</ welcome− f i l e>

</ welcome− f i l e − l i s t></web−app>

8 / 33 Ivo Calado IFAL

Programacao para Web

Page 11: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

web.xml: tags servlet e servlet-mapping

Para configurarmos a execucao da Servlet criada peloContainer fazemos uso da tag servlet

A tag servlet-mapping serve para criar um alias ou umconjunto de aliases para referenciar a servlet

9 / 33 Ivo Calado IFAL

Programacao para Web

Page 12: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

web.xml: exemplos de servlet e servlet-mapping

< s e r v l e t><s e r v l e t −name>m i n h a P r i m e i r a S e r v l e t</ s e r v l e t −name><s e r v l e t −c l a s s>br . edu . i f a l . M i n h a S e r v l e t</ s e r v l e t −

c l a s s></ s e r v l e t>

<s e r v l e t −mapping><s e r v l e t −name>m i n h a P r i m e i r a S e r v l e t</ s e r v l e t −name><u r l−p a t t e r n>/minha−p a g i n a</ u r l−p a t t e r n><u r l−p a t t e r n>/minha−segunda−forma−de−a c e s s o</ u r l−

p a t t e r n><u r l−p a t t e r n>/ end / l o n g o / para / minha / p a g i n a /web</ u r l−

p a t t e r n></ s e r v l e t −mapping>

10 / 33 Ivo Calado IFAL

Programacao para Web

Page 13: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

A estrutura de diretorios

Se voces notarem, o nosso endereco nao tem qualquer relacaocom a estrutura fısica do projeto

Trata-se de um referenciamento puramente virtual!

11 / 33 Ivo Calado IFAL

Programacao para Web

Page 14: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

Exercıcio

Crie sua primeira servlet. Ela deve implementar os metodosdoGet e doPost onde no doGet deve ser retornado uma paginacom uma mensagem ao usuario e no doPost com a data dodia.

Deve ser criado uma pagina HTML estatica que faca acessotanto via GET quanto via POST

12 / 33 Ivo Calado IFAL

Programacao para Web

Page 15: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Nosso primeiro exemplo

Possıveis erros comuns ate agora

Esquecer da barra inicial no URL pattern

Digitar errado o nome do pacote da sua servlet

Esquecer de colocar o nome da classe no mapeamento daservlet

13 / 33 Ivo Calado IFAL

Programacao para Web

Page 16: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Recuperando parametros passados

Ate agora vimos como requisitar uma pagina sem passarqualquer parametros

Para recuperar os parametros passados em um formulariousamos os metodos getParameter, getParameterMap,getParameterNames, getParameterValues

Map<Str ing , St r ing [ ]> mapa = r e q u e s t . getParameterMap ( ) ;P r i n t W r i t e r out = r e s p o n s e . g e t W r i t e r ( ) ;f o r ( S t r i n g s : mapa . k e y S e t ( ) ) {out . p r i n t l n ("Chave: " + s ) ;f o r ( S t r i n g s t r : mapa . g e t ( s ) ) {out . p r i n t l n ("Valor: " + s t r ) ;}out . p r i n t l n ( ) ;

14 / 33 Ivo Calado IFAL

Programacao para Web

Page 17: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Atividade

Altere o exemplo anterior para inclur um formulario deinscricao de uma pessoa. No lado servidor, recupere os valorespassados e salve em um arquivo XML formando uma agendade contatos.

15 / 33 Ivo Calado IFAL

Programacao para Web

Page 18: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando excecoes dentro da Servlet

O que acontece se alguma excecao for lancada na nossaaplicacao?

a stacktrace da excecao ocorrida sera mostrada em uma telapadrao do container

Qual o problema disso?

O que seria ideal acontecer? O ideal seria mostrarmos umapagina de erro dizendo: “Um erro ocorreu” e com informacoesde como notificar o administrador

Para fazermos isso, basta configurarmos nossa aplicacaodizendo que, caso aconteca uma Exception no web.xml!

16 / 33 Ivo Calado IFAL

Programacao para Web

Page 19: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando excecoes dentro da Servlet

O que acontece se alguma excecao for lancada na nossaaplicacao?

a stacktrace da excecao ocorrida sera mostrada em uma telapadrao do container

Qual o problema disso?

O que seria ideal acontecer? O ideal seria mostrarmos umapagina de erro dizendo: “Um erro ocorreu” e com informacoesde como notificar o administrador

Para fazermos isso, basta configurarmos nossa aplicacaodizendo que, caso aconteca uma Exception no web.xml!

16 / 33 Ivo Calado IFAL

Programacao para Web

Page 20: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando excecoes dentro da Servlet

O que acontece se alguma excecao for lancada na nossaaplicacao?

a stacktrace da excecao ocorrida sera mostrada em uma telapadrao do container

Qual o problema disso?

O que seria ideal acontecer?

O ideal seria mostrarmos umapagina de erro dizendo: “Um erro ocorreu” e com informacoesde como notificar o administrador

Para fazermos isso, basta configurarmos nossa aplicacaodizendo que, caso aconteca uma Exception no web.xml!

16 / 33 Ivo Calado IFAL

Programacao para Web

Page 21: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando excecoes dentro da Servlet

O que acontece se alguma excecao for lancada na nossaaplicacao?

a stacktrace da excecao ocorrida sera mostrada em uma telapadrao do container

Qual o problema disso?

O que seria ideal acontecer? O ideal seria mostrarmos umapagina de erro dizendo: “Um erro ocorreu” e com informacoesde como notificar o administrador

Para fazermos isso, basta configurarmos nossa aplicacaodizendo que, caso aconteca uma Exception no web.xml!

16 / 33 Ivo Calado IFAL

Programacao para Web

Page 22: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Configurando excecoes no Web.xml

<er ro r−page><e x c e p t i o n−type> j a v a . l a n g . E x c e p t i o n</ e x c e p t i o n−type>< l o c a t i o n>/ e r r o . html</ l o c a t i o n>

</ er ro r−page>

17 / 33 Ivo Calado IFAL

Programacao para Web

Page 23: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando codigos de erros

O que acontece se tentarmos acessar uma pagina inexistente?

Qual seria a abordagem mais apropriada?

<er ro r−page><er ro r−code>404</ er ro r−code>< l o c a t i o n>/ 4 0 4 . html</ l o c a t i o n>

</ er ro r−page>

18 / 33 Ivo Calado IFAL

Programacao para Web

Page 24: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Tratando codigos de erros

O que acontece se tentarmos acessar uma pagina inexistente?

Qual seria a abordagem mais apropriada?

<er ro r−page><er ro r−code>404</ er ro r−code>< l o c a t i o n>/ 4 0 4 . html</ l o c a t i o n>

</ er ro r−page>

18 / 33 Ivo Calado IFAL

Programacao para Web

Page 25: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Enviando mensagem de erro

Pesquisar sobre o processo de envio de mensagens de erro e comoisso se relaciona com ponto anterior! Ver metodoresponse.sendError

19 / 33 Ivo Calado IFAL

Programacao para Web

Page 26: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Metodos Init e Destroy

Toda servlet deve possuir um construtor default

Metodos init e destroy sao chamados no inıcio e no fim dociclo de vida da servlet

Quais seriam um possıvel uso de tais metodos?

20 / 33 Ivo Calado IFAL

Programacao para Web

Page 27: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Metodos Init e Destroy

Toda servlet deve possuir um construtor default

Metodos init e destroy sao chamados no inıcio e no fim dociclo de vida da servlet

Quais seriam um possıvel uso de tais metodos?

20 / 33 Ivo Calado IFAL

Programacao para Web

Page 28: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Recuperando parametros iniciais do servlet

E possıvel definir parametros iniciais na servlet no web.xml erecupera-lo no metodo init

< s e r v l e t><d e s c r i p t i o n></ d e s c r i p t i o n><d i s p l a y−name>S e r v l e t 1</ d i s p l a y−name><s e r v l e t −name>S e r v l e t 1</ s e r v l e t −name><s e r v l e t −c l a s s>S e r v l e t 1</ s e r v l e t −c l a s s>< i n i t −param><param−name>Nome</param−name><param−va lue>V a l o r</param−va lue></ i n i t −param></ s e r v l e t>

21 / 33 Ivo Calado IFAL

Programacao para Web

Page 29: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Recuperando parametros iniciais do servlet

E possıvel definir parametros iniciais na servlet no web.xml erecupera-lo no metodo init

< s e r v l e t><d e s c r i p t i o n></ d e s c r i p t i o n><d i s p l a y−name>S e r v l e t 1</ d i s p l a y−name><s e r v l e t −name>S e r v l e t 1</ s e r v l e t −name><s e r v l e t −c l a s s>S e r v l e t 1</ s e r v l e t −c l a s s>< i n i t −param><param−name>Nome</param−name><param−va lue>V a l o r</param−va lue></ i n i t −param></ s e r v l e t>

21 / 33 Ivo Calado IFAL

Programacao para Web

Page 30: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

Redirecionando paginas

Existem duas formas de realizar redirecionamento

sendRedirect: retorna um codigo ao browser indicando que eledeve realizar o redirecionamento

forward: realiza o redirecionamento internamente

Alem disso, existe a possibilidade de utilizar o metodo include!!.

22 / 33 Ivo Calado IFAL

Programacao para Web

Page 31: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

sendRedirect e forward

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {r e s p o n s e . s e n d R e d i r e c t ("http://www.google.com" ) ;}

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {R e q u e s t D i s p a t c h e r d i s p a t c h e r = r e q u e s t .

g e t R e q u e s t D i s p a t c h e r ("s2" ) ;d i s p a t c h e r . f o r w a r d ( r e q u e s t , r e s p o n s e ) ;}

23 / 33 Ivo Calado IFAL

Programacao para Web

Page 32: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

include

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {R e q u e s t D i s p a t c h e r d i s p a t c h e r = r e q u e s t .

g e t R e q u e s t D i s p a t c h e r ("s2" ) ;d i s p a t c h e r . i n c l u d e ( r e q u e s t , r e s p o n s e ) ;}

Qual a diferenca entre forward e include?

forward: a servlet atual nao pode alterar a stream de saıdainclude: a servlet atual pode alterar (a pagina redirecionada e“inclusa” na resposta original)

Como inserir conteudos padroes estaticos?

24 / 33 Ivo Calado IFAL

Programacao para Web

Page 33: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

include

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {R e q u e s t D i s p a t c h e r d i s p a t c h e r = r e q u e s t .

g e t R e q u e s t D i s p a t c h e r ("s2" ) ;d i s p a t c h e r . i n c l u d e ( r e q u e s t , r e s p o n s e ) ;}

Qual a diferenca entre forward e include?

forward: a servlet atual nao pode alterar a stream de saıdainclude: a servlet atual pode alterar (a pagina redirecionada e“inclusa” na resposta original)

Como inserir conteudos padroes estaticos?

24 / 33 Ivo Calado IFAL

Programacao para Web

Page 34: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Capturando excecoes

include

p r o t e c t e d v o i d doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t ,H t t p S e r v l e t R e s p o n s e r e s p o n s e )

throws S e r v l e t E x c e p t i o n , I O E x c e p t i o n {R e q u e s t D i s p a t c h e r d i s p a t c h e r = r e q u e s t .

g e t R e q u e s t D i s p a t c h e r ("s2" ) ;d i s p a t c h e r . i n c l u d e ( r e q u e s t , r e s p o n s e ) ;}

Qual a diferenca entre forward e include?

forward: a servlet atual nao pode alterar a stream de saıdainclude: a servlet atual pode alterar (a pagina redirecionada e“inclusa” na resposta original)

Como inserir conteudos padroes estaticos?

24 / 33 Ivo Calado IFAL

Programacao para Web

Page 35: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

O que e?

O que e?

Uma das caracterısticas fundamentais do HTTP e nao possuirestado. Mas o que viria a ser isso?

Isso que dizer que o HTTP nao guarda lembranca derequisicoes anteriores

Qual o problema disso? Qual seria uma situacao onde guardarinformacoes de sessoes e importante?

Login!

Sendo assim, precisamos, implementar em nıvel de servlet, ocontrole de sessao!

25 / 33 Ivo Calado IFAL

Programacao para Web

Page 36: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

O que e?

O que e?

Uma das caracterısticas fundamentais do HTTP e nao possuirestado. Mas o que viria a ser isso?

Isso que dizer que o HTTP nao guarda lembranca derequisicoes anteriores

Qual o problema disso? Qual seria uma situacao onde guardarinformacoes de sessoes e importante?

Login!

Sendo assim, precisamos, implementar em nıvel de servlet, ocontrole de sessao!

25 / 33 Ivo Calado IFAL

Programacao para Web

Page 37: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Quais abordagens existe?

Existem basicamente 4 formas de prover sessao

Reescrita de URL

Campos ocultos

Cookies

Objetos de sessao

26 / 33 Ivo Calado IFAL

Programacao para Web

Page 38: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

1a abordagem: Reescrita de URL

Consiste em adicionar as URLs de envio, identificadores dasessao a ser acessada

Todos os forms, links etc que facam mencao a URL deve seralterado

Parametros sao enviados na URL

27 / 33 Ivo Calado IFAL

Programacao para Web

Page 39: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

2a abordagem: Campos ocultos

Semelhante a abordagem anterior, porem o campo e enviadocomo um atributo hidden no HTML

Nao sao visıveis na URL mas sao facilmente recuperaveis!

28 / 33 Ivo Calado IFAL

Programacao para Web

Page 40: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

3a abordagem: Cookies

Cookies sao pequenos “pedacos” de informacao passado emrequisicoes e respostas HTTP

Embora seja possıvel criar um Cookie do lado cliente, ele egerado principalmente pelo servidor

Tem a estrutura de chave valor!

Cook ie c1 = new Cook ie ("MeuCookie" , "MeuValor" ) ;r e s p o n s e . addCookie ( c1 ) ;

29 / 33 Ivo Calado IFAL

Programacao para Web

Page 41: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Definido tempo maximo de vida de um cookie

Nas abordagens anterioes os links e campos ocultospermaneciam disponıveis indefinidamente

Porem podemos querer definir um tempo limite para que asessao esteja disponıvel por um tempo limite de inatividade!

Cookie possibilita tal recurso a partir da definicao dapropriedade maxAge

Cook ie c1 = new Cook ie ("MeuCookie" , "MeuValor" ) ;c1 . setMaxAge (1000) ; // Numero de segundos que o c o o k i e

permanecer a no c l i e n t e . Apos i s s o e l e e d e s c a r t a d oe nao s e r a mais e n v i a d o

r e s p o n s e . addCookie ( c1 ) ;

30 / 33 Ivo Calado IFAL

Programacao para Web

Page 42: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

HTTPSession

As abordagens anteriores possuem series restricoes:

Atributos ocultos e reescrita de url deixam visıveis todos oscamposApesar de mais difıcei, os cookies tb podem ser visualizados!Alem disso, temos de ter o trabalho de em todas assolicitacoes adicionar as informacoes a serem enviadas demodo a manter o estado

A solucao e o HTTPSession!

Trata-se da maneira mais simples e facil de se trabalhar comgerenciamento de sessaoE mantido um mapa com todos os valores que a aplicacaoprecisar armazenarPossibilita o armazenamento de valores de tipos complexos(nao apenas String)Um identificador da sessao e automaticamente enviado viacookie pelo servlet

31 / 33 Ivo Calado IFAL

Programacao para Web

Page 43: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Exemplo

HTTPSession s e s s i o n = r e q u e s t . g e t S e s s i o n ( t r u e ) ;s e s s i o n . s e t A t t r i b u t e ("chave" , new S t r i n g ( v a l o r ) )

Mas e se os cookies estiverem desabilitados? a sessao caira nomesmo problema classico dos cookies. A solucao e enviar o id desessao por reescrita de url.O objeto session gera um parametro jsessionid com o numero desessao.

32 / 33 Ivo Calado IFAL

Programacao para Web

Page 44: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Exemplo

HTTPSession s e s s i o n = r e q u e s t . g e t S e s s i o n ( t r u e ) ;s e s s i o n . s e t A t t r i b u t e ("chave" , new S t r i n g ( v a l o r ) )

Mas e se os cookies estiverem desabilitados?

a sessao caira nomesmo problema classico dos cookies. A solucao e enviar o id desessao por reescrita de url.O objeto session gera um parametro jsessionid com o numero desessao.

32 / 33 Ivo Calado IFAL

Programacao para Web

Page 45: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Exemplo

HTTPSession s e s s i o n = r e q u e s t . g e t S e s s i o n ( t r u e ) ;s e s s i o n . s e t A t t r i b u t e ("chave" , new S t r i n g ( v a l o r ) )

Mas e se os cookies estiverem desabilitados? a sessao caira nomesmo problema classico dos cookies. A solucao e enviar o id desessao por reescrita de url.O objeto session gera um parametro jsessionid com o numero desessao.

32 / 33 Ivo Calado IFAL

Programacao para Web

Page 46: Java Servlets

Introducao Praticando Aprofundando... Gerenciamento de Sessao

Quais abordagens existe?

Filtros

Suponha que tenhamos nossa aplicacao tenha 100 servlets edesejamos adicionar verificacao de autenticacao em todoseles. Teremos de verificar o id em todos os servlets?

33 / 33 Ivo Calado IFAL

Programacao para Web