html - DEINF/UFMA

Propaganda
!
"
#
$
% &
)
*'
+
(
(
, )
.
'
$
+
(
(
+
*'
% /
0
12
-
12
)
)
12
'
)
)
)
(
+3
%
)
+
(4
%
*'
(
2
( 5)
'
% /
% '
)1
%
+
%
%
8)
: 4
;
6%
7
()
*
"(
%
12
1%
%
9
1
4
% %
+
8)
*'
3
" (
)
%
+
*'
%
0
'
(
'
4
5
%
+
5
+
%
4
%
%
'
)
%
4
+
, )1
+
<% '
( 5
doPost() ) doGet() % )
+
<% ' %
%
+
response4request4out4session
)
*%
%
4
"
+
% <% '
8) (
)
)
=)
8)
<% '
>
5
+
5 4
)
4
%
+
) % 4
)
*
) %
(
'
)1
%
5 ) %
%
%
" ?%
12
)
5
!
"
"
#
$
%% (
#
+ !
2
,.
3
% $
$ &
&
'
)*
*$
&
/0
1+
"
3
"
$/45 6, 7 "
2 $
8%
9
&
)
'
!
"
16, 7
"
1$/45
"
"
*'
%) %
0
)
%
"
1 5%
( @
&
1 5
)
8B
%
%
%
( % +
)
+ 4
%
=
%
') %
5
% % %
A
>
4
+
8) 1
8)
'
5
%
*'
7
1. O cliente requisita
2. O servidor web
uma página
repassa-a ao contêiner
Navegador do
Servidor Web
cliente
7. A resposta é
retornada ao cliente
Contêiner JSP
em formato HTML
6. O servlet gera
a resposta
Servlet
5. O contêiner
executa o servlet
3. A página JSP é transformada
em um Servlet, se o servlet
não existir ou for mais antigo
Tradutor de
página JSP em
Servlet
(Jasper)
4. O servlet gerado e compilado
é repassado ao conteiner
•Fica totalmente transparente para o desenvolvedor de aplicações e para
o usuário que requisitou a página.
•Resulta em velocidade de execução (para acessos repetidos) superior a
outras tecnologias similares (ASP, PHP)
8
!
"
# (4
)
"
+ 45 )
1
%)
%
)
004 (
1
(
+
)
%
%
,
" ?%
%
+ ) %
,
+4
% 8)
+
%
)1
%
*'
9
!
"
C )
"
1
(
)
)
%
1
'
:&D E
+ @JavaBeansA
%
+%
"
1
'
)
( @
%
# %
)
*'
)
%
6
%
@@&
& '
+
%
(4
+
<
"
A
,
%%
)
A
%
%
' %
%
%
+ +%
'
%+
'
$
%
%
4
)
4 5
)
)
% %)
'
1
%
%
1
10
!
"
C )
1
"
@
) 1 A
% '
%
)
%
% )
G
%
,
+% %
5 4
0,
%
4%
)
" (E&4
)
F (E&
2 4
1
)
)
%
E ') ' @0EA
)
)
" 0E
)
%
'
'
%
1
$+
+
%
8)
1
)
(
%
4
%
(E&
11
"
%
D )%
,
%
% )
% )
)
( 45
8) + :&D E
)
+%
8)
)
(
G
%
4
*'
*
%
)
+
0,
<html><head><title>Primeiro Exemplo</title></head>
<body>
<strong>Seu número da sorte é:</strong>
<%= (int)(java.lang.Math.random()*1000) %>
</body> </html>
12
#
$
0,
*
<%-- comentário --%>
2
<%= Math.sqrt(9) %>
<% código java %>
(
<%! int contador= 0 %>
12
<%@ atributo = valor %>
+
"12
<jsp:ação />
& '
<prefixo:elemento />
#
@
& %
+1
'
%
7
+%
A
13
% $
FONTE: http://www.argonavis.com.br/cursos/java/j550/j550_9.pdf (slide 7)
#
$
#
*
)
*'
(
%
%)
*
(
+ %
6% %
*
>
:&D E <!-– comentário -->
)
%
*'
( <%-- comentário --%>
*'
+ %
15
&
(
<% '
+
%
*'
:&D E %
')
<%= Expressão %>
H)
%
*'
)
(
5
% 5
%
%
'
)1
*'
5 , ) %
)
% )
0,
<%= (int)(Mah.random()*1000) %>
%
%
,
2
%
)
5
%
16
& '
<%@ page import="java.util.Date,java.text.DateFormat" %>
<html> <body>
<h1>Exemplo Scriptlet<hr></h1>
<P>Hoje é dia
<%= DateFormat.getDateInstance().format(new Date ()) %>
<P>
Também temos uma versão
<a href="servlet/Hello">Servelt</a>
Observe que não é
desta mesma página.
<hr>
utilizado ; para
</body>
finalizar a expressão
</html>
17
"
#
)
*'
)
$
%
,
% )
(
#
$
"
+
)
8)
1
*'
C 8) 1
(
18
(
"
#
? $
1
Escopo de aplicação
application
H) 8)
+
) (
%
)
application %
9
%
javax.servlet.ServletContext
Escopo de solicitação (requisição)
request
Representa a solicitação do cliente. O objeto é uma instância
de uma classe que implementa HttpServletRequest
(pacote javax.servlet.http)
Existem até o fim da solicitação
19
(
#
?
"
$
1
Escopo de página
config
javax.servlet.ServletConfig representa as opções de
configuração JSP que podem ser especificadas em web.xml
response
Representa a resposta para o cliente. Normalmente é uma
instância de javax.servlet.HttpServletResponse
page
Esse objeto java.lang.Object representa a referência
this à instância JSP atual
Esse objeto javax.servlet.jsp.JspWriter escreve
out
texto como parte da resposta a uma solicitação. É utilizado
implicitamente com expressões JSP e ações que inserem
conteúdo de um string em uma resposta
20
(
#
"
?
$
1
Escopo de página (continuação)
pageContext
Cada página tem suas próprias instâncias dos objetos implícitos
de escopo de página
javax.servlet.jsp.PageContext fornece acesso aos
objetos implícitos discutidos nessa tabela
exception
java.lang.Throwable representa a exceção que é passada
à página de erro de JSP. Disponível somente em uma página
de erro JSP
Escopo de sessão
session
Existem para toda a sessão de navegação do usuário
javax.servlet.http.HttpSession representa as
informações de sessão de cliente se tal sessão foi criada. Esse
objeto está disponível somente nas páginas que participam de
uma sessão
<%@ page language="java" %>
<html>
<head><title>Recebe dados de formulário</title></head>
<body>
Informações enviadas de:<%= request.getRemoteHost() %>
<br> Login: <%= request.getParameter("login") %>
<br> Senha: <%= request.getParameter("senha") %>
As páginas JSP não fazem
distinção em relação ao método de
envio (GET ou POST
</body>
</html>
!
"
%
#
(%
#$
&
'
%
)
22
#
%
IJ
& %
<% ' %
%
JK
<% '
%
%
5 %
)
5
+ @A % ( +
23
'
escolhaCor.html
<html> <head> <title>Selecione uma Cor</title> </head>
<body>
<form name="form1" method="post" action="escolheCor.jsp">
<p> <strong>Escolha um cor:</strong>
<select name="cor">
<option value="GREEN"> verde
</option>
<option value="BLUE“ > azul
</option>
<option value="RED“ > vermelho </option>
</select>
</p>
</form>
</body> </html>
24
'
)
*
escolheCor.jsp
<%@ page language="java" %>
<html> <head> <title>Escolha de cores</title>
<%
String cor = request.getParameter("cor");
if(cor == null) {
%>
</head>
Scriptlets tem acesso as mesmas
<body bgcolor="#FFFFFF">
variáveis de pré-definidas que as
<%
expressões
} else {
%>
<body bgcolor="<%= cor %>">
<%
} /* fim do else */
%>
OBS: Colocar aqui um comentário de JSP
</body> </html>
(<%-- e --%>) ou (<!-- e -->) é um erro de
sintaxe
25
(
&
" %
12
%
)
*
@%
%
)
4
8)
%
<%!
%> A
5 %
5 %
(
%) %
" %
12
4 %
)
1
)
%
,
+
)
% +
+$') 4 ,
<%! int contador = 0; %>
26
(
&
)
*
<%@ page language="java" %>
<html><head><title>Contador</title></head>
Como são atributos podem ter
<body bgcolor="#FFFFFF">
modificadores de acesso
<%! int contador = 0; %>
<b> Numero de acessos: <%= ++contador %> </b>
</body>
Cada vez que for acessado o seu
</html>
valor será incrementado
Se este fragmento de código for alterado por: <% int contador = 0 %>. Quando
recarregamos a página o contador não será mais incrementado, mantendo sempre o
seu valor em 1. Isto ocorre pois todo código inserido em um scriplet é colocado no
método service() da Servlet.
27
(
)
" %
+
%
% *'
( 8)
% )
%)1
&
*
% %
%
)
+
5 4?
?
L
$
% +
( ')
'
(
8)
*'
')
')
<%@ diretiva (atributo =“valor”)* %>
Indica zero ou
mais atributo
28
(
)
%
page
include
taglib %
%
*
+
)
%
)
)
; *'
8) +
%
*'
' ) %
)
29
page
(
9
%
%
) %+
48)
) )
%
&
)
+*
5
%
%
)
%
IJ
+
MN +
MN
' MN
)
+
%
48)
%
)
*'
+*
%
% )
'
#
page
+
+ page
O4 +
ON
N
N JK
%
4 %8)
)
30
(
page )+
*
info="Página Exemplo"
default: texto vazio
language="java"
default: java
contentType="text/html;
charset=ISO-8859-1"
(default)
extends=“MyHttpJspBase"
default: nenhum
import="java.io.*, java.net.*"
default: java.lang, ...
session="true"
(default)
buffer="8kb"
default
autoFlush="true"
(default)
isThreadSafe="true"
(default)
errorPage="/erros/404.jsp"
default: nenhum
31
page
(
"
)
language
0
%
@
)+
%
"
)
A
45
') '
*'
+
)
%
(
<%@ page language =“Java“ %>
contentType
?%
%
6% D ?D 0 %
1 % 8)
*'
#
%
5
“text/html; charset=ISO-8859-1”
0,
;
+
Envia usando caracter
chines simplificado
<%@ page contentType
=“text/html;charset=GB2312“ %>
32
page
(
"
)
extends
0
% 8)
%) %
>
,
+
)
"
+
1
% +
%
*
)
( %
> &
(
% %
%
)
1
*'
8)
%
)
5
)
extends
)% %
%%
HttpJspBase
33
page
(
"
)
-
import
%
8)
*'
#+
%
(
)
%
)
5 “java.lang.*,
javax.servlet.*, javax.servlet.jsp.*,
javax.servlet.http.*”
%
+ 4
)
%
% )
+4
*
+$')
<%@ page import = “java.net.*, java.io.*“ %>
34
! (%
:! #
*%
:
package empresa;
public class Usuario {
private String login;
private String senha;
private static int codigoGeral;
private int codigo;
+
;
:3-6< = :
:
public Usuario(String login, String senha) {
this.login = login;
this.senha = senha;
}
public String getLogin() { return login; }
public String getSenha() { return senha; }
public int getCodigo() { return codigo; }
public void setLogin(String login) { this.login =login; }
public void setSenha(String senha) { this.senha = senha;}
}
35
importa todas as classe do
pacote empresa
<%@ page language="java" %>
<%@ page import = "empresa.*" %>
<html> <head> <title>Recebe dados</title></head>
<body>
Informações enviadas de:<%= request.getRemoteHost()%>
Login: <%= request.getParameter("login") %>
Senha: <%= request.getParameter("senha") %>
Usando EL
<%
Login:{usuario.login}
Senha:{usuario.senha}
Usuario usuario = new Usuario(
request.getParameter("login"),
request.getParameter("senha"));
out.println("<br> Código do usuário"
+ usuario.getCodigo());
%>
</body></html>
O código do usuário será mostrado na
página. Cada vez que a página for
recarregada um novo código será 36
gerado
page
(
"
session
)
?%
H)
*'
%
*'
$
)
#+
1
% )
session
8)
*
4
$+
*'
%
8)
%
% )
)
)
5 PtrueQ
)
%
<%@ page session = “false” %>
37
page
(
"
)
buffer
0
%
+%
H)
0,
)
%
*'
%
'
8)
#+
)
%
45
%
)
4
4
+ %
% RS3
A saída é imediatamente enviada ao cliente
<%@ page buffer = “none“ %>
Altera o tamanho do buffer para 16Kb
<%@ page buffer = “16Kb“ %>
38
page
(
"
)
autoFlush
0
)
*
') %
)
%
$% %
8)
%
)
true4 +
%
*'
% +
+
)
4
%
%
false4
%
(
)
*)
, 1
)
%
*'
)
*
%
<%@ page autoFlush = “false“ %>
39
page
(
"
)
isThreadSafe
0
*'
8) 12
#+
+*
)
%
)
%
%
1
% *
8) 12
1
%
false4
% %
% ') %
')
)
% + 4
5
%
5 true
<%@ page isThreadSafe = “false“ %>
O servlet gerado irá implementar a interface
javax.servlet.SingleThreadModel
40
page
(
"
"
)
errorPage
0
) )*
*'
)
)
*'
')
*'
*'
3
$
%
5)
)
%
%
%
%
8)
, 12 4
exception
%
%
%
*'
L
*
1%
)
5
'
T
*
isErrorPage
0
+
+ 8)
, 1
' +
'*+
8) +
) )*
%
'
41
',
testaPaginaErro.jsp
<%@ page language="java"
errorPage="exemploPaginaDeErro.jsp" %>
<html> <head>
#
<title>Dados de Formulário</title>
* *
</head>
>?
<body bgcolor="#FFFFFF">
<%
String login = request.getParameter("login");
int idade = Integer.parseInt(
request.getParameter("idade"));
%>
,
%'
Login: <%= login %> <br>
'
Idade: <%= idade %>
% .
</body>
</html>
42
'
<%@ page language="java" isErrorPage="true" %>
<html>
/
(%
<head>
+! 0
<title>Página de Erro</title>
true
</head>
<body bgcolor="#FFFFFF">
exception
Ocorreu um erro no preenchimento do formulário<br>
O problema detectado foi o seguinte: <P>
<%= exception %>
</body>
</html>
1 %
2
& '
43
include )
(
+ include
"%
)
)
6% %
+ 4
D
$
%
%)1
'
)
%
)$%
*
)
(
6
+
?%
% 8)
D
6%
) 4E '
)
-CE %
%
"+
)
*'
)
)%
%
8BL
= '
F file F 8)
)$%
<%@ include file = "banner.html" %>
44
(
0
)
5
%
8)
*'
$
) %
%
*
<% '
)
)
(
<tr>
<td> <%@ include file = "toc.html" %></td>
<td> <%@ include file ="clock2.jsp"%></td>
</tr>
Confira o exemplo: includeDirective.jsp
45
-&
G
&
%
+ +%
%
)
#
L
%
+*
)
*'
%
(
(
12
%
1
(
%
1
%
<jsp:ação>
%
5
>
%
8)
)
%
%
1 4
+
1
</jsp:ação>4
%
%
)
, %
% UD E <jsp:ação />
46
-
<jsp:include> )
.
*
<jsp:include> Inclui dinamicamente outro recurso em uma JSP
Exemplo:
<td><%-- inclui toc.html nesta página --%>
<jsp:include page = "toc.html" flush = "true" />
</td>
<td><%-- inclui clock2.jsp nesta página --%>
<jsp:include page = "clock2.jsp" flush = "true" />
</td>
Confira o exemplo: include.jsp
A diferença entre a diretiva include e a ação <jsp:include>
só é notável se o conteúdo incluído se alterar
47
-&
<jsp:forward>
<jsp:forward>
Encaminha o processamento da solicitação para
outra Servlet/JSP ou página estática. Termina a
execução da JSP atual
<jsp:param>
Utilizada com as ações include, forward e
plugin para especificar pares de informações de
nome/valor adicionais a serem utilizados por
essas ações
48
-&
0,
&
%
1
7 %
'
+
%
%
<jsp:forward page = "forward2.jsp">
<jsp:param name = "date"
value = “<%= new java.util.Date() %>"/>
</jsp:forward>
% (%
8
8
%
0
%
0
'
%
'(
(
%
(
%
(
%
'
'
'
'
forward2.jsp
forward2.jsp
*
1
*
1
4
4 5
5
% (%
%
% 3
3
(
%
(%
'
'
!
6
#
7
8
'
!
6
#
7
8%
%9
9
' <jsp:forward>
<jsp:forward>:
:
%
(
%
'
%
(
%
'
%
%
3
4
3
4 5
5
49
-&
<jsp:useBean>
&
Especifica se a JSP utiliza uma instância JavaBean. A
Ação especifica o escopo do bean e lhe atribui um ID
que os componentes de script podem utilizar para
manipulá-lo
<jsp:setProperty> Configura uma propriedade especificada. Um recurso
especial dessa ação é a correspondência automática de
parâmetros da solicitação para as propriedades bean do
mesmo nome
<jsp:getProperty> Obtém uma propriedade na instância JavaBean
especificada e converte o resultado em um string para
sair na resposta
50
+
%+
?
%)
% %
%
%
%
+
)
1
8)
+5 %
%
)
%
1
5
Apresentação
)
1
%
<% '
Implementação
Código de
Elementos de Javabeans
formatação HTML geração de
conteúdo dinâmico
51
0
'
(
1
8)
)
1
(
<% ' % <'
%
%
*'
(4
1
'
1
% % %
8)
1 4% , %
+ )
1 % % %
0
1
<'
*'
(
) )*
%
%
+3
52
0
%
)
)
% %
%
%
%
4
%
% % %
%
G+
+*
)
%
4 5
%
1
%
)
)
%
)
%
)
1
% %
53
+
')
')
1
%
%
(
4
3
%
% %
"
% %
% 3
4
%
%
)
%
L
+ 12
*+
) %
%
48)
%
)*
)
8)
5
%
)
54
% %
1
% )
)
*'
)*
%
( @
@
3
%- )
A
3
A
- )
<html><head><title>Cadastro de Usuario</title></head>
<body>
<form name="form1" method="post" action="recebeBean.jsp">
Nome: <input name="login" type="text" id="login">
Senha: <input name="senha" type="text" id="senha">
<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>
55
'( !
package empresa;
$
%
$ (
(
%%
%
%
%
%
%
;
#
#
$
8
;8
8
#
#
$
8
'
$
:
' #
#
$
:
9
9
public class Usuario {
private String login;
36
<< =
36
=1
1
private String senha;
&
'
&
'
private static int codigoGeral;
private int codigo;
public Usuario () {codigo = codigoGeral++; }
public
public
public
public
public
+ +!
!
String getLogin()
{ return login;
}
void setLogin(String login){this.login = login;}
String getSenha()
{ return senha;
}
void setSenha(String senha){this.senha = senha;}
int getCodigo()
{ return codigo;
}
}
56
)
/0
'( !
*
$
<%@ page language="java" %>
<%@ page import="empresa.Usuario" %>
<html>
<head> <title>Recebe dados</title></head>
<body>
#
#
<%
%
%
#
Usuario usuario = new Usuario();
#%
% %
%
@
usuario.setLogin(request.getParameter("login"));
@
usuario.setSenha(request.getParameter("senha"));
%>
<BR> Login : <%= usuario.getLogin() %>
<BR> Senha : <%= usuario.getSenha() %>
<BR> Código: <%= usuario.getCodigo()%>
</body>
</html>
A
A
%
%%
%
%
57
% !
!#
#
'( !
*
)
10
> V( )1
%
') '
Usuario
%
+
$
'
%
)
5 %
6%
+
'
+
%
)1
+
+3
+
%
)
,
58
'( !
*2#
)
10
"
$
)1
Usuario usuario = new Usuario();
%
<jsp:useBean id=“usuario“ class=“Usuario”/>
( 8) 5
% )
)
')
8)
%
)
%
'
%
<jsp:useBean id
=“usuario“
class =“Usuario”
type = Object />
59
)
10
'( !
*2#
$
•A instrução:
•<jsp:useBean id=“usuario" class=“Usuario"
scope="request" />
Corresponde a (em mais detalhes):
<% Object obj = request.getAttribute("usuario");
Usuario usuario = null;
if (obj == null) {
usuario = new Usuario();
request.setAttribute(“usuario", usuario);
} else {
usuario = (Usuario)obj;
}
%>
60
'( !
*2#
)
10
"
$
)1
<%= usuario.getLogin() %>
%
A ação getProperty
produz, de fato, um
resultado na página de
resposta ao usuário
<jsp:getProperty name=“usuario”
property = “login”/>
"
)1
<%= usuario.setLogin(request.getParameter("login"))%>
%
<jsp:setProperty name =“usuario”
property = “login”
não gera qualquer
conteúdo na página, apenas
altera o valor da
propriedade do objeto Java
value=‘<%= request.getParameter("login") %>’ />
61
)
10
'( !
*
$
<%@ page language="java" %>
<html>
<head> <title>Recebe Dados - Vesão 2</title> </head>
<body>
<jsp:useBean id="usuario" class ="empresa.Usuario" />
<jsp:setProperty name="usuario" property="login" param = "login" />
<jsp:setProperty name="usuario" property="senha" param = "senha"/>
Login : <jsp:getProperty name="usuario" property = "login" />
Senha : <jsp:getProperty name="usuario" property = "senha" />
</body>
</html>
.
.
%
%
.
.
#
#
%
%&
&
+
+
#
#
?
?
>
?
>
?
@
@
?
?8
8
+
+%
%
%
#
%
#
62
'( !
*
)
30
%
')
,
$
/
%
%
% % %
) # %
%
)12
<jsp:setProperty name="usuario" property="login" param = "login" />
<jsp:setProperty name="usuario" property="senha" param = "senha"/>
%
)
)$%
<jsp:setProperty name = "usuario" property ="*" />
0
)1
%
3
/
)
8)
+
%
%
63
</jsp:useBean>
id
="nomeDoObjeto“
class ="pacote.NomeDaClasse“
scope ="page|session|request|application">
</jsp:useBean>
#
) P
% +% %
Q5
+ 3
%
0
Page 9 +
%
# )
)
*'
% ) ?%
8)
% % 8) 8)
% *'
%
PageContext
% +% 5
5 8)
%
#
*'
)
%
5
,
+
%
64
0
%
8)
"5
%
%
$+ %
% *'
8)
% 5
%
ServletRequest 9
+* %
8)
,
ServletRequest4
% %
)
%
5 %
request.getAttribute(“nome”);
0
%
"5
%
%
'
%
%
$+ %
*'
% )
%
$+ %
% *'
5
HttpSession4
%
%
% ) )*
% )
%
%)1
%
*
*'
65
0
%
#
1
5 %
% %
8) 8)
#
$+ %
%
*'
)
#
ServletContext4
%
.
%
+
% +% 5
%
1
)
%
%
1
.
+5 %
')
5 %
application.getServletContext().getAttribute(“nome”);
66
Download