A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java para Web com Struts Danilo Toshiaki Sato Treinamento ALESP – SPL Módulo III.

Apresentações semelhantes


Apresentação em tema: "Java para Web com Struts Danilo Toshiaki Sato Treinamento ALESP – SPL Módulo III."— Transcrição da apresentação:

1 Java para Web com Struts Danilo Toshiaki Sato dtsato@ime.usp.br Treinamento ALESP – SPL Módulo III

2 Copyleft 2006 Danilo Sato2 Agenda - Módulo III 1.Recapitulando... 2.Construindo a View 1.Internacionalização 2.TagLibs 3.Struts Validator 4.Struts Tiles 3.Configurando o Struts 1.web.xml 2.struts-config.xml 4.Considerações sobre o SPL

3 Copyleft 2006 Danilo Sato3 Recapitulando...  Fluxo Básico de Controle View Config

4 Copyleft 2006 Danilo Sato4 Construindo a View  Suporte à Internacionalização (i18n): No Struts, o suporte é limitado à apresentação de conteúdo internacionalizado Internacionalização na entrada de dados fica a cargo do cliente (navegador)  Aplicações na web podem ser acessadas por pessoas de diversos países  Internacionalização permite que a aplicação seja localizada para cada usuário: Língua Formato de data Formato numérico Formato monetário

5 Copyleft 2006 Danilo Sato5 Construindo a View  Conceitos principais: Locale : Classe Java que representa uma escolha de localização (país e língua – en_US ) ResourceBundle : Classe Java para prover recursos localizados MessageFormat : Classe Java que permite a definição de mensagens parametrizadas (Ex: “Valor máximo: {0}”) MessageResources : Classe do Struts para obter mensagens localizadas de ResourceBundles, num Locale diferente do padrão no servidor

6 Copyleft 2006 Danilo Sato6 Construindo a View  Um ResourceBundle é um mapeamento chave ( String )  valor ( Object )  PropertyResourceBundle : uma subclasse de ResourceBundle para representar localização de mensagens ( String ) definidas num arquivo de propriedades  Sintaxe: “nome=valor”

7 Copyleft 2006 Danilo Sato7 Construindo a View  Para criar conteúdo localizado no Struts: 1.Crie os arquivos de propriedades para cada localização do ResourceBundle 2.Coloque os arquivos de propriedades no classpath da aplicação web ( WEB- INF/classes/diretórios_do_pacote ) 3.Configurar os parâmetros de internacionalização na configuração do ActionServlet ( web.xml ) 4.Utilizar as taglibs do Struts para exibição de mensagens e conteúdo localizado no JSP

8 Copyleft 2006 Danilo Sato8 Construindo a View 1.MeusRecursos.properties Meus Recursos_en.properties erro.usuario.invalido=Usuário inválido erro.nome.invalido=Nome deve ter no máximo 10 caracteres msg.nome=Nome msg.login=Login msg.login.sucesso=Login efetuado com sucesso erro.usuario.invalido=Invalid user erro.nome.invalido=Maximum length of name is 10 msg.nome=Name msg.login=Login msg.login.sucesso=Login successfull

9 Copyleft 2006 Danilo Sato9 Construindo a View 2.Salvar os arquivos no diretório WEB-INF/classes/app 3.Configurar os parâmetros locale e application no web.xml (ou no struts- config.xml para o Struts 1.1) application app.MeusRecursos locale true

10 Copyleft 2006 Danilo Sato10 Construindo a View 4.Utilizando as taglibs para localização: :

11 Copyleft 2006 Danilo Sato11 Construindo a View  Interação com os ActionForms: Geralmente é preciso lidar com formulários HTML para entrada de dados O Struts fornece o ActionForm para representar um formulário HTML Ao montar a página HTML usando tags como queremos evitar que o usuário tenha que preencher todo o formulário no caso de um erro Solução: Taglibs do Struts

12 Copyleft 2006 Danilo Sato12 Construindo a View  TagLibs: Tags personalizadas que podem ser utilizadas na construção do JSP  Sintaxe parecida com HTML: facilita leitura e visualização do código JSP  Struts disponibiliza três TagLibs principais: bean : Útil para acessar JavaBeans e suas propriedades html : Útil para construção de formulários HTML e interação com os componentes do Struts logic : Útil para controle de fluxo na apresentação (condicionais, loops,...)

13 Copyleft 2006 Danilo Sato13 Construindo a View  Instalando as taglibs do Struts: 1.Instalar os arquivos JAR e TLD: WEB-INF\lib\struts.jar WEB-INF\struts-bean.tld WEB-INF\struts-html.tld WEB-INF\struts-logic.tld 2.Configurar as taglibs no web.xml 3.Importar as taglibs no JSP para utilização

14 Copyleft 2006 Danilo Sato14 Construindo a View  web.xml: /tags/struts-bean /WEB-INF/struts-bean.tld /tags/struts-html /WEB-INF/struts-html.tld (...)

15 Copyleft 2006 Danilo Sato15 Construindo a View  Importando no JSP:  Utilização:  Consulte a documentação online para descrições completas das tags do Struts e suas propriedades

16 Copyleft 2006 Danilo Sato16 Construindo a View  Propriedades comuns das tags Struts: id : nomeia uma variável que será criada no escopo de página name : Nome para encontrar o JavaBean existente no escopo especificado scope : Escopo para buscar o JavaBean (ordem padrão: page, request, session, application) property : Nome da propriedade do JavaBean cujo valor será recuperado (...)

17 Copyleft 2006 Danilo Sato17 Construindo a View  Taglib: bean message : Apresenta uma mensagem internacionalizada parameter : Define uma variável (escopo page ) com base no valor do parâmetro especificado write : Apresenta o valor da propriedade do componente especificado define : Define uma variável com base no valor da propriedade do componente especificado cookie, header, struts, include,...  Apenas message e struts estão ligadas ao framework Struts

18 Copyleft 2006 Danilo Sato18 Construindo a View  Taglib: html form : button,cancel,checkbox,file,hidden,image,password,radio,reset,submit,text,textarea : select,option : e link: img : errors : exibe um conjunto de mensagens de erro

19 Copyleft 2006 Danilo Sato19 Construindo a View  Taglib: logic Tags de avaliação: para testar se valores são iguais, menores que, maiores que, vazios ou se estão presentes (Ex: ) Tags de controle: para redirecionar o fluxo ( e ) Tags de repetição: para iteração em coleções ( )  Tags logic podem ser utilizadas fora do framework Struts

20 Copyleft 2006 Danilo Sato20 Construindo a View  Validação: Os elementos HTML aceitam qualquer valor digitado pelo usuário Validação com JavaScript pode ser desabilitada pelo usuário Recomendação: Efetuar validação no cliente (resposta mais rápida) e também no servidor (caso o JavaScript esteja desabilitado)

21 Copyleft 2006 Danilo Sato21 Construindo a View  Precisamos de validações para: Campos obrigatórios Verificar se um valor encaixa-se na faixa de valores esperados Verificar se um valor segue um padrão esperado Verificar um formulário inteiro de uma só vez e retornar uma lista de mensagens Comparar valores entre campos Retornar os dados originais para correção Exibir mensagens localizadas quando necessário Executar validações no lado do servidor se JavaScript está desabilitado

22 Copyleft 2006 Danilo Sato22 Construindo a View  Struts Validator: Baseado no Jakarta Commons Validator Extrai regras de validação do código Java e do HTML Suporte à internacionalização de mensagens Configurado em arquivos XML Regras de validação para tipos básicos já são parte do arcabouço Suporte à validação no cliente e no servidor Permite a criação de regras customizadas

23 Copyleft 2006 Danilo Sato23 Construindo a View  Componentes do Struts Validator: Validadores: para lidar com tipos básicos ResourceBundle: compartilhado com o Struts Arquivos de configuração XML Tag JSP: para incluir validações JavaScript na página ValidatorForm ValidatorActionForm

24 Copyleft 2006 Danilo Sato24 Construindo a View  Adicionando validação automática: 1.O Form deve estender org.apache.struts.validator.ValidatorFor m ou org.apache.struts.validator.ValidatorAct ionForm 2.O JSP deve incluir a tag para validação JavaScript 3.Definir as validações da sua aplicação no arquivo validator.xml 4.Ligar o plug-in to Struts Validator no arquivo struts-config.xml

25 Copyleft 2006 Danilo Sato25 Construindo a View  Diferença entre ValidatorForm e ValidatorActionForm: ValidatorForm: O nome declarado no validator.xml deve ser o mesmo do Form correspondente, como definido no atributo name do struts-config.xml ValidatorActionForm: O nome declarado no validator.xml deve ser o mesmo do Action correspondente, como definido no atributo path do struts-config.xml  Você ainda pode sobrescrever o método validate(), se achar necessário: Basta chamar super.validate() no início do método

26 Copyleft 2006 Danilo Sato26 Construindo a View  Validadores básicos: required : campo obrigatório mask : campo deve ser aceito pela expressão regular definida range : campo pertence a um intervalo maxLength : tamanho máximo do campo minLength : tamanho mínimo do campo byte,short,integer,long,float,double : campo deve ser convertido para o tipo especificado date : campo deve representar uma data válida creditCard : campo deve ser um valor válido de cartão de crédito email : campo deve ser um endereço válido de e-mail

27 Copyleft 2006 Danilo Sato27 Construindo a View  Exemplo: validator.xml <field property="nome" depends="required,minlength"> minlength 1

28 Copyleft 2006 Danilo Sato28 Construindo a View  Exemplo: JSP <html:form action="login.do" onsubmit="validateMeuForm(this)"> :

29 Copyleft 2006 Danilo Sato29 Construindo a View  Exemplo: struts-config.xml <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB- INF/validator.xml"/>

30 Copyleft 2006 Danilo Sato30 Construindo a View  Struts Tiles: Componente para definição de templates para as páginas web Uso comum para separar: cabeçalhos, rodapés, menus,... É um plugin do Struts com um RequestProcessor especializado para o processamento dos templates Definições de template ficam centralizadas no arquivo tiles-defs.xml Inclusão nos JSP através de uma taglib

31 Copyleft 2006 Danilo Sato31 Construindo a View  Exemplo: layout.jsp  index.jsp Título da página principal

32 Copyleft 2006 Danilo Sato32 Construindo a View  Exemplo: tiles-defs.xml

33 Copyleft 2006 Danilo Sato33 Construindo a View  Exemplo: struts-config.xml <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/> (...) <action path="/index" type="org.apache.struts.actions.ForwardAction" parameter="homepage"/> (...)

34 Copyleft 2006 Danilo Sato34 Configurando o Struts  Para redirecionar as requisições HTTP para o Struts, o contêiner deve conhecer o ActionServlet  Como todo Servlet, o ActionServlet é configurado no arquivo: WEB- INF/web.xml  Além das configurações do ActionServlet e seus mapeamentos, você precisa configurar as taglibs do Struts

35 Copyleft 2006 Danilo Sato35 Configurando o Struts  web.xml action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml 1

36 Copyleft 2006 Danilo Sato36 Configurando o Struts  web.xml action *.do /tags/struts-bean /WEB-INF/struts-bean.tld (...)

37 Copyleft 2006 Danilo Sato37 Configurando o Struts  As principais configurações do Struts ficam no arquivo struts-config.xml  Esqueleto do arquivo:...

38 Copyleft 2006 Danilo Sato38 Configurando o Struts  DataSources: recurso JDBC para conexão com banco de dados  Geralmente representam um pool de conexões SQL  Estrutura básica de configuração:...

39 Copyleft 2006 Danilo Sato39 Configurando o Struts  ActionForm e DynaActionForm são definidos na tag  Veja “Construindo o Model” para detalhes sobre esse elemento  Estrutura básica de configuração:...

40 Copyleft 2006 Danilo Sato40 Configurando o Struts  Para tratamento declarativo de erros globais, utilize a tag  Veja “Construindo o Controller” para detalhes sobre esse elemento  Estrutura básica de configuração: <exception type="${ }" key="${ }" path="${ }"/>...

41 Copyleft 2006 Danilo Sato41 Configurando o Struts  Para definição de encaminhamentos globais, utilize a tag  Veja “Construindo o Controller” para detalhes sobre esse elemento  Estrutura básica de configuração: <forward name="${ }" path="${ }" redirect="${ }"/>...

42 Copyleft 2006 Danilo Sato42 Configurando o Struts  Para definição de ActionMappings, utilize a tag  Veja “Construindo o Controller” para detalhes sobre esse elemento  Estrutura básica de configuração: <action path="${ }" type="${ }" name="${ }" scope="${ }" validate="${ }" input="${ }">...

43 Copyleft 2006 Danilo Sato43 Configurando o Struts  Para configurações do ActionServlet, utilize a tag  Alguns dos parâmetros antes definidos no web.xml foram migrados para o no Struts 1.1  Estrutura básica de configuração: <controller processorClass="${ }" debug="${ }" contentType="${ }".../>

44 Copyleft 2006 Danilo Sato44 Configurando o Struts  Para configurações do ResourceBundle para internacionalização da aplicação web, utilize a tag  Definido no parâmetro application do web.xml no Struts 1.0  Estrutura básica de configuração: <message-resources parameter="${ }" null="${ }".../>

45 Copyleft 2006 Danilo Sato45 Configurando o Struts  Para configurações de Plug-ins como o Struts Validator e o Struts Tiles, utilize a tag  Veja “Construindo a View” para detalhes sobre esse elemento  Estrutura básica de configuração:...

46 Copyleft 2006 Danilo Sato46 Considerações sobre o SPL  Alguns sintomas observados: Muito código scriptlet no JSP Código mal-estruturado (muitas classes no mesmo pacote, JSPs misturados,...) Código de validação espalhado e inconsistente (alguns JSPs usam JavaScript, outros não, algumas classes efetuam validação, outras não) Arquivo de configuração muito extenso e difícil de ler

47 Copyleft 2006 Danilo Sato47 Considerações sobre o SPL  Sugestões: Utilizar melhor as taglibs do Struts nos JSPs Mover código de controle para uma ou mais Actions Separar a aplicação em módulos para:  Facilitar a estruturação das classes em pacotes bem definidos  Facilitar a estruturação e leitura do arquivo de configuração Utilizar o Struts Validator para código de validação

48 Copyleft 2006 Danilo Sato48 Dúvidas ou Sugestões?


Carregar ppt "Java para Web com Struts Danilo Toshiaki Sato Treinamento ALESP – SPL Módulo III."

Apresentações semelhantes


Anúncios Google