Você está na página 1de 42

Curso de Java

Gerao de Pginas WEB


atravs de JSP

Todos os direitos reservados Klais

JSP e Servlets

Servlets constituem um mecanismo conveniente


para a gerao de pginas HTML dinmicas e seu
tratamento no servidor.
Em muitos casos, no entanto, o seu uso acaba sendo
demasiado trabalhoso
As pginas devem aderir a um padro de apresentao
comum.
Componentes visuais especficos podem ser necessrios.
Uso de ferramentas especficas para a gerao das
pginas.
Todos os direitos reservados Klais

JSP e Servlets

JSP Java Server Pages constituem um mecanismo


orientado pgina HTML sendo gerado, ao invs de
ser orientado a uma classe Java que gera a pgina.
JSP so baseados em Servlets de forma que todos os
recursos disponibilizados aos Servlets pelo ambiente
Java podem ser utilizados.
O servidor de aplicaes Java responsvel pela traduo do
cdigo JSP para o Servlet correspondente e tambm pela
compilao do Servlet. Esse processo ocorre quando a pgina
JSP acessada pela primeira vez.

Todos os direitos reservados Klais

JSP primeiro exemplo

Uma pgina JSP uma pgina HTML onde se insere cdigo Java
dentro de comentrios especiais.
O cdigo Java executado no servidor quando este processa a
requisio da pgina.
<HTML>
<BODY>
Data de hoje: <%= new java.util.Date() %>
</BODY>
</HTML>

Neste exemplo, o cdigo Java uma expresso, delimitada por


<%= e %>. Neste caso, a expresso, depois de calculada
convertida num String que substitui todo o comentrio.
Todos os direitos reservados Klais

JSP Scriptlets

Alm de expresses inseridas no texto da pgina,


possvel inserir trechos de cdigo Java que so
executados no servidor ao se processar a pgina.
Esses trechos de cdigo so chamados scriptlets e
delimitados por <% e %>.
A execuo de um scriptlet ocorre durante a
apresentao do texto correspondente pgina
HTML. Os scriptlets so portanto executados na
ordem em que aparecem na pgina.

Todos os direitos reservados Klais

JSP um exemplo de Scriptlet

Neste exemplo, a varivel dataHoje definida no


scriptlet e utilizada numa expresso Java no corpo
da pgina.
<HTML>
<BODY>
<%
// cdigo do scriptlet
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Data de hoje: <%= dataHoje %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP outro exemplo de Scriptlet

Um scriptlet pode gerar o texto da pgina HTML.


Para isso, usa-se a varivel pr-definida out da classe
Writer.
<HTML>
<BODY>
<% // cdigo do scriptlet
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Data de hoje: <% out.print(dataHoje); %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP variveis pr-definidas


A pgina JSP tem diversas variveis prdefinidas que podem ser utilizadas nos
scriptlets. Neste exemplo usa-se a varivel
request.
<HTML>
<BODY>
<%
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Endereo do servidor:
<% out.print(request.getRemoteHost()); %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP intercalando HTML e Scriptlet


Numa pgina JSP, os Scriptlets podem ser
intercalados ao cdigo HTML.
<TABLE BORDER=2>
<%
for ( int i = 0; i < n; i++ ) {
%>
<TR>
<TD>Valor:</TD> <TD> <%= i+1%> </TD>
</TR>
<%
}
%>
</TABLE>

Todos os direitos reservados Klais

JSP uso de diretivas


Pginas JSP podem fazer uso de diretivas. O
exemplo abaixo usa a diretiva import.
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%
System.out.println( "Evaluating date now" );
Date date = new Date();
%>
Data de hoje: <%= date %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP diretiva include


A diretiva include permite incluir o
contedo de uma pgina JSP em outra.
<HTML>
<BODY>
Incluindo exemplo1.jsp ...
<BR> <%@ include file=exemplo1.jsp" %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP declaraes
Uma pgina JSP pode conter declaraes (mtodos,
constantes, variveis) delimitadas por <%! e %> .
Declaraes so diferentes de scriptlets porque no
contm cdigo Java para ser executado.
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%!
Date theDate = new Date();
Date getDate(){
System.out.println( executando getDate()" );
return theDate;
}
%>
Data de hoje: <%= getDate() %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP Uso da sesso de usurio

Servlets e JSPs mantm o controle da sesso de usurio atravs


do objeto session.
O objeto session associar valores a nomes, e essa associao
pode ser compartilhada entre as pginas usadas durante uma
sesso.
Em JSP a sesso accessvel atravs da varivel session, pr
definida.
Num servlet, a sesso accessvel atravs da chamada a
request.getSession();

A associao de um nome a um valor feita atravs da chamada


a session.setAttribute(nome,valor);
O acesso ao valor associado a um nome feito atravs da
chamada a session.getAttribute(valor);
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (1): Na pgina abaixo o usurio
preenche um formulrio que ao ser submetido,
encaminhado a uma pgina JSP (JSP_9b.jsp).

<html>
<head>
<title>Exemplo JSP 9a (Uso da sesso)</title>
</head>
<BODY>
<FORM METHOD=POST ACTION="JSP_9b.jsp">
Nome: <INPUT TYPE=TEXT NAME=username SIZE=20>
<P><INPUT TYPE=SUBMIT VALUE= "Ok">
</FORM>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (2): Na pgina JSP (JSP_9b.jsp) abaixo, o
dado username da requisio passado sesso,
associado ao nome theName.
<%
String name = request.getParameter( "username" );
session.setAttribute( "theName", name );
%>
<html>
<head>
<title>Exemplo JSP_9b (Uso da sesso)</title>
</head>
<body>
<A HREF="JSP_9c.jsp">continue, <%= name %></A>
</body>
</html>

Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (3): Na pgina JSP (JSP_9c.jsp) abaixo, o
dado da sesso usado numa expresso no corpo da
pgina.

<html>
<head>
<title>Insert title here</title>
</head>
<body>
Parabns, <%= session.getAttribute( "theName" ) %>
</body>
</html>

Todos os direitos reservados Klais

JSP tratamento de formulrios

Os dados preenchidos pelo usurio num formulrio (JSP, Servlet


ou HTML puro) devem ser disponibilizados aplicao.
Para facilitar a transferncia de dados entre as pginas e as
partes da aplicao, o mecanismo JSP permite que se use um
objeto especfico para manter os dados do formulrio. Esse tipo
de classe conhecido como bean e deve obedecer ao seguinte
padro:
Para cada atributo attr, a classe deve
Exportar um mtodo getAttr() que devolve o valor do
atributo.
Exportar um mtodo setAttr() que define/altera o valor
do atributo.
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (1): bean para manter os dados
associados a um Aluno.
public class Aluno {
String matricula;
String nome;
String rg;
public void setMatricula(String m) { matricula = m; }
public void setNome(String n)
{ nome = n;
}
public void setRg(String r)
{ rg = r;
}
public String getMatricula() { return matricula; }
public String getNome()
{ return nome;
}
public String getRg()
{ return rg;
}
}
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (2): No formulrio, os campos de entrada
tm os mesmos nomes que os atributos do bean:
matricula, nome e rg.
<html>
<head>
<title>Exemplo 10 (Uso de beans)</title>
</head>
<BODY>
<FORM METHOD=POST ACTION="JSP_10b.jsp">
<h3>Dados do aluno</h3>
Matricula: <INPUT TYPE=TEXT NAME=matricula SIZE=20><BR>
Nome: <INPUT TYPE=TEXT NAME=nome SIZE=30><BR>
RG: <INPUT TYPE=TEXT NAME=rg SIZE=4>
<P><INPUT TYPE=SUBMIT VALUE="OK">
</FORM>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (3):
A diretiva useBean define a classe a ser usada como
bean, o nome do objeto e seu escopo (sesso ou
requisio).
A diretiva setProperty indica quais atributos devem ser
associados aos dados da resposta (* indica todos).
<jsp:useBean id="aluno" class="exJSP.Aluno" scope="session"/>
<jsp:setProperty name="aluno" property="*"/> <html>
<head>
<title>Exemplo 10b JSP (Uso de beans)</title>
</head>
<body>
<A HREF="JSP_10c.jsp">Continue</A>
</body>
</html>
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (4): Nesta pgina, os dados digitados no
formulrio HTML so acessados atravs do bean,
usando os mtodos padro getAttr().
<jsp:useBean id="aluno" class="exJSP.Aluno" scope="session"/>
<html>
<head>
<title>Exemplo 10c JSP (uso de beans)</title>
</head>
<body>
<h3>Dados de entrada:</h3>
Matricula: <%= aluno.getMatricula() %> <BR>
Nome:
<%= aluno.getNome()
%> <BR>
RG:
<%= aluno.getRg()
%> <BR>
</body>
</html>

Todos os direitos reservados Klais

Curso de Java
Gerao de Pginas WEB
atravs de JSP

Todos os direitos reservados Klais

JSP e Servlets

Servlets constituem um mecanismo conveniente


para a gerao de pginas HTML dinmicas e seu
tratamento no servidor.
Em muitos casos, no entanto, o seu uso acaba sendo
demasiado trabalhoso
As pginas devem aderir a um padro de apresentao
comum.
Componentes visuais especficos podem ser necessrios.
Uso de ferramentas especficas para a gerao das
pginas.
Todos os direitos reservados Klais

JSP e Servlets

JSP Java Server Pages constituem um mecanismo


orientado pgina HTML sendo gerado, ao invs de
ser orientado a uma classe Java que gera a pgina.
JSP so baseados em Servlets de forma que todos os
recursos disponibilizados aos Servlets pelo ambiente
Java podem ser utilizados.
O servidor de aplicaes Java responsvel pela traduo do
cdigo JSP para o Servlet correspondente e tambm pela
compilao do Servlet. Esse processo ocorre quando a pgina
JSP acessada pela primeira vez.

Todos os direitos reservados Klais

JSP primeiro exemplo

Uma pgina JSP uma pgina HTML onde se insere cdigo Java
dentro de comentrios especiais.
O cdigo Java executado no servidor quando este processa a
requisio da pgina.
<HTML>
<BODY>
Data de hoje: <%= new java.util.Date() %>
</BODY>
</HTML>

Neste exemplo, o cdigo Java uma expresso, delimitada por


<%= e %>. Neste caso, a expresso, depois de calculada
convertida num String que substitui todo o comentrio.
Todos os direitos reservados Klais

JSP Scriptlets

Alm de expresses inseridas no texto da pgina,


possvel inserir trechos de cdigo Java que so
executados no servidor ao se processar a pgina.
Esses trechos de cdigo so chamados scriptlets e
delimitados por <% e %>.
A execuo de um scriptlet ocorre durante a
apresentao do texto correspondente pgina
HTML. Os scriptlets so portanto executados na
ordem em que aparecem na pgina.

Todos os direitos reservados Klais

JSP um exemplo de Scriptlet

Neste exemplo, a varivel dataHoje definida no


scriptlet e utilizada numa expresso Java no corpo
da pgina.
<HTML>
<BODY>
<%
// cdigo do scriptlet
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Data de hoje: <%= dataHoje %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP outro exemplo de Scriptlet

Um scriptlet pode gerar o texto da pgina HTML.


Para isso, usa-se a varivel pr-definida out da classe
Writer.
<HTML>
<BODY>
<% // cdigo do scriptlet
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Data de hoje: <% out.print(dataHoje); %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP variveis pr-definidas


A pgina JSP tem diversas variveis prdefinidas que podem ser utilizadas nos
scriptlets. Neste exemplo usa-se a varivel
request.
<HTML>
<BODY>
<%
System.out.println( Calculando a data de hoje" );
java.util.Date dataHoje = new java.util.Date();
%>
Endereo do servidor:
<% out.print(request.getRemoteHost()); %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP intercalando HTML e Scriptlet


Numa pgina JSP, os Scriptlets podem ser
intercalados ao cdigo HTML.
<TABLE BORDER=2>
<%
for ( int i = 0; i < n; i++ ) {
%>
<TR>
<TD>Valor:</TD> <TD> <%= i+1%> </TD>
</TR>
<%
}
%>
</TABLE>

Todos os direitos reservados Klais

JSP uso de diretivas


Pginas JSP podem fazer uso de diretivas. O
exemplo abaixo usa a diretiva import.
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%
System.out.println( "Evaluating date now" );
Date date = new Date();
%>
Data de hoje: <%= date %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP diretiva include


A diretiva include permite incluir o
contedo de uma pgina JSP em outra.
<HTML>
<BODY>
Incluindo exemplo1.jsp ...
<BR> <%@ include file=exemplo1.jsp" %>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP declaraes
Uma pgina JSP pode conter declaraes (mtodos,
constantes, variveis) delimitadas por <%! e %> .
Declaraes so diferentes de scriptlets porque no
contm cdigo Java para ser executado.
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%!
Date theDate = new Date();
Date getDate(){
System.out.println( executando getDate()" );
return theDate;
}
%>
Data de hoje: <%= getDate() %>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP Uso da sesso de usurio

Servlets e JSPs mantm o controle da sesso de usurio atravs


do objeto session.
O objeto session associar valores a nomes, e essa associao
pode ser compartilhada entre as pginas usadas durante uma
sesso.
Em JSP a sesso accessvel atravs da varivel session, pr
definida.
Num servlet, a sesso accessvel atravs da chamada a
request.getSession();

A associao de um nome a um valor feita atravs da chamada


a session.setAttribute(nome,valor);
O acesso ao valor associado a um nome feito atravs da
chamada a session.getAttribute(valor);
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (1): Na pgina abaixo o usurio
preenche um formulrio que ao ser submetido,
encaminhado a uma pgina JSP (JSP_9b.jsp).

<html>
<head>
<title>Exemplo JSP 9a (Uso da sesso)</title>
</head>
<BODY>
<FORM METHOD=POST ACTION="JSP_9b.jsp">
Nome: <INPUT TYPE=TEXT NAME=username SIZE=20>
<P><INPUT TYPE=SUBMIT VALUE= "Ok">
</FORM>
</BODY>
</HTML>

Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (2): Na pgina JSP (JSP_9b.jsp) abaixo, o
dado username da requisio passado sesso,
associado ao nome theName.
<%
String name = request.getParameter( "username" );
session.setAttribute( "theName", name );
%>
<html>
<head>
<title>Exemplo JSP_9b (Uso da sesso)</title>
</head>
<body>
<A HREF="JSP_9c.jsp">continue, <%= name %></A>
</body>
</html>

Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (3): Na pgina JSP (JSP_9c.jsp) abaixo, o
dado da sesso usado numa expresso no corpo da
pgina.

<html>
<head>
<title>Insert title here</title>
</head>
<body>
Parabns, <%= session.getAttribute( "theName" ) %>
</body>
</html>

Todos os direitos reservados Klais

JSP tratamento de formulrios

Os dados preenchidos pelo usurio num formulrio (JSP, Servlet


ou HTML puro) devem ser disponibilizados aplicao.
Para facilitar a transferncia de dados entre as pginas e as
partes da aplicao, o mecanismo JSP permite que se use um
objeto especfico para manter os dados do formulrio. Esse tipo
de classe conhecido como bean e deve obedecer ao seguinte
padro:
Para cada atributo attr, a classe deve
Exportar um mtodo getAttr() que devolve o valor do
atributo.
Exportar um mtodo setAttr() que define/altera o valor
do atributo.
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (1): bean para manter os dados
associados a um Aluno.
public class Aluno {
String matricula;
String nome;
String rg;
public void setMatricula(String m) { matricula = m; }
public void setNome(String n)
{ nome = n;
}
public void setRg(String r)
{ rg = r;
}
public String getMatricula() { return matricula; }
public String getNome()
{ return nome;
}
public String getRg()
{ return rg;
}
}
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (2): No formulrio, os campos de entrada
tm os mesmos nomes que os atributos do bean:
matricula, nome e rg.
<html>
<head>
<title>Exemplo 10 (Uso de beans)</title>
</head>
<BODY>
<FORM METHOD=POST ACTION="JSP_10b.jsp">
<h3>Dados do aluno</h3>
Matricula: <INPUT TYPE=TEXT NAME=matricula SIZE=20><BR>
Nome: <INPUT TYPE=TEXT NAME=nome SIZE=30><BR>
RG: <INPUT TYPE=TEXT NAME=rg SIZE=4>
<P><INPUT TYPE=SUBMIT VALUE="OK">
</FORM>
</BODY>
</HTML>
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (3):
A diretiva useBean define a classe a ser usada como
bean, o nome do objeto e seu escopo (sesso ou
requisio).
A diretiva setProperty indica quais atributos devem ser
associados aos dados da resposta (* indica todos).
<jsp:useBean id="aluno" class="exJSP.Aluno" scope="session"/>
<jsp:setProperty name="aluno" property="*"/> <html>
<head>
<title>Exemplo 10b JSP (Uso de beans)</title>
</head>
<body>
<A HREF="JSP_10c.jsp">Continue</A>
</body>
</html>
Todos os direitos reservados Klais

JSP tratamento de formulrios


Um exemplo (4): Nesta pgina, os dados digitados no
formulrio HTML so acessados atravs do bean,
usando os mtodos padro getAttr().
<jsp:useBean id="aluno" class="exJSP.Aluno" scope="session"/>
<html>
<head>
<title>Exemplo 10c JSP (uso de beans)</title>
</head>
<body>
<h3>Dados de entrada:</h3>
Matricula: <%= aluno.getMatricula() %> <BR>
Nome:
<%= aluno.getNome()
%> <BR>
RG:
<%= aluno.getRg()
%> <BR>
</body>
</html>

Todos os direitos reservados Klais

Você também pode gostar