Java Servlets

488 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
488
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java Servlets

  1. 1. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o a Programa¸˜o para Web ca Servlets Ivo Calado Instituto Federal de Educa¸˜o, Ciˆncia e Tecnologia de Alagoas ca e 13 de Novembro de 20121 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  2. 2. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aRoteiro 1 Introdu¸˜o ca 2 Praticando 3 Aprofundando... 4 Gerenciamento de Sess˜o a2 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  3. 3. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aObserva¸˜o sobre o conte´do ca u Parte deste material ´ baseada na apostila FJ-21 - Java para e Desenvolvimento Web desenvolvido pela Caelum (www.caelum.com.br)3 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  4. 4. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aDefini¸˜es coO que s˜o? a As Servlets s˜o a primeira forma que veremos de criar p´ginas a a dinˆmicas com Java a Criaremos classes que ter˜o a capacidade de gerar conte´do a u HTML!! O nome “servlet” vem da ideia de um pequeno servidor (servidorzinho, em inglˆs) cujo objetivo ´ receber chamadas e e HTTP, process´-las e devolver uma resposta ao cliente a4 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  5. 5. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aDefini¸˜es coA classe javax.servlet.http.HttpServlet Trata-se da classe principal de uma servlet Possui um m´todo gen´rico (service) e diversos m´todos e e e como espec´ıficos como doGet, doPost, doDelete, doPost e outros representando as diversas opera¸˜es HTTP co5 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  6. 6. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aDefini¸˜es coA classe javax.servlet.http.HttpServlet Trata-se da classe principal de uma servlet Possui um m´todo gen´rico (service) e diversos m´todos e e e como espec´ıficos como doGet, doPost, doDelete, doPost e outros representando as diversas opera¸˜es HTTP co O nosso papel ´ implement´-las! e a Cada um desses m´todos recebem como parˆmetro um objeto e a HttpServletRequest e um HttpServletResponse representando a requisi¸˜o e a resposta! ca5 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  7. 7. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploO m´todo doGet e 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 , HttpServletResponse response ) throws ServletException , IOException { ServletOutputStream out = r e s p o n s e . getOutputStream ( ) ; o u t . p r i n t l n ( " <html >" ) ; o u t . p r i n t l n ( " <head >" ) ; o u t . p r i n t l n ( " <title > Minha primeira pagina dinamica </ title >" ) ; o u t . p r i n t l n ( " </ head >" ) ; o u t . p r i n t l n ( " <body >" ) ; o u t . p r i n t l n ( " <h1 > Hello World !!! </ h1 >" ) ; o u t . p r i n t l n ( " </ body >" ) ; o u t . p r i n t l n ( " </ html >" ) ; }6 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  8. 8. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploHabilitando a execu¸˜o da Servlet ca Acabamos de definir uma Servlet, mas como iremos acess´-la a pelo navegador? Qual o endere¸o podemos acessar para fazermos com que ela c execute?7 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  9. 9. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploHabilitando a execu¸˜o da Servlet ca Acabamos de definir uma Servlet, mas como iremos acess´-la a pelo navegador? Qual o endere¸o podemos acessar para fazermos com que ela c execute? O container n˜o tem como saber essas informa¸˜es, a n˜o ser a co a que digamos isso para ele Para isso, vamos fazer um mapeamento de uma URL espec´ ıfica para uma servlet atrav´s do arquivo web.xml, que e fica dentro do WEB-INF7 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  10. 10. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploWeb.xml No arquivo web.xml configuramos todas as propriedades do nosso projeto Java A partir da vers˜o 3.0 todas as configura¸˜es podem ser a co realizadas via annotations! Por´m veremos isso s´ mais na e o frente! <? 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 . h t ml</ 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 . ht m l</ 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 >8 / 33 </ welcome− f i l e − l i s t > Ivo Calado IFAL </web−app>Programa¸˜o para Web ca
  11. 11. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploweb.xml: tags servlet e servlet-mapping Para configurarmos a execu¸˜o da Servlet criada pelo ca Container fazemos uso da tag servlet A tag servlet-mapping serve para criar um alias ou um conjunto de aliases para referenciar a servlet9 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  12. 12. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploweb.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>b r . 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 / p a r a / 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 IFALPrograma¸˜o para Web ca
  13. 13. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploA estrutura de diret´rios o Se vocˆs notarem, o nosso endere¸o n˜o tem qualquer rela¸˜o e c a ca com a estrutura f´ ısica do projeto Trata-se de um referenciamento puramente virtual!11 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  14. 14. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploExerc´ ıcio Crie sua primeira servlet. Ela deve implementar os m´todos e doGet e doPost onde no doGet deve ser retornado uma p´gina a com uma mensagem ao usu´rio e no doPost com a data do a dia. Deve ser criado uma p´gina HTML est´tica que fa¸a acesso a a c tanto via GET quanto via POST12 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  15. 15. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aNosso primeiro exemploPoss´ ıveis erros comuns at´ agora e 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 da servlet13 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  16. 16. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aRecuperando parˆmetros passados a At´ agora vimos como requisitar uma p´gina sem passar e a qualquer parˆmetros a Para recuperar os parˆmetros passados em um formul´rio a a usamos os m´todos getParameter, getParameterMap, e getParameterNames, getParameterValues Map<S t r i n g , S t r i n g [ ]> 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 ( ) ) { o u t . 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 ) ) { o u t . p r i n t l n ( " Valor : " + s t r ) ; } out . p r i n t l n ( ) ;14 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  17. 17. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aAtividade Altere o exemplo anterior para inclur um formul´rio de a inscri¸˜o de uma pessoa. No lado servidor, recupere os valores ca passados e salve em um arquivo XML formando uma agenda de contatos.15 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  18. 18. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando exce¸oes dentro da Servlet c˜ O que acontece se alguma exce¸˜o for lan¸ada na nossa ca c aplica¸˜o? ca16 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  19. 19. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando exce¸oes dentro da Servlet c˜ O que acontece se alguma exce¸˜o for lan¸ada na nossa ca c aplica¸˜o? ca a stacktrace da exce¸˜o ocorrida ser´ mostrada em uma tela ca a padr˜o do container a Qual o problema disso?16 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  20. 20. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando exce¸oes dentro da Servlet c˜ O que acontece se alguma exce¸˜o for lan¸ada na nossa ca c aplica¸˜o? ca a stacktrace da exce¸˜o ocorrida ser´ mostrada em uma tela ca a padr˜o do container a Qual o problema disso? O que seria ideal acontecer?16 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  21. 21. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando exce¸oes dentro da Servlet c˜ O que acontece se alguma exce¸˜o for lan¸ada na nossa ca c aplica¸˜o? ca a stacktrace da exce¸˜o ocorrida ser´ mostrada em uma tela ca a padr˜o do container a Qual o problema disso? O que seria ideal acontecer? O ideal seria mostrarmos uma p´gina de erro dizendo: “Um erro ocorreu” e com informa¸˜es a co de como notificar o administrador Para fazermos isso, basta configurarmos nossa aplica¸˜o ca dizendo que, caso aconte¸a uma Exception no web.xml! c16 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  22. 22. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coConfigurando exce¸oes no Web.xml c˜ <e r r o 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 . ht m l</ l o c a t i o n> </ e r r o r −page>17 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  23. 23. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando c´digos de erros o O que acontece se tentarmos acessar uma p´gina inexistente? a18 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  24. 24. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coTratando c´digos de erros o O que acontece se tentarmos acessar uma p´gina inexistente? a Qual seria a abordagem mais apropriada? <e r r o r −page> <e r r o r −code>404</ e r r o r −code> < l o c a t i o n>/ 4 0 4 . h tm l</ l o c a t i o n> </ e r r o r −page>18 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  25. 25. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coEnviando mensagem de erro Pesquisar sobre o processo de envio de mensagens de erro e como isso se relaciona com ponto anterior! Ver m´todo e response.sendError19 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  26. 26. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coM´todos Init e Destroy e Toda servlet deve possuir um construtor default M´todos init e destroy s˜o chamados no in´ e no fim do e a ıcio ciclo de vida da servlet20 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  27. 27. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coM´todos Init e Destroy e Toda servlet deve possuir um construtor default M´todos init e destroy s˜o chamados no in´ e no fim do e a ıcio ciclo de vida da servlet Quais seriam um poss´ uso de tais m´todos? ıvel e20 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  28. 28. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coRecuperando parametros iniciais do servlet ´ E poss´ definir parˆmetros iniciais na servlet no web.xml e ıvel a recuper´-lo no m´todo init a e21 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  29. 29. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coRecuperando parametros iniciais do servlet ´ E poss´ definir parˆmetros iniciais na servlet no web.xml e ıvel a recuper´-lo no m´todo init a e < 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−v a l u e>V a l o r</param−v a l u e> </ i n i t −param> </ s e r v l e t>21 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  30. 30. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coRedirecionando p´ginas a Existem duas formas de realizar redirecionamento sendRedirect: retorna um c´digo ao browser indicando que ele o deve realizar o redirecionamento forward: realiza o redirecionamento internamente Al´m disso, existe a possibilidade de utilizar o m´todo include!!. e e22 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  31. 31. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es cosendRedirect 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 , HttpServletResponse response ) throws ServletException , IOException { 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 , HttpServletResponse response ) throws ServletException , IOException { RequestDispatcher dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " s2 " ) ; dispatcher . forward ( request , response ) ; }23 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  32. 32. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coinclude 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 , HttpServletResponse response ) throws ServletException , IOException { RequestDispatcher dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " s2 " ) ; dispatcher . include ( request , response ) ; } Qual a diferen¸a entre forward e include? c24 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  33. 33. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coinclude 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 , HttpServletResponse response ) throws ServletException , IOException { RequestDispatcher dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " s2 " ) ; dispatcher . include ( request , response ) ; } Qual a diferen¸a entre forward e include? c forward: a servlet atual n˜o pode alterar a stream de sa´ a ıda include: a servlet atual pode alterar (a p´gina redirecionada ´ a e “inclusa” na resposta original)24 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  34. 34. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aCapturando exce¸˜es coinclude 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 , HttpServletResponse response ) throws ServletException , IOException { RequestDispatcher dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " s2 " ) ; dispatcher . include ( request , response ) ; } Qual a diferen¸a entre forward e include? c forward: a servlet atual n˜o pode alterar a stream de sa´ a ıda include: a servlet atual pode alterar (a p´gina redirecionada ´ a e “inclusa” na resposta original) Como inserir conte´dos padr˜es est´ticos? u o a24 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  35. 35. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aO que ´? eO que ´? e Uma das caracter´ ısticas fundamentais do HTTP ´ n˜o possuir e a estado. Mas o que viria a ser isso?25 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  36. 36. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aO que ´? eO que ´? e Uma das caracter´ ısticas fundamentais do HTTP ´ n˜o possuir e a estado. Mas o que viria a ser isso? Isso que dizer que o HTTP n˜o guarda lembran¸a de a c requisi¸˜es anteriores co Qual o problema disso? Qual seria uma situa¸˜o onde guardar ca informa¸˜es de sess˜es ´ importante? co o e Login! Sendo assim, precisamos, implementar em n´ de servlet, o ıvel controle de sess˜o! a25 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  37. 37. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?Quais abordagens existe? Existem basicamente 4 formas de prover sess˜o a Reescrita de URL Campos ocultos Cookies Objetos de sess˜o a26 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  38. 38. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?1a abordagem: Reescrita de URL Consiste em adicionar `s URLs de envio, identificadores da a sess˜o a ser acessada a Todos os forms, links etc que fa¸am men¸˜o a URL deve ser c ca alterado Parˆmetros s˜o enviados na URL a a27 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  39. 39. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?2a abordagem: Campos ocultos Semelhante a abordagem anterior, por´m o campo ´ enviado e e como um atributo hidden no HTML N˜o s˜o vis´ a a ıveis na URL mas s˜o facilmente recuper´veis! a a28 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  40. 40. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?3a abordagem: Cookies Cookies s˜o pequenos “peda¸os” de informa¸˜o passado em a c ca requisi¸˜es e respostas HTTP co Embora seja poss´ criar um Cookie do lado cliente, ele ´ ıvel e gerado principalmente pelo servidor Tem a estrutura de chave valor! C o o k i e c1 = new C o o k i e ( " MeuCookie " , " MeuValor " ) ; r e s p o n s e . a d d C o o k i e ( c1 ) ;29 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  41. 41. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?Definido tempo m´ximo de vida de um cookie a Nas abordagens anterioes os links e campos ocultos permaneciam dispon´ıveis indefinidamente Por´m podemos querer definir um tempo limite para que a e sess˜o esteja dispon´ por um tempo limite de inatividade! a ıvel Cookie possibilita tal recurso a partir da defini¸˜o da ca propriedade maxAge C o o k i e c1 = new C o o k i e ( " MeuCookie " , " MeuValor " ) ; c1 . setMaxAge ( 1 0 0 0 ) ; // N´ mero de s e g u n d o s que o c o o k i e u p e r m a n e c e r ´ no c l i e n t e . Ap´ s i s s o e l e ´ d e s c a r t a d o a o e e n˜ o s e r ´ m a i s e n v i a d o a a r e s p o n s e . a d d C o o k i e ( c1 ) ;30 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  42. 42. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?HTTPSession As abordagens anteriores possuem s´ries restri¸˜es: e co Atributos ocultos e reescrita de url deixam vis´ıveis todos os campos Apesar de mais dif´ ıcei, os cookies tb podem ser visualizados! Al´m disso, temos de ter o trabalho de em todas as e solicita¸˜es adicionar as informa¸˜es a serem enviadas de co co modo a manter o estado A solu¸˜o ´ o HTTPSession! ca e Trata-se da maneira mais simples e f´cil de se trabalhar com a gerenciamento de sess˜o a ´ E mantido um mapa com todos os valores que a aplica¸˜o ca precisar armazenar Possibilita o armazenamento de valores de tipos complexos31 / 33 (n˜o apenas String) a Ivo Calado IFALPrograma¸˜o para Webidentificador da sess˜o ´ automaticamente enviado via ca Um a e
  43. 43. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais 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 ) )32 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  44. 44. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais 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?32 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  45. 45. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais 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 sess˜o cair´ no a a mesmo problema cl´ssico dos cookies. A solu¸˜o ´ enviar o id de a ca e sess˜o por reescrita de url. a O objeto session gera um parˆmetro jsessionid com o n´mero de a u sess˜o. a32 / 33 Ivo Calado IFALPrograma¸˜o para Web ca
  46. 46. Introdu¸˜o ca Praticando Aprofundando... Gerenciamento de Sess˜o aQuais abordagens existe?Filtros Suponha que tenhamos nossa aplica¸˜o tenha 100 servlets e ca desejamos adicionar verifica¸˜o de autentica¸˜o em todos ca ca eles. Teremos de verificar o id em todos os servlets?33 / 33 Ivo Calado IFALPrograma¸˜o para Web ca

×