A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento WEB I Camila Nunes

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento WEB I Camila Nunes"— Transcrição da apresentação:

1 Desenvolvimento WEB I Camila Nunes camila@les.inf.puc-rio.br camilan@gmail.com

2 2 © LES/PUC-Rio Agenda Servlets JSP

3 Servlets

4 4 © LES/PUC-Rio Fundamentos Alternativa Java para os scripts CGI Um Servlet é uma classe Java que extende as capacidades de servidores que suportam aplicações através do modelo request- response. Embora servlets possam ser utilizados para responder qualquer tipo de request, geralmente são usados em web servers. A tecnologia Java define uma classe para tratar este tipo de requisição (HttpServlet).

5 Servlet x CGI Script Extensibilidade –Java é orientada a objetos –Servlets foram projetados para serem simples –Arquitetura permite que os Servlets sejam facilmente estendidos Independência de plataforma –São programas escritos em Java Performance –São bem mais rápidos que programas CGI –São carregados na memória apenas uma vez –Executam pedidos concorrentemente 5 © LES/PUC-Rio

6 6 A API de Servlet A API de Servlet é um conjunto de classes Java que define uma interface padrão entre o cliente web e o servidor web. java.lang.Object | +----javax.servlet.GenericServlet implements javax.servlet.Servlet | +----javax.servlet.http.HTTPServlet | +----br.com.puc.MeuServlet

7 A interface Servlet javax.servlet.Servlet –destroy()destroy Método chamado pelo container onde o servlet está sendo executado para indicar que o servlet terminou. –getServletConfig()getServletConfig Método que retorna um objeto ServletConfig, que contém os parametros de inicializacao passados no arquivo web.xml ServletConfig –getServletInfo()getServletInfo Retorna informações sobre a aplicação, como autor, versão e copyright. –init(ServletConfig config)initServletConfig Metodo chamado na inicialização do servlet. –service(ServletRequest req, ServletResponse res)serviceServletRequestServletResponse Método que trata as requisições feitas a um servlet bem como a criação das respostas.

8 A implementação para HTTP javax.servlet.http.HttpServlet –Deve-se estender os 2 métodos abaixo para tratar requisições do tipo POST e GET. doGet doPost

9 Servlet Web Browser Servidor BD Arquitetura Básica

10 10 © LES/PUC-Rio Arquitetura Básica browser HTTP Servlet

11 11 © LES/PUC-Rio HttpServlet Tratador de requisições HTTP Trata métodos HTTP específicos: –doGet(HttpServletRequest req, HttpServletResponse resp) –doPost(HttpServletRequest req, HttpServletResponse resp) doGet e doPost são chamados pelo método service() da interface Servlet. Subclasses reescrevem os métodos doGet, doPost e podem reescrever os métodos init() e destroy()

12 12 © LES/PUC-Rio HttpServletRequest e HttpServletResponse Os métodos doGet(), doPost() recebem dois parâmetros: –HttpServletRequest encapsula os parâmetros da requisição –HttpServletResponse encapsula a resposta ao cliente

13 13 © LES/PUC-Rio HttpServletRequest Interface que encapsula a requisição feita pelo cliente através do protocolo HTTP Possui métodos que permitem recuperar os dados da requisição: –cabeçalho –dados de formulários ou parâmetros enviados –informações sobre a sessão do cliente

14 14 © LES/PUC-Rio HttpServletRequest Alguns métodos definidos em HttpServletRequest –Manipulação de Parâmetros java.util.Enumeration getParameterNames() –Obtém listagem, contendo nomes de parâmetros da requisição java.lang.String[] getParameterValues(java.lang.String name) –Obtém valores do parâmetro “name” da requisição java.lang.String getParameter(java.lang.String name) –Obtém valor do parâmetro “name” da requisição –Manipulação de Atributos void setAttribute( java.lang.String name, java.lang.Object) –Coloca ou sobreescreve atributo no request identificado por “name” java.util.Enumeration getAttributesNames() –Obtém listagem, contendo nomes de atributos da requisição java.lang.String getAttribute(java.lang.String name) –Obtém valor do atributo “name” da requisição

15 15 © LES/PUC-Rio HttpServletResponse Interface que encapsula a resposta ao cliente Possui um método responsável por recuperar o canal de resposta com o cliente –getWriter() retorna um PrintWriter Ex: PrintWriter out = response.getWriter(); out.println( “Escrevendo no cliente” ); Também é possível configurar qual é o tipo dos dados que estão sendo enviados de volta ao cliente –setContentType( String type ) –Os tipos mais comuns são text/html, text/xml –O método setContentType deve ser chamado antes do método getWriter

16 16 © LES/PUC-Rio Hello World!

17 17 © LES/PUC-Rio Segundo Exemplo

18 18 © LES/PUC-Rio Gerenciamento de sessão (I) O protocolo HTTP é um protocolo sem estado Não é possível a princípio conhecer o estado do cliente anterior à uma requisição O gerenciamento de sessão provê uma maneira de identificar usuários através de várias requisições HTTPs e recuperar suas informações –Dados do estado do cliente Para obter uma sessão: HttpSession getSession() –Obtém sessão existente, caso não exista retorna uma nova sessão. HttpSession getSession(boolean create) –Obtém sessão existente ou cria uma nova sessão dependendo do valor de o parâmetro create Funciona a base de cookie ou reescrita de URL

19 19 © LES/PUC-Rio Gerenciamento de sessão (II) Principais métodos –Métodos para manipulação de objetos em sessão void removeAttribute(java.lang.String name) –Retira objeto da sessão void setAttribute(java.lang.String name, java.lang.Object value) –Coloca ou sobreescreve objeto na sessão identificado por name java.lang.Object getAttribute(java.lang.String name) –Obtém objeto da sessão java.util.Enumeration getAttributeNames() –Obtém os nomes de todos os objetos armazenados na sessão

20 20 © LES/PUC-Rio Gerenciamento de sessão (III) Tempo de duração da sessão –As sessões em geral têm intervalo máximo de tempo que podem ficar inativas –public int getMaxInactiveInterval() –public void setMaxInactiveInterval(int interval) As sessões também podem ser encerradas explicitamente pelo programador: –public void invalidate()

21 21 © LES/PUC-Rio Jakarta Tomcat Servidor gratuito baseado em java Configurável de maneira simples via XML Oferece suporte a Java (Servlets e JSP)

22 22 © LES/PUC-Rio Jakarta Tomcat Você irão precisar do Tomcat –Pode ser gratuitamente obtido em http://www.apache.orghttp://www.apache.org –Utilizem a versão 5.x ou superior

23 23 © LES/PUC-Rio Publicação de Servlets Imagine que você implementou um Servlet, gerou o.java e compilou para ter o.class. E agora? Como o Servlet é publicado no servidor? Na verdade, existe um local para colocar as classes de sua aplicação

24 24 © LES/PUC-Rio Configurando o Tomcat Onde colocar as classes dos Servlets? –Primeiro, é preciso criar uma aplicação web Cria-se um diretório em %TOMCAT_HOME%\webapps\, sem espaços no nome. Dentro desse diretório, cria-se a pasta WEB-INF Dentro de WEB-INF, criam-se 2 pastas: lib e classes Dentro de WEB-INF, cria-se o arquivo web.xml (deployment descriptor web) Obs: TOMCAT_HOME é o nome do diretório aonde está sua instalação do TomCat

25 25 © LES/PUC-Rio Configurando o Tomcat O arquivo web.xml deverá ter conteúdo similar ao presente em %TOMCAT_HOME%webapps\ROOT\WEB-INF –Trata-se de um arquivo já pronto, que servirá como base para a criação de nosso arquivo

26 26 © LES/PUC-Rio Configurando o Tomcat As classes são colocadas no diretório: –%TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF\classes –A partir deste diretório devem ser colocadas em seus próprios pacotes As libs (arquivos.jar) devem ser colocadas no diretório: –%TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB-INF\lib

27 27 © LES/PUC-Rio Configurando o Tomcat Registrando os Servlets –Os servlets devem ser chamados com seu nome completo (pacotes e classe) –Muitas vezes o nome se torna grande demais –Pode-se então dar um nome ao servlet através do qual o servidor redirecionará a chamada à classe específica

28 28 © LES/PUC-Rio Configurando o Tomcat Registrando Servlets (1) –O arquivo web.xml Localizado no diretório: –%TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB-INF

29 29 © LES/PUC-Rio Configurando o Tomcat Registrando Servlets (2) ServletSes interfPesquisa.ServletSes ServletSes /exemplo

30 30 © LES/PUC-Rio Configurando o Tomcat Agora, o servlet poderá ser acessado através da URL: http:// : /DIRETÓRIO_APLICAÇÃO/exemplo

31 31 © LES/PUC-Rio Configurando o Tomcat Outras configurações –O arquivo server.xml Localizado no diretório: –%TOMCAT_HOME%\conf –Configuração da porta do servidor: …

32 Java Server Pages (JSP)

33 33 © LES/PUC-Rio O que é JSP JSP é uma tecnologia que permite combinar informações estáticas com informações geradas dinamicamente. Script executado no servidor: –Combinação de sintaxe JSP e tags de marcação –Tags estáticas HTML, XML –Conteúdo dinâmico gerado pelo código do script Java Exemplo: – Primeiro JSP – Data e hora: –

34 34 © LES/PUC-Rio Escopo dos Atributos O JSP pode acessar objetos em tempo de execução em quatro escopos diferentes: –Página Objeto PageContext corrente (pageContext) –Requisição Objeto HttpServletRequest corrente (request) –Sessão Objeto HttpSession corrente (session) –Aplicação Objeto ServletContext corrente (servletContext) Para armazenar informações: setAttribute(String, Object) Para recuperar informações: getAttribute(String)

35 35 © LES/PUC-Rio Tags JSP Diretivas – Configuração do processador JSP – Inclusão estática de conteúdo – Encaminhamento de requisições para outros servidores Comandos de script – Inserção de código para a programação de conteúdo dinâmico Tags – Tags de alto nível que encapsulam padrões de programação mais corriqueiros

36 36 © LES/PUC-Rio Diretivas <%@ nome-da-diretiva [nome-atributo = “valor-do-atributo”]* %> Diretivas disponíveis: –

37 37 © LES/PUC-Rio Atributos da Diretiva Page language=“nome-da-linguagem-de-script” info=“texto-informativo” - getServletInfo() session=“true | false” import=“lista-de-pacotes” errorPage=“url-página-de-erro” isErrorPage=“true | false” contentType=“mime-type | mime-type; charset=nome- charset” buffer=“none|tamanho-em-kb” auto-flush=“true | false” extends=“nome-da-classe-base” isThreadSafe=“true | false”

38 38 © LES/PUC-Rio Exemplos de Diretivas Diretiva Include Diretiva Taglib

39 39 © LES/PUC-Rio Exemplos de Diretivas Diretiva Page Ou

40 40 © LES/PUC-Rio Tags de Script Declarações – Scriptlets – Expressões – Comentários –

41 41 © LES/PUC-Rio Declarações Exemplos: <%! int i = 0; public void metodo {...} %> Declara variáveis ou métodos a serem utilizados no código JSP.

42 42 © LES/PUC-Rio Scriptlets Exemplo: <% String name = null; if (request.getParameter(“nome") == null) { %> <% } else { foo.setName(request.getParameter(“nome")); } %> Um scriptlet pode conter qualquer número de instruções, variáveis, métodos, declarações ou expressões válidos.

43 43 © LES/PUC-Rio Expressão Exemplo: O mapa tem entradas. Esta tag contém uma expressão que é avaliada e convertida para string, depois de processada.

44 44 © LES/PUC-Rio Comentários ] --> Exemplo: <!-- Esta página foi carregada em --> O processador JSP trata um comentário como texto HTML não interpretado, retornando-o ao cliente. Uma expressão pode ser incluída em um comentário, sendo avaliada e seu resultado é retornado ao usuário juntamente com o HTML de resposta.

45 45 © LES/PUC-Rio Comentários para Desenvolvimento Exemplo: Um teste - comentário Um teste - comentário O processador JSP simplesmente ignora este tipo de comentário e não processa nenhum código ou expressão contida entre os delimitadores. Este tipo de comentário não será enviado para o cliente.

46 46 © LES/PUC-Rio Objetos Pré-Definidos Disponíveis para scriplets e expressões – request – response – session – out – exception (somente em páginas de erro) – page

47 47 © LES/PUC-Rio Exemplo JSP

48 48 © LES/PUC-Rio Tags jsp:useBean jsp:setProperty jsp:getProperty jsp:include jsp:forward

49 49 © LES/PUC-Rio jsp:useBean Cria ou recupera uma instância de um bean. Principais atributos –id: “nomeDaInstânciaDoBean” –scope:”page|request|session|application” –class: “*{pacotes}.NomeClasse” Exemplo:

50 50 © LES/PUC-Rio jsp:include e jsp:forward Ações utilizadas para o encadeamento de páginas jsp. –suspende o processamento da página chamadora; –repassa o controle para a página chamada até que o retorne. –o processamento da página chamadora é terminado; –controle repassado sem espera de retorno para a página chamada.

51 51 © LES/PUC-Rio jsp:include }"/> Exemplo:

52 52 © LES/PUC-Rio jsp:forward }"/> Exemplo: A tag repassa o objeto request enviado para o arquivo JSP para que seja processado por outra aplicação. O processador JSP não executa o restante das instruções contidas após a tag.

53 53 © LES/PUC-Rio JSP Standard Tag Library A JSTL encapsula tarefas comumente encontradas em aplicações web (iteração, manipulação de xml, etc). Versão JSTL (Java 1.4) lançada em meados de 2002 impulsionou o desenvolvimento com JSP. Requer servlet container que suporte Servlet 2.4 and JSP 2.0 (tomcat 5.x) Provê 4 standard Tag Libs: –core, internationalization/format, XML, and SQL Provê uma Expression Language (EL).

54 54 © LES/PUC-Rio JSTL EL

55 55 © LES/PUC-Rio JSTL – Core Tag Lib >

56 56 © LES/PUC-Rio JSTL - Format tag lib


Carregar ppt "Desenvolvimento WEB I Camila Nunes"

Apresentações semelhantes


Anúncios Google