Profo Anderson
Experincia
Acadmica
Graduao
em
Engenharia
de
Computao
pelo
InsAtuto
Militar
de
Engenharia
(IME)
1993
-
1997
Bolsista
do
InsAtuto
de
MatemAca
Pura
e
Aplicada
(IMPA)
1995-1997
Sistemas
Dinmicos
e
Computao
Grca
Doutorado
no
Laboratrio
Nacional
de
Computao
CienUca
2002
2009
Segurana
da
Informao
Ataques
Distribudos
de
Negao
de
Servio
Experincia
Prossional
Projeto
e
Implantao
de
uma
Rede
de
Computadores
Supervisor
do
Projeto
de
Estruturao
da
Pesquisa
CienUca
de
Defesa
CibernAca
14/02/13
OBJETIVOS
Capacitar os alunos a desenvolver aplicaes com interface Web. Os alunos utilizaro HTML e ferramentas de desenvolvimento para Web, na construo de aplicaes Servlets e JSP.
14/02/13
EMENTA
Criao de Servlets criao de JSP Aplicao em Camadas Uso de Padres de Projeto Servidor de Aplicao Framework JSF Estratgias de implementao.
CONTEDO
PROGRAMTICO
CONTEDO PROGRAMTICO: Unidade 1 A linguagem HTML
1.1 Introduo Linguagem HTML 1.2 Edio e publicao de documentos 1.3 O documento bsico e seus componentes 1.4 Formatao de textos, cores e fontes 1.5 Ligaes (Uso de links) 1.6 Utilizao de imagens, tabelas e frames 1.7 Formulrios
2.1 Servidor de Aplicao e Aplicao em Camadas 2.2 Servlets e Componentes de Servidor 2.3 Estrutura de uma aplicao Web 2.4 Arquivo de configurao web.xml
14/02/13
CONTEDO
PROGRAMTICO
Unidade 3 Interfaces Web com JSP Unidade 4 Uso de Padres de Projeto
3.1 JSP 3.2 Interao com Servlets
BIBLIOGRAFIA
Livro-Texto:
BASHAN, B.; SIERRA, K.; BATES, B. Use a Cabea! Servlets & JSP. Alta Books. DEITEL. Java como Programar. 6. ed. GEARY, D. M. Dominando Java Server Pages avanado. Rio de Janeiro: Cincia Moderna, 2002. TODD, N.; SZOLKOWSKI, M. JavaServer Pages - Guia do Desenvolvedor. Rio de Janeiro: Campus.
Bibliograa Complementar:
14/02/13
Sistema de Avaliao
Composio das notas de AV1 e AV2
AV1: Prova escrita AV2: Prova Escrita(5,0 pontos) e Atividade Supervisionada (5,0 pontos) AVF: Prova escrita 2 chamada: Prova Escrita
Datas das Provas Escritas AV1: 11 de Abril de 2013 AV2: Prova Escrita: 20 de Junho de 2013 Atividade Supervisionada: Entrega dia 20 de Junho de 2013, pelo 28 horas, at s 23:55. AVF: 04 de Julho de 2013 2 chamada em 27 de Junho de 2013
Sistema de Avaliao
Atividade Supervisionada (Vale 5,0 pontos) Trabalhos prticos Entrega de Relatrios de Acompanhamento Previso de Matria para as Provas AV1: Unidade 1, 2 e item 3.2 Prova Escrita: Todas as unidades Segunda chamada: Todas as unidades AVF: Todas as unidades
10
14/02/13
Observaes Importantes
Sistema de Avaliao
So condies para aprovao em cada disciplina, alm de alcanar o mnimo de frequncia: Para aprovao direta ou por mdia > 7,00 (sete)
Se: Mdia (M) =
AV 1 + AV 2 7, 0 2
aluno aprovado
Para aprovao por mdia inferior a 7,00 (sete) e > 3,0 (trs)
Se: 3,0 < M < 7,0 aluno em prova final - AV3
o aluno s ser considerado aprovado na disciplina se alcanar mdia final (MF) entre a prova final (AVF) e mdia aritmtica das duas avaliaes anteriores (AV1 e AV2) igual ou superior (M) a 6,0 (seis).
14/02/13
AV2
2 C H A M A D A / A V F Todos os contedos estudados Todos os contedos estudados no semestre le4vo. no semestre le4vo.
I - Prova (Obrigatria - presencial, individual e I Prova (Obrigatria e compe 50% da nota da I Prova (Obrigatria - sem consulta. Compe 100% na nota). AV2) presencial, individual e sem consulta. Compe 100% na A Prova presencial e individual ser aplicada para Prova Colegiada para disciplinas selecionadas. As nota). todas as turmas, exceto NDC e disciplinas disciplinas sem prova colegiada aplicaro provas denidas pela coordenao de curso. presenciais e individuais. Sero provas discursivas Segunda Chamada permiAda e/ou objeAvas. Se objeAvas, devero ser somente para uma nica Sero provas discursivas e/ou objeAvas. Se aplicadas pelo 28H, no mesmo padro de prova avaliao (AV1 ou AV2), desde objeAvas, devero ser aplicadas pelo 28H, no colegiada. que por moAvo devidamente mesmo padro de prova colegiada. jusAcado. O b s e r v a o : A S e g u n d a II - AAvidade PrAca Supervisionada (Obrigatria Chamada aplica-se AV1 ou e compe at 50% da nota da AV2, a critrio do AV2 como um todo e no, somente a uma das partes que professor) compem essas avaliaes. Ou III Outras AAvidades (Opcional. A critrio de seja, no existe Segunda cada professor, outras formas de avaliao Chamada de provas, aAvidades podero ser uAlizadas para completar a nota de prAcas e outras aAvidades de AV2). forma isolada. O aluno com direito a Segunda Chamada aquele que obteve nota zero por no ter realizado a AV 1 ou AV2 ( e no, nota zero numa prova, ou numa aAvidade supervisionada ou numa outra aAvidade).
AV2
2 C H A M A D A / A V F Todos os contedos estudados Todos os contedos estudados no semestre le4vo. no semestre le4vo.
I - Prova (Obrigatria - presencial, individual e I Prova (Obrigatria e compe 50% da nota da I Prova (Obrigatria - sem consulta. Compe 100% na nota). AV2) presencial, individual e sem consulta. Compe 100% na A Prova presencial e individual ser aplicada para Prova Colegiada para disciplinas selecionadas. As nota). todas as turmas, exceto NDC e disciplinas disciplinas sem prova colegiada aplicaro provas denidas pela coordenao de curso. presenciais e individuais. Sero provas discursivas Segunda Chamada permiAda e/ou objeAvas. Se objeAvas, devero ser somente para uma nica Sero provas discursivas e/ou objeAvas. Se aplicadas pelo 28H, no mesmo padro de prova avaliao (AV1 ou AV2), desde objeAvas, devero ser aplicadas pelo 28H, no colegiada. que por moAvo devidamente mesmo padro de prova colegiada. jusAcado. O b s e r v a o : A S e g u n d a II - AAvidade PrAca Supervisionada (Obrigatria Chamada aplica-se AV1 ou e compe at 50% da nota da AV2, a critrio do AV2 como um todo e no, somente a uma das partes que professor) compem essas avaliaes. Ou III Outras AAvidades (Opcional. A critrio de seja, no existe Segunda cada professor, outras formas de avaliao Chamada de provas, aAvidades podero ser uAlizadas para completar a nota de prAcas e outras aAvidades de AV2). forma isolada. O aluno com direito a Segunda Chamada aquele que obteve nota zero por no ter realizado a AV 1 ou AV2 ( e no, nota zero numa prova, ou numa aAvidade supervisionada ou numa outra aAvidade).
14/02/13
AV2
2 C H A M A D A / A V F Todos os contedos estudados Todos os contedos estudados no semestre le4vo. no semestre le4vo.
I - Prova (Obrigatria - presencial, individual e I Prova (Obrigatria e compe 50% da nota da I Prova (Obrigatria - sem consulta. Compe 100% na nota). AV2) presencial, individual e sem consulta. Compe 100% na A Prova presencial e individual ser aplicada para Prova Colegiada para disciplinas selecionadas. As nota). todas as turmas, exceto NDC e disciplinas disciplinas sem prova colegiada aplicaro provas denidas pela coordenao de curso. presenciais e individuais. Sero provas discursivas Segunda Chamada permiAda e/ou objeAvas. Se objeAvas, devero ser somente para uma nica Sero provas discursivas e/ou objeAvas. Se aplicadas pelo 28H, no mesmo padro de prova avaliao (AV1 ou AV2), desde objeAvas, devero ser aplicadas pelo 28H, no colegiada. que por moAvo devidamente mesmo padro de prova colegiada. jusAcado. O b s e r v a o : A S e g u n d a II - AAvidade PrAca Supervisionada (Obrigatria Chamada aplica-se AV1 ou e compe at 50% da nota da AV2, a critrio do AV2 como um todo e no, somente a uma das partes que professor) compem essas avaliaes. Ou III Outras AAvidades (Opcional. A critrio de seja, no existe Segunda cada professor, outras formas de avaliao Chamada de provas, aAvidades podero ser uAlizadas para completar a nota de prAcas e outras aAvidades de AV2). forma isolada. O aluno com direito a Segunda Chamada aquele que obteve nota zero por no ter realizado a AV 1 ou AV2 ( e no, nota zero numa prova, ou numa aAvidade supervisionada ou numa outra aAvidade).
AV2
2 C H A M A D A / A V F Todos os contedos estudados Todos os contedos estudados no semestre le4vo. no semestre le4vo.
I - Prova (Obrigatria - presencial, individual e I Prova (Obrigatria e compe 50% da nota da I Prova (Obrigatria - sem consulta. Compe 100% na nota). AV2) presencial, individual e sem consulta. Compe 100% na A Prova presencial e individual ser aplicada para Prova Colegiada para disciplinas selecionadas. As nota). todas as turmas, exceto NDC e disciplinas disciplinas sem prova colegiada aplicaro provas denidas pela coordenao de curso. presenciais e individuais. Sero provas discursivas Segunda Chamada permiAda e/ou objeAvas. Se objeAvas, devero ser somente para uma nica Sero provas discursivas e/ou objeAvas. Se aplicadas pelo 28H, no mesmo padro de prova avaliao (AV1 ou AV2), desde objeAvas, devero ser aplicadas pelo 28H, no colegiada. que por moAvo devidamente mesmo padro de prova colegiada. jusAcado. O b s e r v a o : A S e g u n d a II - AAvidade PrAca Supervisionada (Obrigatria Chamada aplica-se AV1 ou e compe at 50% da nota da AV2, a critrio do AV2 como um todo e no, somente a uma das partes que professor) compem essas avaliaes. Ou III Outras AAvidades (Opcional. A critrio de seja, no existe Segunda cada professor, outras formas de avaliao Chamada de provas, aAvidades podero ser uAlizadas para completar a nota de prAcas e outras aAvidades de AV2). forma isolada. O aluno com direito a Segunda Chamada aquele que obteve nota zero por no ter realizado a AV 1 ou AV2 ( e no, nota zero numa prova, ou numa aAvidade supervisionada ou numa outra aAvidade).
14/02/13
AV2
2 C H A M A D A / A V F Todos os contedos estudados Todos os contedos estudados no semestre le4vo. no semestre le4vo.
I - Prova (Obrigatria - presencial, individual e I Prova (Obrigatria e compe 50% da nota da I Prova (Obrigatria - sem consulta. Compe 100% na nota). AV2) presencial, individual e sem consulta. Compe 100% na A Prova presencial e individual ser aplicada para Prova Colegiada para disciplinas selecionadas. As nota). todas as turmas, exceto NDC e disciplinas disciplinas sem prova colegiada aplicaro provas denidas pela coordenao de curso. presenciais e individuais. Sero provas discursivas Segunda Chamada permiAda e/ou objeAvas. Se objeAvas, devero ser somente para uma nica Sero provas discursivas e/ou objeAvas. Se aplicadas pelo 28H, no mesmo padro de prova avaliao (AV1 ou AV2), desde objeAvas, devero ser aplicadas pelo 28H, no colegiada. que por moAvo devidamente mesmo padro de prova colegiada. jusAcado. O b s e r v a o : A S e g u n d a II - AAvidade PrAca Supervisionada (Obrigatria Chamada aplica-se AV1 ou e compe at 50% da nota da AV2, a critrio do AV2 como um todo e no, somente a uma das partes que professor) compem essas avaliaes. Ou III Outras AAvidades (Opcional. A critrio de seja, no existe Segunda cada professor, outras formas de avaliao Chamada de provas, aAvidades podero ser uAlizadas para completar a nota de prAcas e outras aAvidades de AV2). forma isolada. O aluno com direito a Segunda Chamada aquele que obteve nota zero por no ter realizado a AV 1 ou AV2 ( e no, nota zero numa prova, ou numa aAvidade supervisionada ou numa outra aAvidade).
18
14/02/13
19
28 Horas
rea dos fruns rea de comunicao da turma e para sanar dvidas gerais e sobre a Atividade Supervisionada.
20
28 Horas
Sobre o professor Informaes sobre o professor, como currculo Lattes, email e reas de interesse.
10
14/02/13
21
28 Horas
Midiateca Local onde sero disponibilizados links e apostilas de interesse do aluno para o aprendizado
22
28 Horas
Material Didtico Local onde est: Transparncias Plano de Ensino Plano de Estudos/Aula
11
14/02/13
23
28 Horas
Atividades para compor a primeira avaliao informaes sobre a AV1
24
28 Horas
Atividades para compor a segunda avaliao informaes sobre a AV2 informaes sobre a atividade supervisionada
12
14/02/13
25
28 Horas
Segunda Chamada informaes sobre a segunda chamada
26
28 Horas
Avaliao Final informaes sobre a avaliao final
13
14/02/13
27
28 Horas
Atividade Supervisionada informaes sobre a atividade supervisionada
28
Atividade Supervisionada
A atividade supervisionada tem a caracterstica de ser um trabalho acompanhado pelo Professor, assim, quaisquer dvidas devero ser sanadas ou nas aulas ou atravs de mensagens no 28 horas que sero verificadas com at uma semana da sua postagem. Implementar uma calculadora em um portal que realize as seguintes contas:
a) soma b) subtrao c) multiplicao d) diviso
CONDIES DE EXECUO:
- Trabalho dever ser entregue pelo 28 horas, seguindo a norma de trabalhos de TCC da UniCarioca. Na capa deste trabalho dever ter o nome completo e matrcula de todos os componentes dos grupos. - Os grupos podero ter at 5 pessoas. - Trabalhos iguais sero consideradas cpias e tero o grau ZERO. - Entrega: 20 de Junho de 2013, at s 23:55h.
14
14/02/13
CONTROLE DA PRESENA DO ALUNO. Importante lanar a presena dos alunos as aulas. Cobrar o documento que justifique a falta.
Dever conter: nome completo, data e hora. Pode enviar por e-mail, informando o nome da disciplina.
COBRANA DE TRABALHOS NOS MOLDES ACADMICOS (Normas ABNT). Ateno especial ao solicitar resumos e resenhas. Indicar tipos e exemplos, principalmente, para alunos que no cumpriram Metodologia Cientfica.
15
14/02/13
31
Plano de Aula
07/02: Apresentao da disciplina 14/02: Carnaval 21/02: Unidade 1 A linguagem HTML; 1.1 Introduo Linguagem HTML; 1.2 Edio e publicao de documentos; 1.3 O documento bsico e seus componentes; 28/02: 1.4 Formatao de textos, cores e fontes; 1.5 Ligaes (Uso de links); 1.6 Utilizao de imagens, tabelas e frames; 1.7 Formulrios
32
Plano de Aula
07/03: Unidade 2 Modelo de Programao Web; 2.1 Servidor de Aplicao e Aplicao em Camadas 14/03: 2.2 Servlets e Componentes de Servidor 21/03: 2.3 Estrutura de uma aplicao Web; 2.4 Arquivo de configurao web.xml 28/03: 3.2 Interao com Servlets
Profo. Anderson asantos@unicarioca.edu.br
16
14/02/13
33
Plano de Aula
04/04: 3.2 Interao com Servlets 11/04: AV1 18/04: Vista e Resoluo da Prova AV1 25/04: 3.2 Interao com Servlets
Profo. Anderson asantos@unicarioca.edu.br
34
Plano de Aula
02/05: 3.1 JSP 09/05: 3.1 JSP 16/05: Semana UniCarreira 23/05: 3.1 JSP 30/05: Feriado
Profo. Anderson asantos@unicarioca.edu.br
17
14/02/13
35
Plano de Aula
06/06: Unidade 4 Uso de Padres de Projeto; 4.1 Integrao com Banco de Dados no Servidor; 4.2 Classes de Negcio 13/06: Unidade 4 Uso de Padres de Projeto; 4.1 Integrao com Banco de Dados no Servidor; 4.2 Classes de Negcio 20/06: AV2 27/06: 2a Chamada
Profo. Anderson asantos@unicarioca.edu.br
36
Plano de Aula
04/07: AVF
18
14/02/13
http://www.w3.org/People/Berners-Lee/
19
14/02/13
tags
so comandos do html o documento renderizado pelo navegados atravs da formatao dos tags so case insensitive so sempre precedidos do sinal de menor (<) e seguidos de um sinal de maior (>)
40
20
14/02/13
estrutura bsica:
<html> <head> </head> <body> </body> </html>
atributos <tag atributo=x>texto</tag> comentrios <!-- texto --> a denio da cor formada por 3 valores hexadecimais, onde cada valor corresponde uma quanAdade de vermelho, verde e azul (RGB) exemplos (#RRGGBB): #000000 (preto), #FFFFFF (branco) e #FF0000 (vermelho).
21
14/02/13
Header: indica que o texto influenciado um header (cabealho) tm 6 nveis, sendo que o nvel 1 <h1> o que tm o maior tamanho de fonte formato:
<h1>texto</h1> <h2>texto</h2>
Paragraph: indica que o texto influenciado um pargrafo. Cria um espao entre o pargrafo e o prximo elemento. formato: <p align=tipo>texto</p> atributo align=center | left | right | justify Bold/Strong: indica que o texto influenciado deve ficar em negrito formato: <b>texto</b> no possui atributo <strong>texto</strong> alm do efeito visual, aplica nfase ao texto que influenciado pelo marcador).
22
14/02/13
Italic: indica que o texto influenciado deve ficar em itlico formato: <i>texto</i> no possui atributo <em>texto</em> alm do efeito visual, aplica nfase ao texto que influenciado pelo marcador.
Underline: indica que o texto influenciado deve ficar sublinhado formato: <u>texto</u> no possui atributo
Strike: indica que o texto influenciado deve ser apresentado com um trao cortando-o formato: <strike>texto</strike> no possui atributo
Preformatted :indica que o texto influenciado deve ser apresentado exatamente como est no cdigo fonte html formato: <pre>texto</pre> no possui atributo o browser usa uma fonte diferente da que estiver sendo usada
23
14/02/13
Font: permite escolher a fonte a ser utilizada em uma determinada parte do texto formato: <font face=tipodafonte color=#RRGGBB size=valor>texto </font>
Horizontal Row: insere uma linha horizontal na tela formato: <hr align=tipo size=valor width=valor noshade>
Anchor: tag utilizado para criar links, seja internos ou externos formato: <a href =pgina, rea de uma pgina ou endereo de e-mail name =nome title=descrio do link> texto, imagem, som, etc </a>
Anchor: link para uma determinada parte de uma pgina formato: <a name=#nome></a> (posicione este TAG na posio do documento que deseja criar um link) <a href=#nome> texto do link que apontar para o link interno </a>
24
14/02/13
Anchor: link para um endereo de e-mail, onde uma vez clicado, abrir o programa de e-mail configurado na mquina formato: <a href =mailto:none@nowhere.com> texto do link </a>
Imagens: tag utilizado para inserir uma imagem serve para todos os formatos de arquivos (jpg, gif, png) formato: formato: <img src=arquivo width=valor height=valor border=valor align=tipo hspace=valor vspace=valor alt=texto>
25
14/02/13
Tabelas <TABLE>...</TABLE> delimita uma tabela. <CAPTION>...</CAPTION> define o ttulo da tabela <TR>...</TR> delimita uma linha <TH>...</TH> define um cabealho para colunas ou linhas (dentro de <TR>) <TD>...</TD> delimita um elemento ou clula (dentro de <TR>) Uma tabela simples: <TABLE BORDER=4> <CAPTION>Primeiro exemplo</CAPTION> <TR><TH>Coluna 1</TH><TH>Coluna 2</TH></TR> <TR><TD>linha1, coluna 1</TD><TD> linha 1, coluna 2</TD></TR> <TR><TD>linha 2, coluna 1</TD><TD>linha 2, coluna 2</TD></TR> </TABLE>
Clulas compreendendo mais de uma coluna ou linha possvel englobar colunas e linhas, atravs dos atributos COLSPAN (para colunas) e ROWSPAN (para linhas): <TABLE BORDER=1>
<TR><TD>linha1, coluna 1</TD><TD> linha 1, coluna 2</TD></TR> <TR><TD>linha 2, coluna 1</TD><TD>linha 2, coluna 2</TD></TR> <TR><TD colspan=2>duas colunas</TD></TR>
</TABLE>
26
14/02/13
As linhas e clulas podem ter alinhamentos definidos atravs dos atributos: <TD ALIGN=alin_horizontal>Texto da clula</TD> <TD VALIGN=alin_vertical>Texto da clula</TD>
Para apresentar uma tabela ocupando determinado espao disponvel na linha, usamos o atributo WIDTH. Esse atributo pode ser aplicado tambm a linhas e clulas. Tabela ocupando 50% do espao disponvel, com uma coluna de 60% do espao disponvel na tabela <TABLE BORDER=1 width=50%> <TR> <TD>janeiro</TD><TD width=60%>fevereiro</TD><TD>maro</TD> </TR> <TR> <TD>abril</TD><TD width=60%>maio</TD><TD>junho</TD> </TR> </TABLE>
27
14/02/13
Dois atributos permitem o controle de espaamento em tabelas: CELLPADDING - espao entre o texto e as bordas da clula CELLSPACING - espao entre clulas
Ex.1: Espao entre o texto e as bordas
Cor de fundo <TABLE BORDER=5 CELLSPACING=5 CELLPADDING=10 BGCOLOR="#E1FFD9"> <TD BGCOLOR="#E1FFD9"> Cor de borda <TABLE BORDER=5 CELLSPACING=5 CELLPADDING=10 BGCOLOR="#E1FFD9" BORDERCOLOR="#00FF00"> Imagem de fundo <TD BACKGROUND="imagem">
28
14/02/13
Frames: Os frames so divises da tela do browser em diversas telas (ou quadros). Com isso, torna-se possvel apresentar mais de uma pgina por vez: por exemplo, um ndice principal em uma parte pequena da tela, e os textos relacionados ao ndice em outra parte. Nem todos os usurios gostam de frames, pois nem sempre a navegao fcil, alm de problemas para a impresso e a marcao dos documentos interiores aos frames nos bookmarks. A alternativa natural para os frames so as tabelas. <FRAMESET COLS="20%, 80%"> <FRAME SRC="indice1.html"> <FRAME SRC="apresenta.html" NAME="principal"> <NOFRAME> <BODY> <H2>Bem-vindo pgina do assunto X!</h2> </BODY> </NOFRAME> </FRAMESET>
Sempre que se aciona um link dentro de uma pgina, o default (isto , o comportamento padro) que a pgina referente a esse link seja carregada na mesma janela da pgina anterior. No exemplo visto com frames, seguir um link dentro da janela direita faz com que a pgina apontada seja mostrada ocupando a janela da direita (coluna de 80%): Veja no cdigo que o frame associado a apresenta.html tem um atributo NAME. Nomear um frame permite que direcionemos o frame em que ser apresentado o documento de destino de um link. No exemplo visto, o arquivo indice1.html tem um link da seguinte forma: <a href="apresenta2.html" target=principal>Exemplo n.2</a>. Isto indica que se est definindo (pelo atributo target) o frame em que a pgina de destino do link (apresenta2.html) ser mostrada.
29
14/02/13
Dois frames em coluna <FRAMESET COLS="x, y"> <FRAME SRC="col1.html"> <FRAME SRC="col2.html"> </FRAMESET> Dois frames em linha <FRAMESET ROWS="x, y"> <FRAME SRC="lin1.html"> <FRAME SRC="lin2.html"> </FRAMESET>
Tres frames <FRAMESET COLS="x, y"> <FRAME SRC="col1.html"> <FRAMESET ROWS="x, y"> <FRAME SRC="lin1.html"> <FRAME SRC="lin2.html"> </FRAMESET> </FRAMESET> Tres Frames <FRAMESET ROWS="x, y"> <FRAME SRC="lin1.html"> <FRAMESET COLS="x, y"> <FRAME SRC="col1.html"> <FRAME SRC="col2.html"> </FRAMESET> </FRAMESET>
30
14/02/13
At este ponto, vimos os atributos COLS e ROWS (para FRAMESET), SRC e NAME (para FRAME). Eliminao das bordas dos frames: <FRAMESET COLS="20%, 80%" FRAMEBORDER="no"> <FRAME SRC="indice4.html"> <FRAME SRC="apresenta4.html" NAME="principal"> </FRAMESET> Frame sem barra de rolagem: <FRAMESET COLS="20%, 80%"> <FRAME SRC="indice4.html" SCROLLING="no"> <FRAME SRC="apresenta4.html" NAME="principal"> </FRAMESET>
Frames so interessantes para apresentar conjuntos de pginas com um ndice fixo para a navegao. Alm disso, torna-se possvel mostrar diversas pginas e/ou mdias em uma nica janela do browser. Um cuidado procurar controlar bem a navegao, evitando que o acionamento de links no leve o leitor a ver seu browser criar frames dentro de frames, gerando uma grande confuso (veja item seguinte, sobre "limpar" a tela).
31
14/02/13
Formulrios:
32
14/02/13
Formulrios:
Formulrios:
33
14/02/13
formato:
<input type=tipo {!-- aps escolher o tipo, os atributos restantes sero referentes a este tipo --} >
cria uma rea de somente uma linha onde poder ser digitado um texto formato:
<input type=text name=texto value=texto size=valor>
34
14/02/13
type=text define formulrio tipo text name=texto nome lgico do campo value=texto - texto que aparece dentro do campo size=valor - tamanho do campo, em caracteres
<form> First name: <input type="text" name="firstname" /><br /> Last name: <input type="text" name="lastname" /> </form>
cria uma rea de uma linha onde poder ser digitado uma senha formato:
<input type=password name=texto size=valor maxlenght=valor>
35
14/02/13
<form> <input type="radio" name="sex" value="male" /> Male<br /> <input type="radio" name="sex" value="female" /> Female </form>
<form> <input type="checkbox" name="vehicle" value="Bike" /> I have a bike<br /> <input type="checkbox" name="vehicle" value="Car" /> I have a car </form>
36
14/02/13
37
14/02/13
cria uma rea de x linhas por y colunas para insero de texto <textarea name=nome rows=valor cols=valor> texto que aparece dentro </textarea>
<textarea rows="10" cols="30"> The cat was playing in the garden. </textarea>
38
14/02/13
select cria um controle onde pode ser escolhido um (list ou menu) ou mais itens dentro (list) de uma lista
cria um controle onde podem ser escolhidos um ou mais itens dentro de uma lista <select name=select size=valor multiple> <option>texto</option> </select>
39
14/02/13
cria um controle onde pode ser escolhido um item dentro de uma lista
80
40
14/02/13
Todas as plataformas consistem de uma mquina virtual java (JVM) e uma API (Application Programming Interface).
41
14/02/13
Arquiteturas em Camadas
Arquitetura centralizada
At 80s
Arquitetura 2 camadas
Arquitetura 3 camadas
Camada Apresentao
Camada Aplicao
Servidor de Aplicao
Camada de Dados
Aplicaes Desktop
42
14/02/13
Camada Apresentao
Aplicaes Web
Arquitetura n camadas
Camada Aplicao
Camada de Dados
Servidor de Banco de Dados
Camada Apresentao
Camada de Aplicao
Camada de Dados
Camada Web
Clientes
Servidor de Web
Servidor de Aplicao
43
14/02/13
Camada de Aplicao
Camada Apresentao
Camada de Dados
Camada Web
Clientes
Os seguintes componentes podem existir na camada de apresentao: "Application client" (cliente no-Web) T ipicamente usa Swing como User Interface (UI) Tambm chamado "Console Application" Applets
Camada de Aplicao
Camada Apresentao
Camada de Dados
Camada Web
Clientes
Componentes da camada Web podem incluir vrios mdulos, incluindo: Pginas HTML/XML estticas Servlets Programas em Java que rodam no servidor Web e que processam pedidos gerando respostas dinmicas Java Server pages (JSP) Templates HTML mais fceis de criar, mas contendo "scriplets" (trechos em Java) para a gerao de contedo dinmico So convertidas em servlets quando acessadas pela primeira vez JavaBeans Componentes tradicionais em Java que podem ser usados em servlets e JSPs
44
14/02/13
Camada de Aplicao
Camada Apresentao
Camada de Dados
Camada Web
Clientes
Camada Apresentao
Camada de Aplicao
Camada de Dados
Camada Web
Clientes
Servidor de Web
Servidor de Aplicao
Observe que a camada de chamamos "de dados" pode ser um banco de dados ou outra coisa: Por exemplo, pode ser um sistema ERP, CRM ou outro sistema legado
45
14/02/13
A API de Servlet um conjunto de classes Java que define uma interface padro entre o cliente web e o servidor web.
javax.servlet.Servlet
destroy() Mtodo chamado pelo container onde o servlet est sendo executado para indicar que o servlet terminou. getServletConfig() Mtodo que retorna um objeto ServletConfig, que contm os parametros de inicializacao passados no arquivo web.xml getServletInfo() Retorna informaes sobre a aplicao, como autor, verso e copyright. init(ServletConfigconfig) Metodo chamado na inicializao do servlet. service(ServletRequestreq, ServletResponseres)
Mtodo que trata as requisies feitas a um servlet bem como a criao das respostas.
46
14/02/13
javax.servlet.http.HttpServlet
Deve-se estender os 2 mtodos abaixo para tratar requisies do tipo POST e GET.
doGet doPost
Subclasses reescrevem os mtodos doGet, doPost e podem reescrever os mtodos init() e destroy()
47
14/02/13
HttpServletRequest e HttpServletResponse
HttpServletRequest
Interface que encapsula a requisio feita pelo cliente atravs do protocolo HTTP
48
14/02/13
Manipulao de Atributos
void setAttribute( java.lang.String name, java.lang.Object)
Coloca ou sobreescreve atributo no request identificado por name
java.util.Enumeration getAttributesNames()
Obtm listagem, contendo nomes de atributos da requisio
HttpServletResponse
Interface que encapsula a resposta ao cliente
Tambm possvel configurar qual o tipo dos dados que esto sendo enviados de volta ao cliente
setContentType( String type ) Os tipos mais comuns so text/html, text/xml O mtodo setContentType deve ser chamado antes do mtodo getWriter
49
14/02/13
Hello World!
Hello World!
Camada Cliente
index.html
Camada Servidora Servidor Web
Aplicaes Desktop
helloworld.java
50
14/02/13
JEE Deployment
Deployment de Aplicaes
Deployment o processo de instalar e customizar mdulos numa plataforma JEE Envolve vrias etapas:
Copiar o arquivo apropriado no servidor de aplicaes Configurar a aplicao atravs do deployment descriptor
O deployment descriptor contm informao que pode variar entre duas instalaes Exemplos: nomes de bancos de dados, de tabelas, de campos, segurana, etc.
JEE Deployment
Criao, composio e packaging de aplicaes
Um mdulo uma unidade de empacotamento Empacota um ou mais componentes do mesmo tipo H 3 tipos de mdulos:
Web Modules Unidade instalvel (deployable) contendo
Servlets Pginas JSP Bibliotecas de tags JSP Arquivos JAR de biblioteca Java Documentos HTML/XML Outros recursos (imagens, arquivos de classes, applets, ...)
O arquivo chamado "Web ARchive file" (WAR file) WAR = arquivo JAR mas com diretrio WEB-INF contendo um deployment descriptor num arquivo web.xml
O servidor JEE examina o Deployment Descriptor para saber como tratar o componente ou aplicao
51
14/02/13
JEE Deployment
Criao, composio e packaging de aplicaes
Um mdulo uma unidade de empacotamento Empacota um ou mais componentes do mesmo tipo H 3 tipos de mdulos:
EJB Modules
O arquivo um arquivo JAR mas com deployment descriptor ejb-jar.xml no diretrio META-INF
JEE Deployment
Criao, composio e packaging de aplicaes
Um mdulo uma unidade de empacotamento Empacota um ou mais componentes do mesmo tipo H 3 tipos de mdulos:
Java Modules
Um grupo de classes clientes empacotadas em arquivos JAR O deployment descriptor de um Java Module est num arquivo chamado application-client.xml
52
14/02/13
JEE Deployment
Criao, composio e packaging de aplicaes
Mdulos podem ser agrupados em aplicaes num pacote chamado "EAR file" (Enterprise ARchive) O deployment descriptor de uma aplicao est num arquivo chamado application.xml Observe que os vrios deployment descriptors envolvidos permitem um melhor reuso dos mdulos
10 6
53
14/02/13
Formulrio
<form name="input" action="html_form_action.asp" method="get"> Username: <input type="text" name="user" /> <input type="submit" value="Submit" /> </form>
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
54
14/02/13
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
55
14/02/13
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
56
14/02/13
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
57
14/02/13
Formulrio
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="tratandoformulario" method="post"> Texto: <input type="text" name="texto"><br> Password: <input type="password" name="senha"><br> Radio: <input type="radio" name="radio" value="1">UM <input type="radio" name="radio" value="2">DOIS<br> Checkbox: <input type="checkbox" name="checkbox" value="10">UM<br> Select: <select name="select"> <option value="1">UM</option> <option value="2">DOIS</option> <option value="3">TRÊS</option> </select> <br> Textarea: <textarea name="textarea"></textarea><br> <input type="submit" value="enviar"> <input type="reset" value="limpar"> </form> </body> </html>
Gerenciamento de sesso
O protocolo HTTP um protocolo sem estado No possvel a princpio conhecer o estado do cliente anterior uma requisio
O gerenciamento de sesso prov uma maneira de identificar usurios atravs de vrias requisies HTTPs e recuperar suas informaes Dados do estado do cliente
Obtm sesso existente ou cria uma nova sesso dependendo do valor de o parmetro create
58
14/02/13
Gerenciamento de sesso
Principais mtodos
Mtodos para manipulao de objetos em sesso
void removeAttribute(java.lang.String name)
Retira objeto da sesso
java.util.Enumeration getAttributeNames()
Obtm os nomes de todos os objetos armazenados na sesso
Gerenciamento de sesso
Tempo de durao da sesso
As sesses em geral tm intervalo mximo de tempo que podem ficar inativas Padro = 1.800 segundos public int getMaxInactiveInterval() public void setMaxInactiveInterval(intinterval) - interval < 0 => garante que a sesso nunca ser interrompida.
59
14/02/13
Cookie
Os cookies podem armazenar informaes sobre o computador do usurio para recuperao, mais tarde, na mesma sesso de navegao ou em sesses de navegao futuras.
Por exemplo, os cookies podem ser utilizados em um aplicativo de compras para indicar as preferncias do cliente.
Os cookies so pequenos arquivos que so enviados por um servlet (ou outra tecnologia semelhante) como parte de uma resposta a um cliente.
Cookie
Cookie c = new Cookie( language, getISBN( language ) ); Criao de um cookie. c.setMaxAge( 120 ); Configurar a quantidade de segundos at que o cookie pode ser removido response.addCookie( c ); Adiciona o cookie resposta do cliente, devendo preceder getWriter cookies = request.getCookies(); Obtm cookies do cliente
60
14/02/13
121
Unidade
3
Interfaces
Web
com
JSP
3.1
JSP
12 2
HTML
<HTML> <HEAD> <TITLE>Ol</TITLE> <BODY> Ol,a hora <% out.println(Ol Mundo) %> <BR> </BODY> </HTML>
JAVA
61
14/02/13
12 3
JSP ---- texto html ------- texto html ------- texto html ---<% cdigo java %> ---- texto html ---<% cdigo java %> ---- texto html ------- texto html ----
Servlet out.print(texto html) out.print(texto html) out.print(texto html) -- cdigo java -out.print(texto html) -- cdigo java -out.print(texto html) out.print(texto html)
12 4
Sim
No Servidor reiniciado
No
No Pgina Modificada
Sim
No
Sim
No
No
No
Sim
No
Sim
No
Sim
No
Sim
No
Sim
No
Sim
No
Sim
No
Sim
Sim
Sim
Sim
Sim
Sim
62
14/02/13
12 5
Elementos JSP
As pginas JSP podem conter codificao Java e tags HTML. Para que a codificao Java possa ser escrita na pgina, devemos identificar, para que o tradutor JSP entenda o que realmente Java e o que HTML.
<HTML> <HEAD> <TITLE>Ol</TITLE> <BODY> Ol,a hora <% out.println(Ol Mundo!); %> <BR> </BODY> </HTML>
Profo. Anderson asantos@unicarioca.edu.br
12 6
Elementos JSP
Para isto, a especificao JSP define trs categorias de tags onde a codificao Java pode ser inserida.
Scripting, Directive e Action
63
14/02/13
12 7
Elementos JSP
Scripting: so elementos que incluem cdigos Java na pgina. Possuem trs subformas:
Declaraes: usado para declarar, ou opcionalmente definir, uma varivel ou um mtodo Java.
<%! declaration %> Ou <jsp:declaration> declaration </jsp.declaration> Exemplo: <%! Vector = new Vector(); %> ou <jsp.declaration> Vector = new Vector(); </jsp.declaration>
12 8
Elementos JSP
Scripting: so elementos que incluem cdigos Java na pgina. Possuem trs subformas:
Declaraes
Qualquer varivel declarada vlida por toda a pgina JSP, e portanto global para toda a pgina. O mesmo acontece para os mtodos.
64
14/02/13
12 9
Elementos JSP
Scripting: so elementos que incluem cdigos Java na pgina. Possuem trs subformas:
Scriptlets: contm cdigos Java.
<% scriptlet code %> Ou <jsp.scriptlet>code fragment</jsp.scriptlet> Exemplo: <% for (int i=0; i<10; i++){ %> Ol Mundo!!! <% } %>
13 0
Elementos JSP
Scripting: so elementos que incluem cdigos Java na pgina. Possuem trs subformas:
Scriptlets:
Servidor
<% for (int i=0; i<10; i++){ %> Ol Mundo!!! <% } %>
Profo. Anderson asantos@unicarioca.edu.br
Cliente
Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!! Ol Mundo!!!
65
14/02/13
13 1
Elementos JSP
Scripting: so elementos que incluem cdigos Java na pgina. Possuem trs subformas:
Expresses: so usadas para a sada de expresses em Java para o equipamento do cliente.
<%= expression %> Ou <jsp.expression>expression</jsp.expression> Exemplo: No servidor (pgina JSP): The number of Tokens in this statement is <%= countTokens(The number of Tokens in this statemente is n) %> Na mquina cliente: The number of Tokens in this statement is 9.
13 2
Elementos JSP
Directive Elements
Papel: prover informaes sobre a pgina ao container JSP Trs diretivas esto disponveis:
Page: serve para especificar atributos da pgina
66
14/02/13
13 3
Elementos JSP
Atributo
13 4
Elementos JSP
Include: serve para incluir outra pgina na atual. <%@ include attribute %> Ou <jsp:directive.include attribute /> O atributo o nome do arquivo a ser includo. Se o arquivo for um fragmento de um cdigo JSP, a especificao sugere que a extenso seja alterada para .jspf.
67
14/02/13
13 5
Elementos JSP
Action elements: so definidos pela especificao JSP como quelas que executam alguma operao na pgina. As padres so:
<jsp:useBean> <jsp:setProperty> <jsp:getProperty> <jsp:param> <jsp:include> <jsp:forward> <jsp:plugin> <jsp:params> <jsp:fallback> <jsp:attribute> <jsp:body> <jsp:invoke> <jsp:doBody>
13 6
Elementos JSP
Action elements:
<jsp:useBean>
Torna um JavaBean (classe Java que atende a alguns requisitos) disponvel para a pgina. Requisitos: no h argumentos para a construtora; e toda propriedade que o bean disponibiliza para o uso do cliente tem um mtodo que pode ser usado para especificar o valor e outro para retornar o valor. O padro : public type getSomeParameter() {return someParameter;} public boolean isSomeParameter() {return someBooleanParameter;} public void setSomeParameter() { //set the parameter } Atributos: id, scope, class, beanname e type.
68
14/02/13
13 7
Elementos JSP
Action elements:
<jsp:setProperty>: usado para configurar uma propriedade de um JavaBean.
Atributos: name, property, param e value.
13 8
Elementos JSP
Action elements:
<jsp:include>: incluso de pginas JSP.
<%@ include file=teste.jspf> ou ainda, <jsp.directive.include file=teste.jspf/> Nestes casos, as pginas so includas em tempo de traduo, e no precisam ser uma pgina JSP completa e vida. No caso da action include, ocorre na request, ou seja, o arquivo JSP para de ser processado e o request atual transmitido para a pgina include. O arquivo include passa a resposta para o response. Neste caso os arquivos include precisam ser arquivos JSP completos e vlidos, ou servlets.
69
14/02/13
13 9
Elementos JSP
Action elements:
<jsp:include>: incluso de pginas JSP.
Formato: <jsp:include page=URL flush=true|false> <jsp:param name=paramName value=paramValue/> </jsp:include> O atributo page obrigatrio. O atributo flush no obrigatrio e indica se o buffer de sada deve ser esvaziado antes do arquivo de include ser chamado. O valor padro false. Para passar parmetros para a pgina que ser includa, devese usar o elemento param, que opcional. Se este for usado, seus atributos name e value so obrigatrios.
14 0
Elementos JSP
Action elements:
Com o redirecionamento, o processamento da pgina atual interrompido e o request enviado para a outra pgina web. Esta outra pgina completa o response para a pgina chamadora. A execuo nunca retorna para a pgina chamadora. O elemento include pode acontecer em qualquer momento do processamento da pgina. No caso do forward no. S pode ocorrer antes que qualquer coisa seja escrita no browser do cliente. Formato: <jsp:forward page=URL > <jsp:param name=paramName value=paramValue/> </jsp:forward>
70
14/02/13
14 1
Elementos JSP
Comentrios:
Podem ser usados o padro de comentrio do HTML (<!NONO ONON -->) ou do JSP (<%-- NONO ONON -->). A diferena que no primeiro caso o comentrio aparece no cdigo fonte presente na mquina cliente e no segundo caso no.
Outros tags que no estiverem compreendidos nos descritos anteriormente iro compor o cdigo cliente no equipamento do cliente.
14 2
Objetos Implcitos
podem ser usados, sem a necessidade de serem declarados ou inicializados. So eles: request, response, out, session, config, exception e application. request: representa o request do protocolo HTTP.
normalmente utilizado para ler os parmetros do request. Parmetros enviados pela URL:
http://www.server.com/resource? name1=value1&name2=value2
71
14/02/13
14 3
Objetos Implcitos
request: Os parmetros podem ser lidos atravs dos seguintes mtodos: String request.getParameter(String name); Retorna o valor do parmetro name String[] request.getParameterValues(String name); Quando o parmetro name tem mais de um valor, este mtodo retorna todos Enumeration request.getParameterNames(); Retorna todos os nomes de parmetros utilizados Map getParameterMap(); Retorna todos os pares nomes e valores de parmetros
Profo. Anderson asantos@unicarioca.edu.br
14 4
Objetos Implcitos
response: representa o response do protocolo HTTP. Pode ser usado para configurar headers, cookies e redirecionar o browser do cliente Mtodos: public void addHeader(String name, String value) public void addCookie(Cookie cookie) public void sendRedirect(String location)
72
14/02/13
14 5
Objetos Implcitos
Exemplo: <%
Iterator categories = faqs.getAllCategories(); while(categories.hasNext()) { String category = (String)categories.next(); out.println(<p><a href=\ + replaceUnderscore(category) + \> + category + </a></p>); } %>
O objeto out uma instncia de javax.jsp.JspWriter. Um dos propsitos do JSP separar o HTML para o cdigo Java.
Profo. Anderson asantos@unicarioca.edu.br
14 6
Objetos Implcitos
session: o protocolo HTTP stateless, ou seja, a cada request/ response no h nenhuma referncia ao request/response anterior.
Entretanto, em aplicaes web necessrio que esta memria seja preservada. Para isto, interessante que algumas informaes permaneam inalteradas (acessveis) entre requests/responses diferentes, simulando uma conversa entre o cliente e a aplicao servidora. Este conceito alcanado atravs de sesses (session). Uma session se refere a conversa inteira entre o cliente e o servidor. Os componentes JSP participam, automaticamente, de uma session, a menos que a pgina use a diretiva page para configurar o atributo session como false. Somente objetos podem ser armazenados em uma session. Tipos primitivos Java no o podem. Para armazenar tipos primitivos, deve-se usar as classes Integer ou Boolean.
73
14/02/13
14 7
Objetos Implcitos
session: Os mtodos para armazenar e recuperar as informaes so: Object setAttribute(String name, Object value); Object getAttribute(String name); Enumeration getAttributeNames(); void removeAttribute(String name); Geralmente no necessrio escrever um cdigo especial para gerenciar uma session.
14 8
Objetos Implcitos
config: usado para retornar parmetros especficos da inicializao. Estes parmetros so configurados no descritor de instalao (deployment descriptor), mas so especficos para cada pgina.
74
14/02/13
14 9
Objetos Implcitos
exception: est disponvel apenas dentro das pginas de erro. uma referncia para java.lang.Throwable que provoca uma chamada ao servidor para chamar a pgina de erro.
15 0
Objetos Implcitos
application: representa o ambiente da aplicao web. Ser usado para retornar os parmetros de configurao da aplicao. O valor do parmetro pode ser acessado usando o seguinte mtodo: application.getInitParameter(String name); Este objeto tem escopo da aplicao.
75
14/02/13
15 1
Diretiva taglib
So tags personalizadas ou customizadas; Estende a classe SimpleTagSupport, sobrecarregando os mtodos que so necessrios para prover o comportamento necessrio;
doTag()
Passos
1. Criar a(s) classe(s) que implementa(m) a tag; 2. Criar o Descritor da biblioteca tag (TLD);
um documento XML-like que contm informaes sobre a tag.
3. Colocar a(s) nova(s) classe(s) na pasta /WEB-INF/classes ou em um arquivo .jar na pasta / WEB_INF/lib; 4. Alterar o deployment descriptor para mapear a nova tag; 5. A partir da pgina JSP, importar (diretiva taglib) a classe.
Java Beans
So classes que seguem algumas convenes:
Uma boa prtica acrescentar o termo bean ao nome da classe que ser um java bean; Conter um construtor sem argumentos, mesmo que no faa nada; public Bean() { }!
!
76
14/02/13
Java Beans
So classes que seguem algumas convenes:
!
JavaServer Pages
public class User { private String id; private String surname; public void setId(String id) {this.id = id; } public String getId() { return id; } public void setSurname(String surname) {this.surname = surname; } public String getSurname() {return surname; } } <jsp:useBean id=userA class=User /> <jsp:setProperty name=userA property=surname value=Smith /> <jsp:setProperty name=userA property=id value=<%= validateId(86753) %> /> The user with id <jsp:getProperty name=userA property=id /> has a surname of <jsp:getProperty name=userA property=surname />
77
14/02/13
Java Beans
So classes que seguem algumas convenes: Caso o atributo seja um conjunto de valores (por exemplo array), faa mtodos para capturar todos os elementos ou apenas um deles
private String[] telefone; ! public String[] getTelefone() ! { ! !return telefone; ! } ! public String getTelefone(int index) ! { ! !return telefone[index]; ! }!
Java Beans
So classes que seguem algumas convenes:
Se o atributo for booleano, substituir o get por is. private boolean enabled;! public boolean isEnabled() ! { ! !return enabled; ! }!
78
14/02/13
15 7
Podem-se obter as conexes de um pool de conexes atravs de javax.sql.DataSource via JNDI (JEE)
DataSource ds = (DataSource)ctx.lookup("jbdc/Banco"); Connection con = ds.getConnection();
79
14/02/13
Para tornar um servlet capaz de acessar bancos de dados, basta incluir cdigo JDBC dentro dele
API
%>
Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "aluno", "aluno"); statement = connection.createStatement(); rs = statement.executeQuery("SELECT * FROM tabela1"); while (rs.next()) { out.println(rs.getString("texto")+"<br>"); out.println("-"); }
80
14/02/13
%>
CONEXO
Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "aluno", "aluno"); statement = connection.createStatement(); rs = statement.executeQuery("SELECT * FROM tabela1"); while (rs.next()) { out.println(rs.getString("texto")+"<br>"); out.println("-"); }
%>
Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "aluno", "aluno"); statement = connection.createStatement(); rs = statement.executeQuery("SELECT * FROM tabela1"); while (rs.next()) { out.println(rs.getString("texto")+"<br>"); out.println("-"); }
CONSULTA
81
14/02/13
16 3
82
14/02/13
Exemplo de DAO
O DAO um objeto que isola o servlet da camada de dados, deixando-o vontade para mudar a implementao Faa-o sempre implementar uma interface Java
Descrio
um paradigma de desenvolvimento e design que separa a aplicao em trs partes distintas:
representa os dados do programa responsvel por apresentar os dados resultantes do modelo responde as ordens do usurio, atuando sobre os dados.
83
14/02/13
84
14/02/13
Model 1 page-centric
1 4 2
A pgina JSP responsvel por processar as requisies do usurio e respond-las;
BROWSER BROWSER
Container Servlet
Dados
Os dados so acessados pelo Java bean e por isso h uma separao da camada de apresentao;
Container Servlet
Dados
Este modelo pode ser usado para aplicaes mais simples, porm no recomendado para aplicaes mais complexas;
85
14/02/13
Model 2 servlet-centric
1
Abordagem hbrida de JSP e Servlet, onde o JSP usado para gerar a camada de apresentao e o Servlet para processar as tarefas; Controller: Servlet
Dados
BROWSER
5
86