desenvolvimento de projeto e aplicações web ceça moraes – [email protected]@gmail.com
TRANSCRIPT
![Page 2: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/2.jpg)
11/04/23 2
Conteúdo
Servlets
![Page 3: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/3.jpg)
11/04/23 3
Servlets
Módulos de programas em Java Pacote javax.servlets incluídos na especificação da J2EE
Recebem pedidos, executam o serviço e geram respostas paradigma request-response
Residem no servidor Grande uso na geração de
conteúdo dinâmico na web Baseados em CGI
![Page 4: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/4.jpg)
11/04/23 4
CGI – Common Gateway Interface
Especificação de transferência de informações entre um servidor Web e um programa
Um programa CGI pode ser escrito em linguagens de programação: C, Perl, Java, or Visual Basic.
Maneira usual de fazer o servidor Web interagir dinamicamente com o cliente
![Page 5: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/5.jpg)
11/04/23 5
CGI – Common Gateway Interface
Exemplo: Formulário HTML usando um
programa CGI no servidor para processar os dados digitados
Métodos HTTP GET: linha de comando. POST: entrada/saída padrão e
sem limite de caracteres.
![Page 6: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/6.jpg)
11/04/23 6
Formulários
Interface HTML para a entrada de dados pelo usuário (cliente)
<FORM> define um bloco de formulário. ACTION: a URL do programa CGI METHOD, o método do protocolo HTTP
Objetos do formulário: INPUT, SELECT, TEXTAREA NAME identifica uma variável VALUE identifica valor armazenado.
![Page 7: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/7.jpg)
11/04/23 7
Gateways CGI para SGBDs
Converte comandos de formulário HTML para a linguagem sistema de banco de dados.
Converte respostas do SGBD p/ HTML
Cliente
![Page 8: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/8.jpg)
11/04/23 8
Servlets Cria threads para cada requisição
Web.
![Page 9: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/9.jpg)
11/04/23 9
Arquitetura
Servidor Web
Container Servlet
Context
![Page 10: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/10.jpg)
11/04/23 10
Características
Servlets não têm GUI Rodam no servidor e não no
cliente Não são carregados pela
rede Máquina virtual está no
servidor (e não no Browser)Mais eficiente, mais completa
e mais confiável
![Page 11: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/11.jpg)
11/04/23 11
Ciclo de vida de servlets
• service(): Recebe e processa as requisições
• pedidos GET são repassados para o método doGet()
•pedidos POST são repassados para o método doPost()
![Page 12: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/12.jpg)
11/04/23 12
Implementação Simples
Herdar da classe HttpServlet
Redefinir métodos doGet() e doPost() para implementar os serviços
![Page 13: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/13.jpg)
11/04/23 13
Implementação Simples
Dentro dos métodos doGet()/doPost(), ler parâmetros vindos do formulário HTML ou da URL
Processar os parâmetros, fazer validações, executar lógica de negócio e montar a reposta para o usuário
![Page 14: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/14.jpg)
11/04/23 14
Acesso aos servlets
Diretamente através da URLhttp://www.faculdademarista.com.br/servlet/ServletPgto? matr=“2312"&valor=1000
![Page 15: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/15.jpg)
15
Acesso aos servlets
Através de formulários HTML Pode escolher métodos GET ou POST Passagem de parâmetros automática Exemplo:<form method=“POST” action=“http://www.faculdademarista.com.br/servlet/ServletPgto”>
<input type=“text” name=“matr” value=“2312”>
<input type=“text” name=“valor” size=“1000”>
<input type=“submit” ></form>
![Page 16: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/16.jpg)
11/04/23 16
Acesso aos servlets
![Page 17: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/17.jpg)
11/04/23 17
Classes e Interfaces básicas
Interface Servlet Métodos para gerenciar servlets
Classe GenericServlet Implementa interface Servlet
HttpServlet Estende GenericServlet Acrescenta funcionalidade
específica para o protocolo HTTP
Servlet<<Interface>>
GenericServlet
HttpServlet<<interface>>
![Page 18: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/18.jpg)
11/04/23 18
Classes e Interfaces básicas
ServletRequest Conteúdo que é passado do
cliente para o servidor ServletResponse
O que o servidor retorna para o cliente
HttpServletRequest, HttpServletResponse Estendem ServletRequest e ServletResponse
Comunicação específica para o protocolo HTTP
![Page 19: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/19.jpg)
11/04/23 19
HttpServlet
Fornece um framework para lidar com o protocolo HTTP
Introduz suas próprias subclasses de request e response para lidar com o protocolo HTTP HTTPServletRequest e HTTPServletResponse
![Page 20: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/20.jpg)
11/04/23 20
HttpServlet: recebendo dados
getQueryString Retorna um String url-encoded:
nome=Fernando&credibilidade=0
Obtenção dos parâmetros getParameter getParameterValues getParameterNames
![Page 21: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/21.jpg)
11/04/23 21
HttpServlet: Exemploimport javax.servlet.*;import java.io.*;
public class ServletHelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
PrintWriter out = res.getWriter(); out.println("<HEAD><TITLE>Primeiro”); out.println(“Servlet</TITLE></HEAD>"); out.println("<BODY>"); out.println("<center><h1>Hello World!</h1><center>"); out.println("</BODY>"); out.close(); }}
![Page 22: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/22.jpg)
11/04/23 22
HttpServlet: Exemplo
![Page 23: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/23.jpg)
11/04/23 23
Fase de serviço: service()
Os dados da requisição chegam ao servlet através de um objeto do tipo ServletRequest
A requisição pode ser respondidada através de um objeto do tipo ServletResponse
Protocolo HTTP, os objetos usados são instâncias de HttpServletRequest e HttpServletResponse
![Page 24: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/24.jpg)
24
ServletRequest
Métodos para obter: Informações do
cliente Informações da URL Parâmetros
fornecidos pelo usuário
ServletRequest
+ getAttribute(s : String) : Object+ getAttributeNames() : Enumeration+ getCharacterEncoding() : String+ getContentLength() : int+ getContentType() : String+ getInputStream() : ServletInputStream+ getLocale() : Locale+ getLocales() : Enumeration+ getParameter(s : String) : String+ getParameterNames() : Enumeration+ getParameterValues(s : String) : String[]+ getProtocol() : String+ getReader() : BufferedReader+ getRealPath(s : String) : String+ getRemoteAddr() : String+ getRemoteHost() : String+ getRequestDispatcher(s : String) : RequestDispatcher+ getScheme() : String+ getServerName() : String+ getServerPort() : int+ isSecure() : boolean+ removeAttribute(s : String) : void+ setAttribute(s : String, obj : Object) : void
<<Interface>>ServletRequest
+ getAttribute(s : String) : Object+ getAttributeNames() : Enumeration+ getCharacterEncoding() : String+ getContentLength() : int+ getContentType() : String+ getInputStream() : ServletInputStream+ getLocale() : Locale+ getLocales() : Enumeration+ getParameter(s : String) : String+ getParameterNames() : Enumeration+ getParameterValues(s : String) : String[]+ getProtocol() : String+ getReader() : BufferedReader+ getRealPath(s : String) : String+ getRemoteAddr() : String+ getRemoteHost() : String+ getRequestDispatcher(s : String) : RequestDispatcher+ getScheme() : String+ getServerName() : String+ getServerPort() : int+ isSecure() : boolean+ removeAttribute(s : String) : void+ setAttribute(s : String, obj : Object) : void
<<Interface>>
![Page 25: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/25.jpg)
11/04/23 25
ServletRequestParâmetros
String getParameter(String nomeParametro) Retorna um string com o
valor do parâmetro especificado na variável nomeParametro ou null se o parâmetro não existir
![Page 26: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/26.jpg)
11/04/23 26
ServletRequestParâmetros
String[] getParameterValues(String nomeParametro) Retorna os valores do parâmetro
especificado na variável nomeParametro, como um array de strings, ou null se o parâmetro não existir
Parâmetros com múltiplos valores, como listas
![Page 27: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/27.jpg)
11/04/23 27
ServletRequestParâmetros
Enumeration getParameterNames() Retorna o nome dos parâmetros
do request como uma enumeração de strings, ou uma enumeração vazia, se não houver parâmetros
![Page 28: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/28.jpg)
28
ServletRequest - Parâmetros ServletRequest representa o pedido
getParameter(String nomeParametro)
// ...public class HelloPersonServlet extends HttpServlet {
public void doGet(HttpServletRequest request, // ... { // ... String nome = request.getParameter(“nome”); out.println("<h1> Hello " + nome + " </h1>"); // ... }}
http://localhost:8080/servlet/HelloPersonServlet?nome=Eduardo
![Page 29: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/29.jpg)
11/04/23 29
HttpServletRequest
Métodos para leitura de cookiesCookie[] getCookies()
Métodos para gerenciamento de sessõesHttpSession getSession(boolean create)
![Page 30: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/30.jpg)
11/04/23 30
ServletResponse
Encapsula a reposta do servlet
ServletResponse
+ flushBuffer() : void+ getBufferSize() : int+ getCharacterEncoding() : String+ getLocale() : Locale+ getOutputStream() : ServletOutputStream+ getWriter() : PrintWriter+ isCommitted() : boolean+ reset() : void+ setBufferSize(i : int) : void+ setContentLength(i : int) : void+ setContentType(s : String) : void+ setLocale(locale : Locale) : void
<<Interface>>ServletResponse
+ flushBuffer() : void+ getBufferSize() : int+ getCharacterEncoding() : String+ getLocale() : Locale+ getOutputStream() : ServletOutputStream+ getWriter() : PrintWriter+ isCommitted() : boolean+ reset() : void+ setBufferSize(i : int) : void+ setContentLength(i : int) : void+ setContentType(s : String) : void+ setLocale(locale : Locale) : void
<<Interface>>
![Page 31: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/31.jpg)
11/04/23 31
ServletResponse - Saída
getWriter() para escrever dados textuais
getOutputStream() para escrever dados binários
Pode-se chamar o método setContentType() antes de chamar getWriter() ou getOutputStream() o tipo padrão é “text/plain”
![Page 32: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/32.jpg)
11/04/23 32
ServletResponse - Saída
Exemplo
...
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><BODY>Bom Dia!</BODY></HTML>");
...
![Page 33: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/33.jpg)
11/04/23 33
HttpServletResponse
Métodos para enviar códigos de status ou de
erros para o cliente redirecionar o cliente para outra
URL adicionar cookies à resposta ....
![Page 34: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/34.jpg)
Mantendo o Estado entre Requisições
![Page 35: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/35.jpg)
11/04/23 35
Mantendo o Estado entre Requisições
Objetivomanter um estado
conversacional entre o cliente e o servidor persistindo algum tipo de informação entre as requisições do cliente
Cookies e Sessões
![Page 36: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/36.jpg)
11/04/23 36
Cookies
Concebidos pela Netscape (versão 0)
Informações ficam armazenadas no browser, em memória ou em disco
Suportado na API de Servletsclasse Cookie
![Page 37: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/37.jpg)
11/04/23 37
Cookies
Características Tamanho máximo de 4KB por
cookie Um navegador armazena no
máximo 20 cookies por servidor Informações do cookie são
enviadas e recebidas em toda transação HTTP
São enviados apenas para o servidor de origem
![Page 38: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/38.jpg)
11/04/23 38
Cookies: manipulação
Recuperação dos cookies getCookies() da classe HttpServletRequest
retorna uma matriz de cookies acessíveis da página
Adição de cookies addCookie(Cookie) da classe HttpServletResponse
envia um cookie para o navegador
![Page 39: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/39.jpg)
11/04/23 39
Sessões
O protocolo HTTP não mantém estado de sessão As aplicações Web devem mantê-lo
quando necessário São criadas no lado do servidor
podem armazenar variáveis e objetos de programas Java
Uma sessão por cliente Expiram depois de um intervalo de
tempo definido no servidor
![Page 40: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/40.jpg)
11/04/23 40
Sessões
A sessão é única para cada cliente e persiste através de várias requisições
![Page 41: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/41.jpg)
11/04/23 41
Sessões Implementadas pela
interface HttpSession<<Interface>>HttpSession
+ getAttribute(s : String) : Object+ getAttributeNames() : Enumeration+ getCreationTime() : long+ getId() : String+ getLastAccessedTime() : long+ getMaxInactiveInterval() : int+ getSessionContext() : HttpSessionContext+ getValue(s : String) : Object+ getValueNames() : String[]+ invalidate() : void+ isNew() : boolean+ putValue(s : String, obj : Object) : void+ removeAttribute(s : String) : void+ removeValue(s : String) : void+ setAttribute(s : String, obj : Object) : void+ setMaxInactiveInterval(i : int) : void
(from http)
<<Interface>>HttpSession
+ getAttribute(s : String) : Object+ getAttributeNames() : Enumeration+ getCreationTime() : long+ getId() : String+ getLastAccessedTime() : long+ getMaxInactiveInterval() : int+ getSessionContext() : HttpSessionContext+ getValue(s : String) : Object+ getValueNames() : String[]+ invalidate() : void+ isNew() : boolean+ putValue(s : String, obj : Object) : void+ removeAttribute(s : String) : void+ removeValue(s : String) : void+ setAttribute(s : String, obj : Object) : void+ setMaxInactiveInterval(i : int) : void
(from http)
![Page 42: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/42.jpg)
11/04/23 42
Sessões Operações básicas
Criação da sessãoHttpSession session = req.getSession(boolean create)
Retorna a sessão corrente associada com o request req
Se não existe uma sessão, e create=true, retorna uma nova sessão
Se create=false e o request não possui uma sessão, este método retorna null
![Page 43: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/43.jpg)
11/04/23 43
Sessões
Operações básicas
Inserção de um objetoPoupanca p = new Poupanca(“34560”,513.00);
session.setAttribute(“poupanca”,p);
![Page 44: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/44.jpg)
11/04/23 44
Sessões
Operações básicas Consulta a um objeto
Poupanca objeto = (Poupanca) session.getAttribute(“poupanca”)
Remoção do objetosession.removeAttribute(“poupanca”)
![Page 45: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/45.jpg)
11/04/23 45
Sessões: propriedadesEnumeration getAttributeNames()retorna uma enumeração com
todos os nomes dos atributos armazenados na sessão
boolean isNew()retorna true se a sessão é
nova para o cliente. Retorna false para sessões preexistentes
![Page 46: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/46.jpg)
11/04/23 46
Sessões: propriedades
boolean isNew() Para saber se uma sessão é nova,
use o método isNew()
if (session.isNew()) {
myObject = new BObject();
} else {
myObject = (BObject) session.getAttribute("obj");
}
![Page 47: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/47.jpg)
11/04/23 47
Gerenciamento de Sessão
Não há como saber que cliente não precisa mais da sessão
Pode-se definir um timeout em minutos para a duração de uma sessão desde a última requisição do cliente setMaxInactiveInterval(int segundos) define novo valor para timeout
se intervalo for -1 sessão nunca expira
int getMaxInactiveInterval() recupera valor de timeout
![Page 48: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/48.jpg)
11/04/23 48
Sessões – Exemplo salvando objeto na sessão
public class ControleSessaoServlet { public void doGet( ...) { HttpSession session =request.getSession(true); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String nome = request.getParameter("nome"); Pessoa p = new Pessoa(nome); session.setAttribute("usuario",p); out.println("<a href=\"/servlet/SeuNomeServlet\">"+ "Clique aqui</a>"); out.close(); }}
![Page 49: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/49.jpg)
11/04/23 49
public class SeuNomeServlet { public void doGet() { HttpSession session = request.getSession(false); response.setContentType("text/html"); PrintWriter out = response.getWriter(); if (session != null) { Pessoa p = (Pessoa) session.getAttribute("usuario"); out.println("Seu nome é" + p.getNome()); } else { out.println("Sessão inválida"); } out.close(); }}
Sessões – Exemplo – recuperando objeto da sessão
![Page 50: Desenvolvimento de Projeto e Aplicações Web Ceça Moraes – cecafac@gmail.comcecafac@gmail.com](https://reader035.vdocuments.com.br/reader035/viewer/2022062700/552fc124497959413d8cca7b/html5/thumbnails/50.jpg)
11/04/23 50
Compartilhamento de objetos na sessão
Como a sessão pode persistir além do tempo de uma requisição, é possível que a persistência de alguns objetos não sejam desejáveis
Use o método removeAttribute("nome")
para remover objetos da sessão