Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuiza Alva Alterado mais de 9 anos atrás
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?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.