Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos

Slides:



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

Framework para desenvolvimento web
Objetos Implícitos Contextuais
Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser
WebWork e JSP Keven andrade
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.
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
JAVA - Struts
JAVA - Struts
Grupo de Pesquisa em ENGENHARIA DE SOFTWARE
Capítulo 2 Java Servlets.
Struts Java avançado – PCC Jobson Ronan
Java para Web com Struts
Prof. Alexandre Monteiro Recife
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Equipe Bruno Gesoaldo Tiago.   Auxilia nas aplicações WEB.  Comunicação e integração entre as camadas de visualização (controle). STRUTS.
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
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 Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Apache Struts 1. Idéias principais Model View Controller Front Controller Action Mapping Form Beans Struts Tags Plugins Desenvolvimento web com Java #
Introdução POO Thiago Medeiros Sistemas de Informação Definição: Sistemas de Informação é uma combinação de pessoas, dados, processos, redes de.
Sistema Integrado de Gerenciamento do ISSQN - WEB.
1 Wireshark um Analisador de Pacotes Marcelo Wurdig - Marçal Pizzi.
Modelagem de Dados Aula 1.
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
Módulo de Gerenciamento de Chamados Tecnologia da Informação SERVICE DESK.
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Educopédia: plataforma de aulas digitais. Rioeduca.net: é o NOVO CANAL DE COMUNICAÇÃO e de INTERAÇÃO de todos os funcionários e alunos da SME/RJ. .
Guia de Referência para Fornecedores Visão Fornecedor.
Prof. Thales Castro.  Porque modelar Software  A UML  Porque usar  Diagramas ◦ Diagrama de Caso de Uso.
Programação Gráfica em Java Swing Aula Na aula passada vimos: Thread Animação Técnica de desenho eficiente (double-bufferring)
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Universidade Federal do Espírito Santo - UFES Laboratório de Computação de Alto Desempenho - LCAD Introdução ao Logisim Prof. Alberto F. De Souza LCAD/DI/UFES.
Glossário Autor: Skyup Informática. Atividade - Glossário A atividade glossário permite que o administrador crie páginas de definições, um dicionário.
Conhecendo o Tutorial support.ebsco.com. EBSCOhost é uma poderosa ferramenta de referência online que oferece uma variedade de bases de dados de texto.
1 Arquitetura e JSF Gustavo Wagner
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Curso Superior em Redes de Computadores FTP Prof. Sales Filho.
Informática Básica Karine Alessandra Córdova O navegador é o principal programa para acessar a Internet. Com ele, você pode visitar endereços na rede,
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Clipping de Notícias É o canal utilizado para processar a coleta, armazenamento e indexação de notícias divulgadas e publicadas nos âmbitos locais, na.
15 anos15 anos. Onde encontrá-lo? Podemos encontrar todos os Procedimentos provenientes do SGQ disponibilizados em nossa rede pelo caminho : Z:\S G Q\Procedimentos.
Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Funcionalidades da.
PROJETO DE INTEGRAÇÃO QUALITOR E FACEBOOK Aproximação do conceito de “Social Relationship Management” (SRM) à plataforma de atendimento Qualitor.
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Programação p/ INTERNET - HTML Prof. João Ricardo Andrêo 2/6/ :46 1 TABELAS A TAG é utilizada para apresentação de dados no formato de tabelas (apresentação.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
FORMULÁRIOS FORMULARIOS. Introdução O formulário é um importante meio de comunicação, transmissão e registro de informações, principalmente as baseadas.
Prof. Thales Castro.  Breve revisão  Diagramas de Classe.
Diagramas de Sequência e Comunicação
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Web Services Conceitos e Tecnologias Amanda Modesto Suzanna Sandes.
Curso ABAP/SAP Nível I (Básico) Presencial. Como funciona Todos os direitos reservados Alexandre Aparecido Passarelli O curso presencial.
Conhecendo o Ambiente de Programação Java Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico  Centro de Informática,
Instruções SIMADE – Maio / 2012
 É o sistema que gerencia todas as informações do curso (cadastros, notas, certificados, numero de turmas e módulos por município, etc)  Numa tradução.
Transcrição da apresentação:

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Java: Struts Boa parte do framework Struts foi desenvolvido entre maio de 2000 e junho de 2001, quando sua primeira versão foi lançada. A responsabilidade esteve com uma equipe de aproximadamente 30 desenvolvedores, sendo que Craig R. MacClanahan foi o primeiro arquiteto e desenvolvedor do framework. Após quatro anos de estrada, o Struts tornou-se padrão de mercado para aplicações web em java. Atualmente, vários frameworks são apontados como substitutos para o Struts, como o Java Server Faces, de responsabilidade do próprio Craig MacClanahan. No entanto, a procura por profissionais com conhecimento neste framework deve continuar por muitos anos.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Frameworks :: Java: Struts Um framework pode ser entendido como sendo uma aplicação reutilizável e semi-completa que pode ser especializada para produzir softwares personalizados. As aplicações construídas com o apoio de um framework são, de um modo geral, bastante semelhantes. Os desenvolvedores que trabalham em aplicações eletrônicas convencionais estão acostumados a kits de ferramentas e a ambientes de desenvolvimento que aproveitam a igualdade entre as aplicações. Os frameworks da aplicação fornecem uma base comum reutilizável podendo servir como fundação para um produto específico.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Frameworks :: Java: Struts Um framework de aplicação deve possuir as seguintes características: compreender múltiplas classes ou componentes, cada qual provendo uma abstração de um conceito em particular; definir como estes conceitos trabalharão juntos para resolver um determinado problema; possuir componentes reutilizáveis; permitir um alto nível de padronização

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Framework Jakarta Struts :: Java: Struts O Struts é um framework para web que se tornou padrão na comunidade JEE (Java Enterprise Edition). O Struts provê uma implementação do modelo MVC-2 para construções de aplicações web. Mas qual a finalidade do Struts? Da mesma forma que a construção de uma casa, ponte e prédio necessitam de uma base mantenedora, os desenvolvedores utilizam o Struts para suportar cada camada de uma aplicação. O nome Struts deve-se ao papel por ele desempenhado nas aplicações web, o de fornecer toda a estrutura inicial. O Struts implementa o controlador da aplicação (a letra C da sigla MVC- 2), sendo este controlador o responsável por toda a logística e também pela integração das camadas de visualização e regra de negócio do sistema.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Framework Jakarta Struts :: Java: Struts Para facilitar o entendimento do Struts, observe na Figura abaixo, o fluxo normal de uma aplicação utilizando o Struts, e também quais tecnologias estão envolvidas em cada uma das etapas.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Framework Jakarta Struts :: Java: Struts As etapas estão descritas a seguir, de acordo com a numeração indicada na Figura Cada solicitação HTTP tem que ser respondida neste mesmo protocolo. Desta forma, inicia-se uma aplicação que utiliza o Struts. Esta solicitação normalmente é definida como requisicao.do, que é um nome lógico para a requisição do usuário. 2. A solicitação requisicao.do é mapeada no arquivo struts-config.xml. Neste arquivo estão todas as definições do controlador do framework. O arquivo é então lido por um ActionServlet (que fará efetivamente o papel do controlador da aplicação) na inicialização da aplicação criando então um banco de objetos com o arquivo de configuração. No arquivo de configuração são definidos os Actions (requisições dos usuários) para cada solicitação. 3. O ActionServlet (que faz o papel do controlador da aplicação), define o Action correspondente para a solicitação. Um Action pode validar a entrada de dados e acessar a camada de negócios para recuperar as informações nos bancos de dados e outros serviços de dados.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Framework Jakarta Struts :: Java: Struts 4. A requisição HTTP pode ser feita também através de um formulário HTML. Em vez de fazer com que cada Action retire os valores do campo da solicitação, o ActionServlet coloca a entrada em um JavaBean. Estes JavaBeans são definidos como FormBeans no Struts e estendem a classe org.apache.struts.action.ActionForm (os Actions e FormBeans serão abordados com maiores detalhes no decorrer do curso). 5. O Action pode acessar o FormBean, efetuar qualquer operação e armazenar o resultado em um ResultBean. 6. O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada. Em geral, o Struts não apresenta a resposta em si, mas envia a solicitação para outro recurso, como uma página JSP. O Struts fornece a classe ActionForward que pode ser usada para armazenar o caminho para uma página sob um nome lógico. Desta forma, o endereço ficará oculto para o usuário. Este visualizará apenas o nome definido para o caminho (por exemplo, resposta.do). Este recurso evita que o usuário possa estar visualizando uma versão desatualizada da aplicação, já que as requisições serão feitas apenas para nomes lógicos.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Framework Jakarta Struts :: Java: Struts Ao completar a lógica de negócio, o Action selecionará e retornará um ActionForward para o servlet. Então, o servlet usará o caminho armazenado no objeto ActionForward para chamar a página e completar a resposta. Estes detalhes logísticos da aplicação são definidos no objeto ActionMapping. Cada ActionMapping está relacionado a um caminho específico. Quando este caminho for selecionado, como requisicao.do, o servlet irá recuperar o objeto ActionMapping. O mapeamento informará ao servlet quais Actions, ActionForms e ActionForwards usar.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Ambiente de desenvolvimento :: Java: Struts Para desenvolver uma aplicação que utilize o framework Struts,são necessários que sejam instalados e configurados os seguintes pacotes: JSE – Java Standard Edition (kit de desenvolvimento Java); Servlet Container, como o TOMCAT ou outros similares Apache Ant (opcional – ferramenta de build); Framework Struts. Todas as ferramentas que compõem este ambiente de desenvolvimento podem ser obtidas gratuitamente. A partir deste ponto, o aluno deverá estar com o kit de desenvolvimento Java, Apache ANT e também com o Tomcat devidamente instalados e configurados.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Obtendo e instalando o Struts :: Java: Struts O Struts é mantido pelo Apache Software Foundation e possui a licença Apache, sendo esta OpenSource. A licença Apache possibilita que o framework seja distribuído juntamente com a aplicação sem que seja necessário efetuar qualquer pagamento à fundação. O Struts pode ser obtido no site oficial do projeto, Os arquivos binários são distribuídos em diversos formatos na página de download Nesta página, selecione a versão (ou superior), e o formato que desejar, como jakarta-struts tar.gz.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A partir deste ponto, estaremos desenvolvendo uma aplicação bastante simples, mas que utilizará praticamente todos os componentes do Struts. O desenvolvimento será a partir da aplicação semi-pronta do struts – struts-blank (que já deve estar copiada para o seu diretório de desenvolvimento com o nome de cadastro). A aplicação consiste em um formulário onde o usuário deverá informar e senha. Serão feitas algumas validações, como verificar se todos os campos estão preenchidos, se o campo segue o formato e se o campo senha possui pelo menos 8 caracteres.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A aplicação, que iremos desenvolver, deve ter a estrutura de diretórios apresentada na Figura 3

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts As páginas JSPs serão salvas abaixo do diretório pages. Este é o único diretório que o usuário poderá acessar pelo navegador. WEB-INF/results: páginas JSPs contendo o resultado de uma operação realizada pelo usuário. Estas páginas poderão ser chamadas somente pelo Struts. O usuário da aplicação não conseguirá acessá-las diretamente; WEB-INF/src: abaixo deste diretório serão mantidos os arquivos.java da aplicação (abaixo do subdiretório goetten); WEB-INF/lib: bibliotecas utilizadas pela aplicação; WEB-INF/classes: arquivos.class referentes às classes Java compiladas da aplicação; Os demais diretórios não serão utilizados pela nossa aplicação, no entanto fazem parte da estrutura padrão de uma aplicação utilizando o Struts.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts As requisições.do :: conhecendo o arquivo web.xml. No Struts, todas as requisições dos usuários recebem um nome lógico (este nome lógico vai evitar que o usuário visualize uma versão desatualizada de algum componente da aplicação). A este nome lógico é acrescentada a extensão do. No entanto, esta extensão é dinâmica, o desenvolvedor pode definir qual extensão utilizar em sua aplicação. O padrão do Struts é utilizar o.do.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Na Listagem 1, a extensão para as requisições do servlet é definida, e definimos também o servlet que deverá ser invocado para estas solicitações. Listagem 1. Configuração da aplicação Fonte: cadastro/WEB-INF/struts-config.xml <forward name="welcome" path="/Welcome.do"/> <action 13. path="/Welcome" 14. forward="/pages/register.jsp"/> 15. <action 16. path="/actions/register" 17. type="teste.RegisterAction" 18. name="userFormBean" scope="request" input="/pages/action/register.jsp"> 20. <forward name="success" path="/WEB-INF/results/result.jsp"/> 21. <forward name="bad-address" path="/WEB-INF/results/bad-address.jsp"/> 22. <forward name="bad-password" path="/WEB-INF/results/bad-password.jsp"/>

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A primeira parte a ser analisada neste arquivo fica entre as linhas 15 e 23, que é onde estamos definindo os Actions que serão mapeados pela aplicação e os seus possíveis resultados (forwards). Observe as linhas 15 e 16 (<action path="/actions/register"), a propriedade define o nome lógico para o Action, neste caso /actions/register.do. Observe que a extensão.do não foi definida, pois já definimos esta extensão como padrão no arquivo web.xml. Na linha 17 (type=goetten.RegisterAction) estamos definindo qual será a classe Java responsável por fazer o tratamento da requisição. Já nas linhas 18 e 19 estamos definindo o Bean utilizado na requisição (userFormBean), este é apenas um nome lógico para o Bean. Na linha 4 definimos o nome lógico e a classe Java referente ao Bean. Entre as linhas 20 e 22, definimos todos os possíveis retornos para a requisição. O parâmetro name define um nome lógico para o resultado e o parâmetro path pode conter uma página JSP ou ainda outro Action. 12. <action 13. path="/Welcome" 14. forward="/pages/register.jsp"/> 15. <action 16. path="/actions/register" 17. type="goetten.RegisterAction" 18. name="userFormBean" scope="request" input="/pages/action/register.jsp"> 20. <forward name="success" path="/WEB-INF/results/result.jsp"/> 21. <forward name="bad-address" path="/WEB-INF/results/bad-address.jsp"/> 22. <forward name="bad-password" path="/WEB-INF/results/bad-password.jsp"/> 23.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts FormBeans Um FormBean nada mais é do que um JavaBean. Os JavaBeans são classes Java que seguem um conjunto de padrões de construção que facilitam a sua utilização em ferramentas de desenvolvimento (ou frameworks) e aplicação. Cada campo do formulário para ser mapeado no Action deverá ter o seu devido atributo na classe, juntamente com os métodos para definição e recuperação dos valores (set e get). Quando um formulário HTML é enviado, as duplas nome-valor são obtidas pelo controlador Struts e aplicadas em um ActionForm (org.apache.struts.action.ActionForm). O Struts compara então os nomes das propriedades deste Bean com os nomes das duplas de entrada. Quando coincidem, o controlador define a propriedade para o valor da dupla correspondente. As propriedades extras são ignoradas. As propriedades ausentes mantêm o seu valor padrão. Estes pares de entrada são compostos pelos campos do formulário HTML. Um formulário contendo os campos e password conteria os seguintes pares, por exemplo:   password =

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A Listagem 3 apresenta o Bean utilizado pela aplicação cadastro, o UserFormBean.java Listagem 3. FormBean da aplicação de cadastro Fonte: cadastro/src/teste/UserFormBean.java Package teste; import org.apache.struts.action.*; public class UserFormBean extends ActionForm { private String = "Informe o "; private String password = ""; public String get () { return( ); } public void set (String ) { this. = ; } public String getPassword() { return(password); } public void setPassword(String password) { this.password = password; }

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts ResultBeans O FormBean representa os dados de entrada, ou seja, os dados submetidos de um formulário HTML. Na maioria das aplicações, o mais importante são os dados referentes ao resultado de uma requisição, o dado criado pela lógica de negócio, podendo ser resultado de uma computação qualquer como um cálculo, ou ainda operações realizadas no banco de dados. No modelo MVC, o ResultBean representa a letra M - o Modelo. Assim como os FormBeans, os ResultBeans também devem possuir métodos para definição e recuperação de atributos. No entanto, não é necessário defini-los no arquivo de configuração do Struts (struts-config.xml) e também não há necessidade de estender qualquer classe do Struts. Nossa aplicação de cadastro utilizará o ResultBean SuggestionBean.java que armazenará sugestões de e senha para o usuário. Quando o usuário submeter um inválido, ou uma quantidade de caracteres inferior à mínima necessária para a sua senha, o SuggestionBean será populado pela classe SuggestionUtils com valores sugestivos de e senha, sendo exibido na página de erro que reportará o ou senha ilegal.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A classe ResultBean SuggestionBean e a classe para populá-lo são apresentadas nas Listagens 4 e 5 respectivamente Listagem 4. Classe ResultBean aplicação de cadastro Fonte: cadastro/src/teste/SuggestionBean.java. package teste; public class SuggestionBean { private String ; private String password; public SuggestionBean(String , String password) { this. = ; this.password = password; } public String get () { return( ); } public String getPassword() { return(password); } public void set (String ){ this. = ; } public void setPassword (String password){ this.password = password; }

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 5. Classe para popular o ResultBean Fonte: cadastro/src/teste/SuggestionUtils.java. package teste; public class SuggestionUtils { private static String[] suggestedAddresses = /* sugestões de s para o usuário */ { }; /* String com os possíveis caracteres para a senha do usuário */ private static String chars = "abcdefghijklmnopqrstuvwxyz "; public static SuggestionBean getSuggestionBean() { /* Recuperando uma sugestão randômica para o campo de */ String address = randomString(suggestedAddresses); /* Montando exemplo de senha com 8 caracteres randômicos */ String password = randomString(chars, 8); return(new SuggestionBean(address, password)); }

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 5. Continuação da Classe para popular o ResultBean Fonte: cadastro/src/teste/SuggestionUtils.java. public static int randomInt(int range) { return((int)(Math.random() * range)); } public static String randomString(String[] strings) { return(strings[randomInt(strings.length)]); } public static char randomChar(String string) { return(string.charAt(randomInt(string.length()))); } public static String randomString(String string, int length) { StringBuffer result = new StringBuffer(); for(int i=0; i<length; i++) { result.append(randomChar(string)); } return(result.toString()); }

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Action Um Action é uma classe Java que estende o org.apache.struts.Action. O ActionServlet, que faz o papel de controlador da aplicação, preenche o ActionForm (JavaBean) e então transmite-o para o Action. Um Action é geralmente responsável por validar a entrada, acessar as informações comerciais e determinar qual ActionForward retornar para o controlador. No arquivo de configuração da aplicação, definimos o nome lógico register para o action, apontando para a classe RegisterAction.java.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Fonte: cadastro/src/teste/RegisterAction.java. 1. package teste; 2. import javax.servlet.http.*; 3. import org.apache.struts.action.*; 4. public class RegisterAction extends Action { 5. public ActionForward execute(ActionMapping mapping, 6. ActionForm form, 7. HttpServletRequest request, 8. HttpServletResponse response) 9. throws Exception { 10. UserFormBean userBean = (UserFormBean)form; 11. String = userBean.get (); 12. String password = userBean.getPassword(); 13. SuggestionBean suggestionBean = SuggestionUtils.getSuggestionBean(); 14. request.setAttribute("suggestionBean", suggestionBean); 15. if (( == null) || ( .trim().length() < 3) || == -1)) { 16. return(mapping.findForward("bad-address")); 17. } else if ((password == null) || (password.trim().length() < 8)) { 18. return(mapping.findForward("bad-password")); 19. } else { 20. return(mapping.findForward("success")); 21. } 22. } 23. }

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Embora bastante simples, a classe RegisterAction efetua todas as ações que normalmente os Actions fazem. A classe RegisterAction estende a classe Action fornecida pelo Struts (linha 4). Entre as linhas 5 e 8 declaramos algumas classes que serão utilizadas pela aplicação. Em seguida (linha 10), há uma coerção aplicada para UserFormBean para que possa ser possível extrair os atributos (linha 11) e password (linha 12). Nas linhas 13 e 14 instanciamos o resultBean e chamamos os métodos para definir valores aos atributos.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts O Action pode retornar ainda três tipos diferentes de ActionForward: bad-address: o informado pelo usuário é invalido (linha 16); bad-password: a senha informada não contém no mínimo oito caracteres (linha 18); success: todos os parâmetros informados atendem a regra da aplicação (linha 20).

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Estes ActionForwards foram definidos no arquivo de configuração, conforme a Listagem 7. Listagem 7. Trecho do struts-config.xml que define os Forwards da aplicação Fonte: cadastro/WEB-INF/strutsconfig.xml.... <forward name="success" path="/WEB-INF/results/result.jsp"/> <forward name="bad-address" path="/WEB-INF/results/bad-address.jsp"/> <forward name="bad-password" path="/WEB-INF/results/bad-password.jsp"/>...

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Camada de visualização Para finalizar a aplicação, é necessário que sejam criados o formulário para que o usuário informe e senha, e os arquivos de resultado (para bad- address, bad-password e sucess). As Listagens 8, 9 e 10 apresentam os códigos destas páginas, respectivamente. Podemos observar que são páginas JSP simples e fáceis de serem entendidas.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 8. Página para ser exibida caso seja informado um inválido Fonte: cadastro/WEB-INF/results/badaddress.jsp. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ERRO: Endereço de inválido Endereço de inválido O Não segue o padrão (como., ). Voltar

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 9. Página para ser exibida caso seja informado uma senha inválida Fonte: cadastro/WEB-INF/results/badpassword.jsp. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Senha Inválida Senha Inválida A senha digitada não contém a quantidade mínima de caracteres necessários. Exemplo de senha:. Voltar

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 10. Página de sucesso, caso todos os campos tenham sido preenchidos corretamente Fonte: cadastro/WEB-INF/results/result.jsp. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Sucesso O Registro foi efetuado com sucesso. Senha:

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Falta agora apenas o formulário para que o usuário possa informar e senha. A página JSP para este formulário é apresentada na Listagem 11

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts Listagem 11. Formulário para que o usuário informe e senha Fonte: cadastro/pages/actions/register.jsp. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Registro de Nova Conta Registro de Nova Conta Senha:

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Entendendo e aplicando os conceitos :: Java: Struts A taglib html do Struts faz o mapeamento automático dos campos do formulário com os atributos do bean associado no Action, através da tag. Os atributos não encontrados no Bean são desconsiderados. Para visualizar o resultado, precisamos acessar o endereço

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Bibliografia :: Java: Struts Referências Struts – site oficial: CAVANESS, Chuck. Programming Jakarta Struts. O'REILLY, ISBN: – 5 DUDNEY, Bill. Jakarta Pitfals. Willey Publishing, 2003 ISBN: HUSTED, Ted. Struts in Action. Manning Books, ISBN: SPIELMAN, Sue. The Struts Framework - Pratical Guid for Java Programmers. Morgan Kaufmann Publishers, ISBN: