Notes
Slide Show
Outline
1
Módulo IVa - Servlets
  • Prof. Ismael H F Santos


2
Ementa
  • Módulo IVa – Servlets
    • Overview Servlets e JSP
    • Ciclo de Vida
    • HTTP Servlets
    • Gerenciamento de Sessão
    • Contêineres Web – Apache Tomcat
    • Cookies


3
Bibliografia
  • Linguagem de Programação JAVA
    •  Ismael H. F. Santos, Apostila UniverCidade, 2002
  • The Java Tutorial: A practical guide for programmers
    •  Tutorial on-line: http://java.sun.com/docs/books/tutorial
  • Java in a Nutshell
    •  David Flanagan, O´Reilly & Associates
  • Just Java 2
    •  Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books.
  • Java 1.2
    •  Laura Lemay & Rogers Cadenhead, Editora Campos
4
Livros
  • Core Java 2, Cay S. Horstmann, Gary Cornell
    • Volume 1 (Fundamentos)
    • Volume 2 (Características Avançadas)
  • Java: Como Programar, Deitel & Deitel
  • Thinking in Patterns with JAVA, Bruce Eckel
    • Gratuito. http://www.mindview.net/Books/TIJ/
5
POO-Java
6
Servlet API
7
Java e Aplicações Web
8
Servlets - Introdução
9
Primeiro Servlet
10
Primeiro JSP
11
Pagina recebida no browser
12
JavaBeans
13
Java Beans
  • Um Java Bean nada mais é do que uma classe Java com algumas características especiais:
    • Possui um construtor default (lista de parâmetros vazios)
    • Possui propriedades (métodos de acesso get e set para os seus atributos.). Forma geral:
      • public TipoPropriedade getPropriedade();
      • public void setPropriedade(TipoPropriedade valor);
  • Exemplo de bean:
    • Usuario.java (nas paste web dos exemplos)
14
Exemplo de JavaBean
15
Usando JavaBean em pagina JSP
16
Componentes Web
17
Contextos em Aplicações Web
18
Estrutura de uma Aplicação Web
19
Componentes de um contexto
20
URL de acesso ao contexto
21
Criando um contexto válido
22
Exemplo configuração (1/3)
23
Exemplo configuração (2/3)
24
Exemplo configuração (3/3)
25
Web Archive
26
POO-Java
27
Servlets - API
28
Servlets – Ciclo de Vida
29
Servlets – Ciclo de Vida
30
Servlets – Métodos de Serviço
31
Servlets – Métodos de Serviço (2)
32
POO-Java
33
HTTP Servlets - API
34
Criando um HTTP servlet
35
Métodos de serviço HTTP
36
Inicialização
37
Requisição HTTP
38
Obtendo dados da requisição
39
Resposta HTTP
40
Preenchimento da resposta
41
doGet() e doPost()
42
Parâmetros da requisição
43
Obtendo parâmetros da requisição
44
Gerando a resposta
45
Compilação e implementação
46
Execução
47
Instâncias de servlets
48
Servlet alias – mapeamento no web.xml
49
Sintaxe de mapeamentos
50
Anatomia de uma URL
51
ServletConfig
52
Parâmetros de inicialização
53
Lendo Parâmetros de inicialização
54
ServletContext
55
Inicialização de contexto
56
Carregamento de arquivos no contexto
57
Gravação de atributos no contexto
58
Escopo e Threads
59
Repasse de requisição
60
Redirecionamento x Repasse
61
POO-Java
62
Sessões
63
Sessões
64
Compartilhamento objetos na seção
65
Sessão
66
Escopo de objetos em servlets
67
Escopo de objetos em servlets: resumo
68
Recursos compartilhados
69
Acesso a Bancos de Dados
70
Acesso ao pool de conexões
71
POO-Java
72
Contêineres WEB
  • Os scriptlets contidos nas páginas JSP são processados pelo Contêiner JSP;
    • Ao browser, chega apenas a página HTML resultante do processamento do arquivo .jsp. Ou seja scriptlets (<% ... %>) nunca chegam ao browser.


  • Para executar servlets e arquivos JSP, é preciso implantá-los em um Contêiner Web.


  • Um Contêiner Web pode estar executando como parte de um servidor HTTP ou pode ele próprio ser o servidor.
73
Contêineres WEB
  • O Contêiner Web é responsável por:
    • transformar arquivos JSP em arquivos fonte em Java (mais especificamente, em fontes servlets)
    • compilar esses arquivos fonte, criando arquivos .class
    • repassar esses arquivos .class à JVM para para execução.


  • Existem diversos Contêineres WEB atualmente...
74
Contêineres WEB (cont.)
  • Apache Tomcat
    • http://jakarta.apache.org/tomcat/
  •  Sun JSWDK
    • http://java.sun.com/products/servlet/download.html
  • Allaire JRun
    • http://www.allaire.com/products/jrun/
  • New Atlanta ServletExec
    • http://newatlanta.com/
  • Gefion Software LiteWebServer
    • http://www.gefionsoftware.com/LiteWebServer/
  • Sun Java Web Server™
    • http://www.sun.com/software/jwebserver/try/
75
Contêineres WEB (cont.)
  • Bluestone
    • http://www.bluestone.com
  • Borland Enterprise Server
    • http://www.inprise.com
  • iPlanet Application Server
    • http://www.iplanet.com
  • Orbix E2A (formally iPortal)
    • http://www.iona.com
  • Jetty
    • http://www.mortbay.com
  • JRun
    • http://www.allaire.com

76
Contêineres WEB (cont.)
  • Orion Application Server
    • http://www.orionserver.com
  • Resin
    • http://www.caucho.com
  • SilverStream
    • http://www.silverstream.com
  • Weblogic Application Server
    • http://www.bea.com
  • WebSphere
    • http://www-4.ibm.com/sfotware/webservers/appserv

77
Tomcat
  • É um servidor Web (open source) do projeto Apache.
  • Atualmente, na versão 5.0.x
  • O dois principais módulos do Tomcat são
    • Catalina, o contêiner WEB do Tomcat.
    • Jasper, o compilador de páginas JSP
    • Conectores. O conector padrão é o HTTP.
  • Por default, o Tomcat ocupará a porta 8080 da máquina onde estiver executando.
  • Pasta de instalação default (CATALINA_HOME)
    • C:\Program Files\Apache Software Foundation\Tomcat 5.0
78
Estrutura de pastas do Tomcat 5.0
  • work:  onde são gerados os .java das servlets a partir de JSPs
  • bin: executáveis do Tomcat
  • commons: classes utilizadas pelo Tomcat que também estão disponíveis para as aplicações implantadas.
  • webapps: pastas de contextos (para conter as aplicações Web)
  • shared: contém classes que visíveis para todas as aplicações (e.g., driver JDBC)
79
Estrutura de pastas do Tomcat 5.0
  • server: classes que formam o servidor Tomcat e o seu contêiner WEB.
  • conf: arquivos de configuração (server.xml e outros)
  • logs: arquivos de log para as aplicações. Refira-se a esses arquivos para depurar suas aplicações.
  • temp: diretório temporário utilizado internamente pelo Tomcat
80
Operação com o Tomcat
  • Derrubando e levantando: para levantar ou derrubar o Tomcat, utilize a ferramenta Tomcat Monitor.
    • Alternativamente, pode-se fazer isso com os scripts localizados na pasta bin: startup.bat e shutdown.bat.
  • Abra um navegador WEB e acesse a página cujo endereço é http://localhost:8080
  • O resultado é a página principal do Tomcat
    • Com links para documentação a para administração do servidor
    • Tomcat Manager (gerenciamento das aplicações WEB)
    • Tomcat Administration (configuração do servidor WEB)
    • Exemplos de JSPs e de servlets
81
Contextos
  • Um contexto é um diretório que deve ser criado pelo programador para que o Tomcat reconheça os arquivos e recursos de uma aplicação Web.
  • Esses diretórios armazenam os recursos (arquivos) de uma aplicação WEB.
  • No Tomcat, há três maneiras de criar o contexto de uma aplicação WEB:
    • Transferir os arquivos da aplicação (JSP, servlets, imagens, etc.) para contextos predefinidos pelo servidor.
    • Configurar o servidor para que reconheça um novo contexto onde os arquivos da aplicação residem (server.xml)
    • Implantar a aplicação como um WebArchive (WAR)
82
Implantação de aplicações no Tomcat
  • O contexto raiz chama-se ROOT.
    • Arquivos copiados para <CATALINA_HOME>\webapps\ROOT podem ser acessados via http://servidor:8080/
    • Servlets em <CATALINA_HOME>\webapps\ROOT\WEB-INF\classes podem ser acessados via http://servidor:8080/servlet/
83
Implantação de aplicações no Tomcat
  • Para informar o Tomcat de um contexto externo à raiz, o arquivo server.xml deve ser editado.
    • Esse arquivo é armazenado em <CATALINA_HOME>\conf
    • Exemplo: contexto expljsp.


  • Para aplicações complexas, crie um ou mais arquivos WAR (Web ARchive)
    • Use a ferramenta jar para empacotar os arquivos da aplicação.
    • Renomeie o arquivo com a extensão war.
    • Copie esse arquivo para a pasta raiz do contêiner.
84
Construção de uma servlet
  • Passos para construir uma servlet
    • Crie uma estrutura de  diretórios para a sua aplicação.
      • Pastas WEB-INF e classes
      • Nota: o conteúdo de WEB-INF não é visível a partir do browser.
    • Escreva o código fonte da servlet.
      • É necessário importar os pacotes javax.servlet e javax.servlet.http.
    • Compile o código fonte.
      • O arquivo servlet-api.jar deve estar no classpath
        • Localizado em <CATALINA_HOME>\common\lib\servlet-api.jar
85
Construção de uma servlet
  • Passos para construir uma servlet (cont.)
    • Crie um descritor de implantação (deployment descriptor).
      • Passo opcional.
      • Um descritor de implantação é um arquivo XML (web.xml)
    • Execute o Tomcat.
    • Chame a servlet a partir de um navegador web.
86
Jakarta Tomcat - Configuração
  • Registrando Servlets
    • O arquivo web.xml
      • Localizado em geral no diretório:
        • %CATALINA_HOME%\webapps\<Aplicacao>\WEB-INF
      • Registrando um servlet:
        • <web-app>
        • <servlet>
        • <servlet-name>ServletSes</servlet-name>
        • <servlet-class>interfPesquisa.ServletSes</servlet-class>
        • </servlet>
        • </web-app>

87
Jakarta Tomcat - Configuração
  • Parametros de inicialização
    • Muitas vezes existem valores que são constantes durante a execução do servlet, mas que podem mudar durante a vida da aplicação:
    • Exemplo:
      • Localização de recursos, Mensagens padrão
  • Principais métodos
    • Classes Servlet e ServletConfig
      • public java.util.Enumeration getInitParameterNames()
      • public java.lang.String getInitParameter(java.lang.String name)

88
Parâmetros de Inicialização
  • Configurando no Tomcat
    • Arquivo web.xml
89
Jakarta Tomcat - Configuração
  • init( ServletConfig config )
90
POO-Java
91
Controle de sessão
92
Cookies
93
Exemplo com cookies: Loja Virtual
94
Cookies
  • Um cookie corresponde a uma informação que o servidor requisita que seja armazenada no cliente.
    • Seguem sempre o formato: nome=valor
    • Exemplos: usuario=bezerra, id=1234
  • Cookies são criados através de cabeçalhos HTTP, pelo uso da diretiva Set-Cookie.
  • Exemplo:
    • Content-type: text/html
    • Content-length: 43894
    • Set-Cookie: usuario=bezerra
    • Set-Cookie: ultimologin=13%09%2004
95
Cookies (cont.)
  • Usos típicos de cookies:
    • Identificar um usuário durante uma sessão de e-commerce.
    • Evitar utilização de nome de usuário e senha
    • Customização de sites
    • Propaganda direcionada
  • Enviando um cookie para o browser em JSP:
    • <%
    • Cookie c = new Cookie(“usuario”, “bezerra”);
    • c.setMaxAge(2592000); // Seconds
    • response.addCookie(c);
    • %>
96
Cookies (cont.)
  • Enviando um cookie para o browser em uma servlet:
    • ...
    • Cookie c = new Cookie("name", "value");
    • c.setMaxAge(...);
    • response.addCookie(c);
    • ...
97
Cookies (cont.)
  • Lendo cookies do browser em uma servlet:
    • ...
    • Cookie[] cookies = response.getCookies();
    • for(int i=0; i<cookies.length; i++) {
    •   Cookie c = cookies[i];
    •   if (c.getName().equals("someName")) {
    •     doSomethingWith(c);
    •     break;
    •   }
    • }
    • ...