módulo iva - servletsismael/cursos/xjavawebxml/... · para executar servlets e arquivos jsp, é...
Post on 26-Dec-2018
220 Views
Preview:
TRANSCRIPT
1
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1
Módulo IVa - Servlets
Prof. Ismael H F Santos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2
Ementa
Módulo IVa – ServletsOverview Servlets e JSPCiclo de VidaHTTP ServletsGerenciamento de SessãoContêineres Web – Apache TomcatCookies
2
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 3
Linguagem de Programação JAVAIsmael H. F. Santos, Apostila UniverCidade, 2002
The Java Tutorial: A practical guide for programmersTutorial on-line: http://java.sun.com/docs/books/tutorial
Java in a NutshellDavid Flanagan, O´Reilly & Associates
Just Java 2Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron
Books.Java 1.2
Laura Lemay & Rogers Cadenhead, Editora Campos
Bibliografia
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 4
LivrosCore Java 2, Cay S. Horstmann, Gary Cornell
Volume 1 (Fundamentos)Volume 2 (Características Avançadas)
Java: Como Programar, Deitel & DeitelThinking in Patterns with JAVA, Bruce Eckel
Gratuito. http://www.mindview.net/Books/TIJ/
3
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 5
ServletsE
JSP
POO-Java
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 6
Servlet API
4
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 7
Java e Aplicações Web
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 8
Servlets - Introdução
5
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 9
Primeiro Servlet
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 10
Primeiro JSP
6
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 11
Pagina recebida no browser
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 12
JavaBeans
7
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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 setpara os seus atributos.). Forma geral:
public TipoPropriedade getPropriedade(); public voidsetPropriedade(TipoPropriedade valor);
Exemplo de bean:Usuario.java (nas paste web dos exemplos)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 14
Exemplo de JavaBean
8
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 15
Usando JavaBean em pagina JSP
Imprime: Hello, World
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 16
Componentes Web
9
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 17
Contextos em Aplicações Web
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 18
Estrutura de uma Aplicação Web
10
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 19
Componentes de um contexto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 20
URL de acesso ao contexto
11
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 21
Criando um contexto válido
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 22
Exemplo configuração (1/3)
12
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 23
Exemplo configuração (2/3)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 24
Exemplo configuração (3/3)
13
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 25
Web Archive
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 26
Ciclode Vida
POO-Java
14
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 27
Servlets - API
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 28
Servlets – Ciclo de Vida
15
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 29
Servlets – Ciclo de Vida
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 30
Servlets – Métodos de Serviço
16
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 31
Servlets – Métodos de Serviço (2)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 32
HTTPServlets
POO-Java
17
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 33
HTTP Servlets - API
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 34
Criando um HTTP servlet
18
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 35
Métodos de serviço HTTP
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 36
Inicialização
19
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 37
Requisição HTTP
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 38
Obtendo dados da requisição
20
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 39
Resposta HTTP
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 40
Preenchimento da resposta
21
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 41
doGet() e doPost()
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 42
Parâmetros da requisição
22
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 43
Obtendo parâmetros da requisição
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 44
Gerando a resposta
23
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 45
Compilação e implementação
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 46
Execução
24
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 47
Instâncias de servlets
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 48
Servlet alias – mapeamento no web.xml
25
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 49
Sintaxe de mapeamentos
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 50
Anatomia de uma URL
26
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 51
ServletConfig
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 52
Parâmetros de inicialização
27
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 53
Lendo Parâmetros de inicialização
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 54
ServletContext
28
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 55
Inicialização de contexto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 56
Carregamento de arquivos no contexto
29
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 57
Gravação de atributos no contexto
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 58
Escopo e Threads
30
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 59
Repasse de requisição
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 60
Redirecionamento x Repasse
31
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 61
GerenciamentoSessão
POO-Java
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 62
Sessões
32
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 63
Sessões
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 64
Compartilhamento objetos na seção
33
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 65
Sessão
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 66
Escopo de objetos em servlets
34
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 67
Escopo de objetos em servlets: resumo
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 68
Recursos compartilhados
35
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 69
Acesso a Bancos de Dados
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 70
Acesso ao pool de conexões
36
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 71
Configurando o Tomcat
POO-Java
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 72
Contêineres WEBOs 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.
37
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 73
Contêineres WEBO 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 .classrepassar esses arquivos .class à JVM para para execução.
Existem diversos Contêineres WEB atualmente...
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 74
Contêineres WEB (cont.)Apache Tomcat
http://jakarta.apache.org/tomcat/Sun JSWDK
http://java.sun.com/products/servlet/download.htmlAllaire 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/
38
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 75
Contêineres WEB (cont.)Bluestone
http://www.bluestone.comBorland Enterprise Server
http://www.inprise.comiPlanet Application Server
http://www.iplanet.comOrbix E2A (formally iPortal)
http://www.iona.comJetty
http://www.mortbay.comJRun
http://www.allaire.com
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 76
Contêineres WEB (cont.)
Orion Application Serverhttp://www.orionserver.com
Resinhttp://www.caucho.com
SilverStreamhttp://www.silverstream.com
Weblogic Application Serverhttp://www.bea.com
WebSpherehttp://www-4.ibm.com/sfotware/webservers/appserv
39
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 77
Tomcat
É um servidor Web (open source) do projeto Apache.Atualmente, na versão 5.0.xO dois principais módulos do Tomcat são
Catalina, o contêiner WEB do Tomcat.Jasper, o compilador de páginas JSPConectores. 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
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 78
Estrutura de pastas do Tomcat 5.0
work: onde são gerados os .java das servlets a partir de JSPsbin: executáveis do Tomcatcommons: 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)
40
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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:8080O resultado é a página principal do Tomcat
Com links para documentação a para administração do servidorTomcat Manager (gerenciamento das aplicações WEB)Tomcat Administration (configuração do servidor WEB)Exemplos de JSPs e de servlets
41
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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:1. Transferir os arquivos da aplicação (JSP, servlets, imagens,
etc.) para contextos predefinidos pelo servidor.2. Configurar o servidor para que reconheça um novo contexto
onde os arquivos da aplicação residem (server.xml)3. Implantar a aplicação como um WebArchive (WAR)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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/
42
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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>\confExemplo: 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.
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 84
Construção de uma servletPassos para construir uma servlet1. Crie uma estrutura de diretórios para a sua aplicação.
Pastas WEB-INF e classesNota: o conteúdo de WEB-INF não é visível a partir do browser.
2. Escreva o código fonte da servlet.É necessário importar os pacotes javax.servlet e javax.servlet.http.
3. Compile o código fonte. O arquivo servlet-api.jar deve estar no classpath
Localizado em <CATALINA_HOME>\common\lib\servlet-api.jar
43
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 85
Construção de uma servletPassos para construir uma servlet (cont.)
4. Crie um descritor de implantação (deploymentdescriptor).
Passo opcional.Um descritor de implantação é um arquivo XML (web.xml)
5. Execute o Tomcat. 6. Chame a servlet a partir de um navegador web.
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 86
Jakarta Tomcat - Configuração
Registrando ServletsO 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>
44
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 87
Jakarta Tomcat - Configuração
Parametros de inicializaçãoMuitas 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.StringgetInitParameter(java.lang.String name)
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 88
Parâmetros de InicializaçãoConfigurando no Tomcat
Arquivo web.xml
45
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 89
Jakarta Tomcat - Configuração
init( ServletConfig config )
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 90
CookiesPOO-Java
46
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 91
Controle de sessão
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 92
Cookies
47
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 93
Exemplo com cookies: Loja Virtual
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 94
Cookies
Um cookie corresponde a uma informação que o servidor requisita que seja armazenada no cliente.
Seguem sempre o formato: nome=valorExemplos: usuario=bezerra, id=1234
Cookies são criados através de cabeçalhos HTTP, pelo uso da diretiva Set-Cookie.Exemplo:Content-type: text/htmlContent-length: 43894Set-Cookie: usuario=bezerraSet-Cookie: ultimologin=13%09%2004
48
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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 senhaCustomização de sitesPropaganda direcionada
Enviando um cookie para o browser em JSP:<%Cookie c = new Cookie(“usuario”, “bezerra”);c.setMaxAge(2592000); // Secondsresponse.addCookie(c);%>
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 96
Cookies (cont.)Enviando um cookie para o browser em uma servlet:...Cookie c = new Cookie("name", "value");c.setMaxAge(...);response.addCookie(c);...
49
April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 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;
}}...
top related