Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web - ppt carregar
PublicouMarina Machuca Alterado mais de 4 anos atrás
Apresentação em tema: "Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web"— Transcrição da apresentação:
1 Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web
2 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.
Contextos de uma Aplicação Web Parâmetros x Atributos Gerenciamento de Sessão Objeto HttpServletRequest Objeto HttpServletResponse
4 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
5 Parâmetros X Atributos
Passados externamente sem controle da aplicação para modificação. 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)‏
6 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.
7 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. Pode ser utilizado o cookie JSESSIONID para armazenar no browser cliente o identificador da sessão. O Web Container faz este trabalho por você! Cookies 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 elas são reescritas apenas se o cliente não aceitar cookies. Reescrita de URL HttpSession session = request.getSession();
8 Encapsula as informações referentes a uma requisição HTTP.
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();
9 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);
10 Redirect X Request Dispatch
Quando ocorre um redirect, a aplicação envia uma resposta solicitando browser para chamar uma outra página. 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! Agora eu estou ocupado! Chame a pag.jsp que ela vai poder te ajudar! RequestDispatcher view = request.getRequestDispatcher("pag.jsp")‏ view.forward(request,response); response.sendRedirect("/pag.jsp");
11 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