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

Slides:



Advertisements
Apresentações semelhantes
Aplicação de exemplo Struts Aplicação de exemplo
Advertisements


Tutorial de Pesquisa Básica de Bibliotecas Acadêmicas
Eventos, Variáveis de Sessão e Aplicação
Introdução a JSF Marco Antonio.
Framework para desenvolvimento web
Objetos Implícitos Contextuais
XML - Extensible Markup Language
Projeto de Sistemas de Software
Java Server Pages (JSPs)
Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser
Java Server Faces Leandro O. Gomes Primeiros passos - FES(2009-1)
Geração Dinâmica de Páginas com JSP Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação.
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
JAVA - Struts
Desenvolvimento de Projetos e Aplicações Web
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Protocolo HTTP e HTML Prof. Danton Cavalcanti Franco Junior
Desenvolvimento WEB I Camila Nunes
JAVA - Struts
Grupo de Pesquisa em ENGENHARIA DE SOFTWARE
Treinamento do Microsoft® Access® 2010
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Rodrigo Cristiano Silva
Integração com Banco de Dados
Introdução ao Framework Django
JAVA - Struts. AULA 3.
Struts Java avançado – PCC Jobson Ronan
Java para Web com Struts
Prof. Alexandre Monteiro Recife
Arquitetura das JSP - Aula 2
Implementação MVC Pedro Antonino.
Unidade 6 – Formulários HTML Prof.: Henrique Santos
JSP JavaServer Pages Marco Antonio, Arquiteto de Software – TJDF Dezembro/2005.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Introdução ao ASP.Net 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Fundamentos da Linguagem C#
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
JSP – Mais Recursos Jobson Ronan
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Developing Web Applications with JavaServer Faces (Qusay H. Mahmound) Luiza Pagliari Pablo Grigoletti Universidade Federal do Rio Grande do Sul Programa.
Programação Distribuída em Java Aula Na aula passada vimos: TomCat –Instalação e configuração –Criação de contexto JSP... uma introdução –Expressões.
Programação Distribuída em Java Aula 09 - JSP. Na aula passada vimos: Aspectos gerais de segurança em Java policytool Instalação de políticas de segurança.
Curso de JSP Básico Camilo Porto Nunes.
JSTL.
USANDO JAVABEANS EM JSP. Usando JavaBeans em JSP  O uso de JavaBeans em uma página JSP envolve as actions, e.
Treinamento AJAX Waelson Negreiros Blog:
Aula 5 – Formulários GET – POST - REQUEST
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução ao Projeto.
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
O que é? Um framework para facilitar a implementação de uma arquitetura MVC em aplicações web Oferece  Um servlet controlador configurável ( Front Controller.
Desenvolvimento WEB II Continuação AJAX Professora: Kelly de Paula Cunha.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
1 AJAX em aplicações Rails Lívia Monnerat Castro
Prof. Rogerio Alessandro Bueno 1 JavaServer Pages (JSP) Prof. Rogério A. Bueno.
ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller.
1 Arquitetura e JSF Gustavo Wagner
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Transcrição da apresentação:

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

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

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

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

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

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”

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

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

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

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

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

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,...)

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

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 (...)

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

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 (...)

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

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

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

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)

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

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

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

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

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

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 campo deve ser um endereço válido de

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

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

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"/>

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

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

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

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"/> (...)

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

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

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

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

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:...

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:...

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="${ }"/>...

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="${ }"/>...

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="${ }">...

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="${ }".../>

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="${ }".../>

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:...

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

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

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