Módulo IVa - Servletsismael/Cursos/XJavaWebXML/... · Para executar servlets e arquivos JSP, é...

Post on 26-Dec-2018

220 views 0 download

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;

}}...