Vous êtes sur la page 1sur 63

| 

| 


2 Paulo Venancio Lopes


2 Daniel Sguillaro
À  

î ntrodução
î plicação Web

î ecnologia Java Servlet

î ustom ags

î JavaServer Pages

î JavaServer Faces
plicação Web

plicação web é a extensão dinâmica da web ou


application server, e são divididas em dois tipos:
î Presentation-oriented: ria páginas interativas contendo

HL, XL, e outros, e conteúdos dinâmicos em


resposta a uma requisição.
î Service-oriented: mplementa a parte final de um web

service. plicações presentation-oriented são


frequentemente clientes de uma aplicação service-
oriented webè
plicação web (continuação)
            
plicação web (continuação)

îServlets: são classes java que dinamicamente


processam requisições e constroem respostas.

îPaginas JSP: são documentos textos que são


executados como servlets e são apropriados para
geração de markup language tais com HL,
SVG, WL, e XL.
plicação web (continuação)
·          
 
î iclo de vida da aplicação Web

î Desenvolvimento do código do componente


web.
î Desenvolvimento do descritor de implantação.

î ompilar componentes da aplicação web e

classe auxilares.
î pcionalmente empacotar a aplicação em uma

unidade de implantação.
î mplantar a aplicação em um web container.

î cessar a URL que referência a aplicação web.


ódulo Web
mpacotando ódulos Web

Um módulo web pode ser empacotado num


arquivo

*.war que é simplesmente um arquivo *.jar


renomeado,

para ser implantado em um web container. as


pode se

implantar o módulo diretamente.


mplantando ódulo Web

Pode-se implantar o módulo de duas forma:


Aè opiando o módulo web para o diretório de
implantação do web container.

2. opiando o pacote do módulo web (arquivo


*.war) no diretório de implantação do web
containerè
bs1: Pode-se ainda no caso do omcat configurar o descritor
server.xml para que identifique o módulo web.
bs2: Um context root identifica a aplicação web num J server
(ex: http://host:port/context_root/alias).
ecnologia Java Servlet
Um servlet é uma classe java que extende as
capacidades do servidor que acessam aplicações
num modelo de programa requisição e resposta.
odos os servlets podem responder qualquer tipo
de requisição, para cada aplicação a tecnologia
java servlet define classes servlet especificas para
HP.
ecnologia Java Servlet (cont.)

s pacotes javax.servlet e javax.sservlet.http


provem interfaces e classes para escrever
servlets. odos servlets devem implementar a
interface Servlet, a qual define os métodos de
ciclo de vida
iclo de Vida do Servlet

 ciclo de vida de um servlet é controlado pelo


container no qual o servlet tenha sido implantado.
Quando uma requisição é mapeada para o
servlet, o container performa os seguintes
passos.

Aè Se uma instância do servlet não existe, o web


container :
a. arrega a classe do servlet.
iclo de Vida do Servlet (cont.)

¦è ria uma instância da classe do servlet.


c. nicializa a instância do servlet
chamando o método init.
2. nvoca o método service, passando os
objetos request e response .

bs: Se o container necessitar remover o


servlet , ele finaliza o servlet chamando o
método destroy.
½ À    |

ù o elemento da linguagem JSP definida por um Usuário.

<%@ taglib uri="/tlt" prefix="tlt" %>


<html>
<body bgcolor="white">
<tlt:iterator var="departmentName"
type="java.lang.String" group="${myorg.department
Names}">
</body>
</html>
ecnologia JavaServer Pages
JavaServer Pages (JSP) permite fácil criação de
conteúdos web sendo ambos componentes
dinâmicos e estáticos.
Página JSP é um documento texto que contém
dois tipos de textos: dados estáticos (HL, SVG,
WL, XL, e outros), e elementos JSP, para
construir conteúdos dinâmicos (recomenda-se a
extensão *.jsp).
iclo de vida da Pagina JSP

São determinadas pela tecnologia Java Servlet.


Quando um request é mapeado para uma página
JSP, o web container primeiro checa se o servlet
da pagina JSP é mais velha do que a pagina JSP.
Se for o web container traduz a pagina JSP para
uma classe servlet e a compila. Durante o
desenvolvimento , uma das vantagens das
paginas JSP sobre o servlet é que o processo de
construção é feito automáticamente
iclo de vida da Pagina JSP (ont.)

radução e compilação

Durante a fase de tradução cada tipo de dado na


pagina JSP é tratado diferentemente. Dados
estáticos são transformados em código que
emitirão dados para o stream de resposta.
î
iclo de vida da Pagina JSP (ont.)

s elementos JSP são tratados como a seguir:

2 Diretivas são usadas para controlar como o


web container traduz e executa a pagina JSP.

2 lementos scripts são inseridos no servlet da


pagina JSP.
iclo de vida da Pagina JSP (ont.)

îxpressões xpression Language são


passadas comparâmetros para as chamadas
para o JSP expressionevaluator.

îjsp:[set|get]Property elemento é convertido


numa chamada para método no componente
JavaBeansè
iclo de vida da Pagina JSP (ont.)

‡  jsp:plugin elemento é convertido num


específico browser markup para ativação num
applet.
‡ ustom tags são convertidas em chamadas
para o tag handler que implementa a custom
tag.
‡ jsp:[include|forward] elemento é convertido
numa invocação da P Java Servlet.
|     |

lementos scripts são usados tipicamente para


criar e acessar objetos, definir métodos, e
gerenciar fluxo de controle.

uitas tarefas que usam scripts podem ser


eliminadas usando custom tag library.
|     | 
 ½À! "À#$½
%&''()½''À"À*+À   ''!,%-
"À-
"!.-
ÀÀ!-|!/  'ÀÀ!-
!À. ,.!0% 1%½ ,À!,À0% 2" %-
!À. ,.!0%3 2 %
½ ,À!,À0%|4 /  4
| 
4  4 
  %-
!À. ,.!0% %
½ ,À!,À0%.5 3 /  6| /  %-
,7 ·!0|À!|"!!À
"·! 0%|&|2  %
À!0% /' %-
'"!.-
|     | 
$ -
"8-|!/  '"8-
#-
-½  90 
  9-
-1   90 5  ·  " 9-
- 90  9-
-À1 ½ !-   '½ !-6    
90 5      %   %9-
'#-
'$ -
'"À-
| /   & |

2 exto HL
± <H1>Blah</H1>
± Passado para o cliente. ransformado em código
servlet:
2 %":-$ 1'":-%;
2 omentários HL
± <!-- omentário -->
± esmo que um outro HL: Passado para o cliente
2 omentário JSP
± <%-- omment --%>
± Não envia para o cliente
À       

2 xpressões
± Formato: 90 / 9-
± valiada e inserida na saída do servlet:
out.print(expression)
2 Scriptlets
± Formato: 9  9-
± ncorporado ao método do servlet _jspService
2 Declarações
± Format: 9  9-
± nserido no corpo de uma classe servlet, fora de
qualquer método.
!/ < |
2  
± 90 
!/ 9-
2 · 
± !/ 
  4 
   |4     
 "À      |
± !/    => | 
  

2 !/ 
±   90 
  9-
± "   90 5  ·  " 9-
2 | / ?
±   / -!/ 
'  / -
± @  ?    À½ )  |:8 

       & 
½ A  |'| 
 
2 |  
":-.· , '":-
90 1 9-

2 ½  
 
 
> | 
 "| 
 · 5  5 4
"| 
 ·    
1 | 
 !/ 4 !/ B
   ½ À2 % /'1%;
"|  0 5  |  ;
 ( 0   ( ;
%":-.· , '":-%;
 1 ;

C

| 
 | 

2 ntrodução
2 iclo de vida
2 Usando JSF em paginas JSP
2 Usando tags JSF
2 Usando dados localizados
2 onversores e validadores.
2 Backing Bean
| D 

ù um framework do lado servidor baseado em


aplicações WB.
| D   

JSF contém:

‡ JavaBeans
‡ vent Listener
‡ Páginas JSP
‡ lasses auxiliares do lado do servidor
‡ Biblioteca de componentes U
‡ Biblioteca de event handlers, validators, e etc...
| D   

2 Backing Beans
2 rquivo de configuração da aplicação
| D ½  

| D # |   |

2 Definir entrada para JSF HL render kit


2 Definir entrada para JSF ore tag lib

<%@ taglib uri="http://java.sun.com/jsf/html"


prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core"


prefix="f" %>
# |   | 

s tags suportam os seguintes atributos:

‡ d: Único identificador do componente.

‡ mediate: Se true, indica que qualquer evento,


validação, e conversão associado a um
componente será aplicada na fase request
value ou nas próximas fases.
# |   | 

2 Style: specifica um cascading style sheet


(css) para a tag.

2 stylelass: specifica um css styleshet que


contém definições de estilo.

2 Value: dentifica uma fonte de dados externa e


associa seu valor a ele.
# |   | 

2 Binding: identifica um bean property e associa


o componente instanciado por ele.
#    E 

2 extos estáticos(labels, textos


alternativos,etc)
2 ensagens de erro
2 Dados dinâmicos
Para carregar dados localizados temos que:
1. Registrar o resource bundle
2. arregar o resource bundle
<f:loadBundle var=³b1´ basename=³m.mens´ />
½
   @    

Para registrar conversores padrões:


‡ ssociar value do componente para o backing
bean do mesmo tipo.
‡ Referenciar o converter pela classe ou pelo
atributo D da tag do componente.
‡ Usar tag converter d ou tag binding aninhado
no componente.
½
   @    

2 Via backing bean


nteger age = 0;
public nteger getge(){ return age;}
public void setge( nteger age) {this.age =
age;}

2 Via atributo converter


<h:inputext converter="javax.faces.convert.
ntegeronverter" />
½
   @    

2 BigDecimalonverter, Big ntegeronverter,


Booleanonverter,
Byteonverter,haracteronverter
Dateimeonverter, Doubleonverter,
Floatonverter,
ntegeronverter,
Longonverter,Numberonverter,
Shortonverte
½
   @    

2 Dataimeonverter
<h:outputext value="#{cashier.shipDate}">
<f:convertDateime dateStyle="full" />
</h:outputext>
2 Numberonverter
<h:outputext value="#{cart.total}" >
<f:convertNumber type="currency"
</h:outputext>
½
   @    

2 Registrando value-change listener


<h:inputext value="#{c.name}">
<f:valuehangeListener
type="l.Namehanged" /> </h:inputext>
2 Registrando action listener no componente
<h:commandLink action="bookstore">
<f:actionListener
type="listeners.Localehange" />
</h:commandLink>
½
   @    

2 Validadores padrão
DoubleRangeValidator
LengthValidator
LongRangeValidator
2 xemplo:
<h:inputext id="q" size="4"
value="#{item.quantity}" required=³true´>
<f:validateLongRange minimum="1"/>
</h:inputext>
<h:message for="quantity"/>
$ 3$ 

Suas propriedades devem referenciar:


2 Um valor do componente
2 Uma instância do componente
2 Uma instância do converter
2 Uma instância do listener
2 Uma instância do validator
$ 3$  

private nteger userNumber = null;

public void setUserNumber( nteger


user_number)
{ userNumber = user_number; }

public nteger getUserNumber()


{ return userNumber; }
public String getResponse() { ... }
$ 3$  

onfiguração:
<managed-bean>
<managed-bean-
name>UserNumberBean</managed-bean-
name> <managed-
bean-class>g.UserNumBean</managed-bean-
class> <managed-bean-
scope>session</managed-bean-scope>
</managed-bean>
 ' |

1. riar um bean representando os dados de


um formulário

2. Usar as tags do JSF para criar o formulário

3. specificar na tag h:commandButton um


método a ser chamado quando o formulário for
enviado (ctionontroller)
 ' |  

4.riar o ction ontroller - suas responsabilidades


são:

îLer os dados do formulário


îhamar a lógica de negócio

îPopular os beans que contém os resultados

îDevolver uma condição


 ' |  

”. Declarar o form bean e as regras de


navegação no descritor faces-config.xml

6. riar as páginas JSP para cada condição


devolvida
!/ 

Formulário de cadastro, onde os dados fornecidos


pelo usuário farão com que o JSF tome a de qual
pagina será mostrada a seguir.
!/  

<%@ taglib uri="http://java.sun.com/jsf/core"


prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"
prefix="h" %>
<f:view>
«
<h:form>
Nome: <h:inputext
value=³#{bean.nome´/><BR>
!/  

Sobrenome: <h:inputext
value=³#{bean.sobrenome}´/><BR> ...

<h:commandButton
value=³adastrar Dados"
action="#{bean.cadastrar}"/>
</h:form>«
</f:view>
!/  

riando um action controller

package exemplo;

public class adastroBean {


private String nome = ³´;
private String sobrenome = ³´;

// getters e setters
...
!/   

public String cadastrar() {


if (nome.trim().equals(³´) ||
sobrenome.trim().equals(³´) ) {
return(³rejeitado");
} else {
return(³aceito");
}
}
}
!/  

Declarando o action controller

<faces-config>
<managed-bean>
<managed-bean-name>
bean
</managed-bean-name>
<managed-bean-class>
exemplo.adastroBean
</managed-bean-class>
!/  

<managed-bean-scope>
request
</managed-bean-scope>
</managed-bean>
«
</faces-config>
!/ 

specificando regras de navegação

<faces-config>
<navigation-rule>
<from-view-id>/cadastro.jsp</from-view-id>
<navigation-case>
<from-outcome>
aceito
</from-outcome>
<to-view-id>
!/ 

(continuação)
/WB- NF/result/aceito.jsp
</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>
rejeitado
</from-outcome>
<to-view-id>
/WB- NF/results/rejeitado.jsp
!/ 

(continuação)
</to-view-id>
</navigation-case>
</navigation-rule>
«
</faces-config>
!/  

<HL>
<HD>«</HD>
<BDY>
adastro do usuário ${bean.nome}
${bean.sobrenome} aceito. Parabéns.
</BDY></HL>
!/  

<HL>
<HD>«</HD>
<BDY>
adastro rejeitado.<br/>
< HRF=³cadastro.faces">ente de novo</>.
</BDY></HL>
· 6 A 

‡ utorial J da Sun:


http://java.sun.com/javaee/”/docs/tutorial/doc/
‡ www.coreservlets.com
‡ Geary, David; Horstmann ay - ore
JavaServer Faces, 2004
‡ Bergsten, Hans; JavaServer Faces, Reilly,
2004

Vous aimerez peut-être aussi