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

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

Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser.

Apresentações semelhantes


Apresentação em tema: "Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser."— Transcrição da apresentação:

1 Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser

2 Tópicos Introdução Servlets JSP / Javabeans JSP / Javabeans / Servlets Exercício: setup ambiente Modelos de Desenvolvimento Model 1 Model 2 Controller O Framework Conceito MVC Padrões de Projeto Struts Struts Componentes Exercício: refactoring Ciclo de vida TAG Library Exercício: listagem PlugIns Conclusões

3 Antes de aparecem frameworks para desenvolvimento WEB, com era feito o desenvolvimento do conteúdo dinâmico em Java? Usando servlets! Usando JSPs e Javabeans! Usando JSPs, Javabeans e servlets!...antigamente Introdução

4 Usando somente servlets estávamos em meio ao caos de ter que gerar HTML dentro de uma classe Java. Servlets são úteis como controladores. Recebem uma requisição e transformam os dados da requisição em algo real. Uma aplicação WEB pode ser composta de inúmeros servlets!...antigamente Introdução

5 Usando JSPs com ou sem Javabeans, pode-se misturar Java no HTML (e não HTML no Java). Os Javabeans trazem o benefício de realizar conexões e lógica. JSPs são úteis para a apresentação dos dados ao usuário. Eles utilizam os dados fornecidos pelos Javabeans para compor a visão para o usuário. Nos dias de hoje, deseja-se que um arquivo JSP não contenha código Java dentro dele!...antigamente Introdução

6 O melhor dos cenários: JSPs, Javabeans e Servlets. Porém, fica devendo reusabilidade e gerenciamento de recursos como, por exemplo, segurança. JSP apresenta dados contidos em Javabeans para o usuário, os quais foram montados por um Servlet, que por sua vez, consegue tais dados em um componente de lógica (distribuído ou não). Com esses três elementos, e mais alguns recursos da API Servlet e JSP, pode-se construir frameworks!...antigamente Introdução

7 1. Crie uma classe Java simples (Javabean) cujo nome é br.com.softplan.curso.Cliente, com duas propriedades: nome e cpf. 2. Crie uma página JSP (cadCli.jsp) que contenha dois campos de input (nome e cpf), e um botão de submit do formulário em questão. 3. Crie um servlet (br.com.softplan.curso.ClienteServet) para receber a requisição que será feita pela página JSP. 4. No servlet, extraia do request as propriedades nome e cpf, crie uma instância do Javabean Cliente e defina suas propriedades. 5. Ao terminar o processamento, coloque a instância do Javabean criado como atributo no escopo de request e despache a requisição para a página cadCli.jsp para reapresentar os dados do cliente. Exercício (setup do ambiente e esclarecimento de conceitos) Introdução

8 Modelos de Desenvolvimento Jakarta Struts 1.1

9 JSP Bean TOMCAT JSP Banco de Dados Model 1

10 Lógica de negócio muitas vezes misturada com a lógica da apresentação. A navegação é feita de forma caótica. Baixa reutilização de código, alta utilização de copy-paste. Não se sabe quem está fazendo o que. Não existem papéis bem definidos. E se eu tivesse que controlar o acesso as páginas???. Muitos códigos semelhantes em páginas diferentes e que tem a mesma funcionalidade (causado pelo POCP). Model 1

11 Controlador JSP TOMCAT Banco de Dados Modelo Apresentação Model 2 (MVC) Bean

12 Separação bem definida de papéis (Apresentação - Controle - Negócio). Pode ter sido feito baseado em padrões de projeto que são técnicas testadas e bem sucedidas (ex: FrontController). Alto nível de reutilização devido a componentização. Fluxo da aplicação bem definido e centralizado através do Controlador. Melhora a manutenção. Model 2 (MVC)

13 Centraliza o processamento de requisições em um único ponto. Possibilita o melhor gerenciamento da segurança. Incentiva a reutilização. Facilita a manutenção. Possibilita a seleção da interface de acordo com o dispositivo ou usuário que fez a requisição. Redução do acoplamento da camada de apresentação da camada de negócio. Model 2: O Controlador

14 O Framework Jakarta Struts 1.1

15 Aplicação semi-completa, reutilizável que pode ser especializada para produzir aplicações customizadas. São sempre reutilizados entre os projetos. Uma aplicação nunca começa do zero. São populares por seus bons resultados. Framework Introdução: Struts

16 Padrão difundido pela linguagem de programação Smalltalk. Model - representa os dados corporativos que estão armazenas em um meio de persistente. View - apresentação na tela da visão do modelo. Controller - Define a maneira de como a interface do usuário reage às entradas do controlador e abstrai da visão a lógica de negócios. Um componente de uma das camadas pode ser substituído causando mínimo impacto nas outras camadas. MVC Introdução: Struts

17 Os padrões permitem documentar um problema conhecido recorrente e sua solução em um contexto especifico e comunicar esses conhecimentos a outras pessoas (Alur, 2002). Evitam reinvenção da roda; São observados através da experiência; Dão suporte a melhorias contínuas; Podem ser usados em conjunto para solucionar problemas maiores. Padrões de Projeto (Design Patterns) Introdução: Struts

18 Framework para desenvolvimento de aplicações WEB no padrão de arquitetura MVC; Torna rápido e organizado o desenvolvimento de aplicações Java para a WEB; Construído tendo em mente boas práticas e padrões de projeto; Provê componentes para facilitar a codificação da interface (taglibs); Introdução: Struts

19 Componentes Jakarta Struts 1.1

20 O que, numa aplicação JSP/Servlet pura, é mais tedioso do que transformar os dados do request (basicamente Strings) em um Objeto Java? O que pode ser pior que um for ou while no JSP para montar uma tabela? O Struts fornece um série de componentes Alguns deles são usados mais rotineiramente, outros nem tanto... Componentes

21 Maneira prática para recuperar os dados de um formulário HTML (ActionForm); Um FrontController que delega o processamento da requisição para um componente específico para seu processamento (Action); Uma biblioteca de TAGs para lidar com os objetos nas páginas JSP (o JSTL é uma opção melhor) ; Um arquivo XML onde é informado ao Controlador, quais as Actions responsáveis para o atendimento de determinada requisição (struts-config.xml).... O mais importante que o framework oferece: Componentes

22 ActionForm Maneira prática de recuperar os dados da requisição. ActionForm Nome Cpf Observações HTML Nome Cpf... Request (post) nome=João da Silva cpf=

23 O ActionForm realiza o mapeamento de cada entrada de um formulário HTML, para uma classe Java. Os valores dos atributos são definidos automaticamente pelo processador de requisições do controlador. Os dados informados podem ser validados. ActionForm Maneira prática de recuperar os dados da requisição. ActionForm

24 public class ClienteForm extends ActionForm { private String nome; private String cpf; public void setNome(String umNome) { this.nome = umNome; } public String getNome() { return this.nome; } public void setCpf(String cpf) { this.cpf = cpf; } public String getCpf() { return this.cpf; } ActionForm

25 Action Action O componente para o processamento da requisição. Pode-se fazer uma analogia com um servlet. Local onde se processam os dados do formulário preenchido na página JSP. O método execute() recebe como parâmetro o ActionForm. Além dele, recebe o ActionMapping, o HttpServletRequest e o HttpServletResponse. Ao terminar a execução do método, deve dizer ao controlador para quem vai a requisição (ActionForward).

26 package br.com.softplan.curso.struts.action; import…; public class ClienteAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { ClienteForm cForm = (ClienteForm) form; //fazer algo... } catch (Exception ex) { ex.printStackTrace(); return mapping.findForward(erro); } return mapping.findForward(sucesso); } Action

27 Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Declaração do ActionForm ... struts-config.xml

28 Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Declaração da Action... … struts-config.xml

29 Declaração da Action... … Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Como a Action será chamada (url-pattern) Salvar struts-config.xml

30 Declaração da Action... … Struts-config.xml Informando ao controlador onde e quais são os nossos recursos A classe que implement a Action do struts. package meupacote; public class ClienteAction extends Action {} struts-config.xml

31 Declaração da Action... … Struts-config.xml Informando ao controlador onde e quais são os nossos recursos ActionForm associado a esta Action. Pode ser omitido, caso a Action realize um processamento que não necessite de formulário. struts-config.xml

32 Declaração da Action... … Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Em qual escopo o ActionForm associado a Action irá ficar (request, session, application) O default é session! struts-config.xml

33 Declaração da Action... … Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Indica para qual recurso o FrontController (ActionServlet) deve despachar a requisição. mapping.findForward(sucesso) struts-config.xml

34 Struts-config.xml Informando ao controlador onde e quais são os nossos recursos Deve ficar dentro do diretório WEB-INF (normalmente) Outros elementos: : forwards comuns entre todas as Actions do Struts : Arquivo de recurso utilizado para internacionalização e outras informações úteis (*.properties). : Componentes semelhantes ao ServletContextListener : Customizações do FrontControler : Configurações para acesso a DataSources entre outros... struts-config.xml

35 Struts-config.xml struts-config.xml

36 action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml debug 3 detail 3 0 web.xml web.xml: ActionServlet

37 ………… action *.do web.xml web.xml: ActionServlet

38 Normalmente no Struts cria-se: JSP ActionForm Action JSP Struts-config.xml form-beans action-mappings action-forward JSPs/ActionForm/Action forward sucesso erro

39 1. Usando o formulário... 2.Usando links Cadastrar cliente Cadastrar cliente Como chamar um Action da página JSP TAGs

40 Nome Cpf...

41 1. Reformule a aplicação criada no primeiro exemplo usando os componentes do Struts. Exercício (refactoring do primeiro exercício...) Struts

42 ActionForm Usando um objeto já existente.. Javabean/ActionForm public class Cliente implements Serializable { private String nome; private String cpf; //getters e setters } Cliente.java public class ClienteForm extends ActionForm { private Cliente cliente; public ClienteForm() { this.cliente = new Cliente(); } //getters e setters } ClienteForm.java

43 Nome Cpf... Javabean/ActionForm

44 Controlador (ActionServlet) struts-config.xml ActionForm Action 3. cria / popula / valida 4. cria / dispara o execute 5. pega e seta atributos JSP TAGs 7. usa 6. redireciona 8. pega atributos 1. POST para salveCliente.do 9. Página exibida para o usuário Modelo (JavaBean, EJB, DAO) 2. Procura o ActionMapping correspondente Ciclo de vida

45 Tag library Jakarta Struts 1.1

46 Evitam a codificação scriptlets dentro da página JSP Facilitam a manipulação dos formulários Facilitam a iteração de coleções Facilitam a organização da lógica de apresentação na página Grupo de TAGs mais comuns: logic: iterações, condições, comparações html: tudo relacionado a HTML bean: acesso às propriedades dos objetos Tag library

47 Meu bean está presente em algum dos escopos válidos… A propriedade nome não está nula… Tag library: logic

48 Form Text Select usar uma das tags abaixo… Option Options HTML: equivalência para os elementos do HTML Tag library: html

49 checkbox radio hidden password submit HTML: equivalência para os elementos do HTML Tag library: html

50 write header message bean: acesso e obtenção de valores Tag library: bean

51 1.Crie mais um novo atributo na classe ClienteForm: private java.util.List clientes; 2. Crie um link na página de cadastro de clientes que, ao ser clicado: a.Chame uma Action que irá consultar no banco por todos os clientes cadastrados. b.De posse da lista de clientes obtida no passo a, definir a propriedade clientes do ClienteForm com esta lista. c.Despachar a requisição para a página de listagem de clientes (listCli.jsp) e utilizar a TAG para exibir a lista. Exercício (listando todos os clientes cadastrados...) Struts

52 Classes que implementam esta interface, são inicializadas junto com a aplicação, ao iniciar o Tomcat. Quando o Struts inicia, é chamado o método init() Quando o Struts é finalizado é chamado o método destroy(). Declaração no struts-config.xml Plugins

53 public class CursoPlugin implements PlugIn { public void init(ActionServlet servlet, ModuleConfig moduleConfig) throws ServletException { servlet.getServletContext().setAttribute("MODO-OPERACAO", "RESTRITO"); } public void destroy() { System.out.println("Destruindo o plugin"); } Plugins

54 ...concluindo Em uma aplicação EE, o Struts preenche perfeitamente os requisitos para elaborar uma camada WEB de boa qualidade. Outros frameworks com a mesma finalidade podem ser utilizados como o JSF e o Spring (ambos em evidência). Vale a pena lembrar sobre o conceito Web2.0 e os frameworks RIA como Flex e Lazlo. Ambos podem ser integrado na plataforma.

55 ...concluindo WEB Tier (Struts, JSF) Business Tier (Session/Message Driven Beans) DB Tier (Oracle, DB2...) Client Tier (Swing, SWT) Persistence Layer (Hibernate, Entity Beans)


Carregar ppt "Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser."

Apresentações semelhantes


Anúncios Google