Desenvolvimento de Soluções WEB
Escopos de uma
Aplicação Web
Eduardo Martins Guerra
Objetivo da Aula
Apresentar com maiores detalhes como
se trabalha com os diferentes escopos de
uma aplicação web, como o request,
session e context.
Agenda da Apresentação
• Contextos de uma Aplicação Web
• Parâmetros x Atributos
• Gerenciamento de Sessão
• Objeto HttpServletRequest
• Objeto HttpServletResponse
Escopos de Aplicações Web
Contém informações globais a toda a aplicação.
Todos na aplicação podem acessá-las.
Exemplo: Número de usuários conectados.
Context
Contém informações acessíveis a apenas um usuário.
Mantém o estado entre vários requests.
Exemplo: Nome de login de um usuário.
Session
Contém informações referentes a uma requisição.
Perde o estado entre requisições.
Exemplo: Informações de um formulário.
Request
Parâmetros X Atributos
Parâmetros
Passados externamente sem
controle da aplicação para
modificação.
Atributos
São colocados em um local onde
pode-se recuperar aquela
informação de outros locais.
Context init parameters;
Servlet init parameters;
Request parameters;
Context Attributes;
Session Attributes;
Request Attributes;
Retorno: String
Retorno: Object
Não pode ser modificado!
setAttribute(String nome, Object val)
Parâmetros de Inicialização
getServletContext().getInitParameter(“param”);
<web-app ...>
<context-param>
<param-name>param</param-name>
<param-value>value</param-value>
</context-param>
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>org.ServClass</servlet-class>
<init-param>
<param-name>param</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
</web-app>
getServletConfig().getInitParameter(“param”);
O uso de parâmetros pode deixar um
componente mais flexível e reutilizável.
Mantendo uma Sessão
O protocolo HTTP não mantém a conexão entre as
requisições e para um usuário ser reconhecido é
preciso enviar algum identificador para o
container web a cada requisição.
Cookies
Pode ser utilizado o cookie JSESSIONID para armazenar
no browser cliente o identificador da sessão.
O Web Container faz este trabalho por você!
A reescrita de URL é a melhor alternativa quando o
browser não aceitar cookies. As URLs são codificadas para
“URL + ;jsessionid=123456”. O método
response.encodeURL(“/servlet”) faz isto para você e
Reescrita
elas são reescritas apenas se o cliente não aceitar cookies.
de URL
HttpSession session = request.getSession();
O Objeto HttpServletRequest
Encapsula as informações referentes a
uma requisição HTTP.
Recuperação de um Header
String agent = request.getHeader(“User-Agent”);
Recuperação dos Cookies
Cookies[] cookies = request.getCookies();
HTTP Method
String method = request.getMethod();
InputStream do Request
InputStream input = request.getInputStream();
O Objeto HttpServletResponse
Encapsula as informações referentes a
uma resposta de uma requisição HTTP.
Setando Headers
response.setHeader(“header-name”,”value”);
response.addHeader(“header-name”,”value”);
Retornando Texto
PrintWriter writer = response.getWriter();
writer.println(“<html> ... </html>”);
Retornando Outro tipo de Informação
ServletOutputStream out = response.getOutputStream();
response.setContentType(“application/jar”);
out.write(byteArray);
Redirect X Request Dispatch
Redirect
Quando ocorre um redirect, a
aplicação envia uma resposta
solicitando browser para chamar
uma outra página.
Agora eu estou
ocupado! Chame a
pag.jsp que ela vai
poder te ajudar!
response.sendRedirect(“/pag.jsp”);
Request Dispatch
Quando ocorre um request
dispatch, o web container chama
internamente um outro recurso
para processar a requisição.
Ei pag.jsp, preciso
de sua ajuda para
processar uma
requisição!
RequestDispatcher view =
request.getRequestDispatcher(“pag.jsp”)
view.forward(request,response);
Exercício – Usando os Escopos
Escrever uma aplicação web que armazene
contadores em diferentes escopos, que vão
sendo incrementados a cada requisição.
• Criar uma página que exibe o valor dos contadores
• Acessar a aplicação com diversos browsers
• Desabilitar os cookies do browser
• Verificar a reescrita de URL
Download

Aula 4 - Escopos de uma Aplicação Web