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