WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br



Documentos relacionados
Guia para Iniciantes do WebWork

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

!" # # # $ %!" " & ' ( 2

Aprenda a usar um framework MVC desenvolvendo o login de um sistema com o Webwork utilizando seus principais recursos.

Prof. Roberto Desenvolvimento Web Avançado

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Java para WEB. Servlets

Minicurso de MVC web com Struts. Felipe F Nascimento felipenasc@inf.puc-rio.br

Java na WEB Servlet. Sumário

J550. Apache Struts. Helder da Rocha

Frameworks - Grails. Aécio Costa

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Curso de Introdução ao

Scriptlets e Formulários

Acessando um Banco de Dados

Associação Carioca de Ensino Superior Centro Universitário Carioca

Java para Desenvolvimento Web

Java na WEB Componentes Bean

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Java II. Sérgio Luiz Ruivace Cerqueira

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges

Java II. Sérgio Luiz Ruivace Cerqueira

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

Criação de um novo projeto no Eclipse utilizando Maven

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

Prova Específica Cargo Desenvolvimento

Tutorial Struts 2 Roteiro para Demonstrações Vítor E. Silva Souza (vitorsouza@gmail.com)

Arquitetura de uma Webapp

Universidade da Beira Interior

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

JSF - Controle de Acesso FERNANDO FREITAS COSTA

Aula 03 - Projeto Java Web

Documentação Usando o Javadoc

4 O Workflow e a Máquina de Regras

Estudo Dirigido - Parte 1

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Desenvolvimento Web com Framework Demoiselle versão 1.0

Autenticação e Autorização

Desenvolvimento de aplicações Web. Java Server Pages

JSP e Servlet Princípio de MVC

Aplicações de Linguagem de Programação Orientada a Objeto

Curso - Padrões de Projeto Módulo 5: Model-View- Controller

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Projeto de Software Orientado a Objeto

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Sistemas para internet e software livre

Programando em PHP. Conceitos Básicos

J550. Model View Controller

Computação II Orientação a Objetos

Java Beans e Servlets

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Padrões de Projeto WEB e o MVC

J550 Segurança e Controle de erros

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Introdução ao framework web Apache Struts 2

Programação para Android. Aula 06: Activity, menus e action bar

Guia de Fatores de Qualidade de OO e Java

Desenvolvendo Aplicações Web com NetBeans

JSP: JAVA SERVER PAGES

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

GERADOR DE CÓDIGO HTML BASEADO EM DICIONÁRIO DE DADOS UTILIZANDO BANCO DE DADOS

Parte I. Demoiselle Vaadin

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

INTRODUÇÃO À TECNOLOGIA SERVLETS

TUTORIAL JSP & SERVLET

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Aplicativos JavaEE 6 modularizados com Web Fragments

PROJETO FRAMEWORK - CELEPAR PAGINAÇÃO DE DADOS EM APLICAÇÕES JAVA PARA INTERNET

LINGUAGEM DE PROGRAMAÇÃO WEB

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Curso de Aprendizado Industrial Desenvolvedor WEB

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Desenvolvimento Web TCC Turma A-1

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO ESCOLA POLITÉCNICA DEPARTAMENTO DE ELETRÔNICA E DE COMPUTAÇÃO SISTEMA DE GERENCIAMENTO DE LOCADORA - SISLOC

Manual do Sistema "Fala Comigo - Sistema de Atendimento On-Line" Editorial Brazil Informatica

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Prática Sobre Servlets e JSP

JSP: JAVA SERVER PAGES

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

UNIDADE III JAVA SERVER PAGES

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Introdução ao PHP. Prof. Késsia Marchi

Programação II Programação para a Web. Christopher Burrows

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Programação de Computadores - I. Profª Beatriz Profº Israel

Parte I. Demoiselle Mail

MANUAL DE UTILIZAÇÃO

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Documento de Projeto de Sistema

SISTEMAS DISTRIBUÍDOS

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

ZEND F r a m e w o r k

Transcrição:

WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1

Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC) 2

Introdução Definição do WebWork É um framework para desenvolvimento web que provê uma serie de ferramentas úteis e flexíveis, capaz de aliviar consideravelmente o trabalho muitas vezes mecânico e repetitivo do programador, integrando-se facilmente com outras ferramentas O webwork é um projeto de software livre da OpenSymphony 3

WebWork 2 Características Framework MVC (Pull-based) Centrado em componentes e reuso de código Pode ser utilizado, também em aplicações não web Largamente utilizado pela comunidade de desenvolvimento 4

XWork O XWork é um framework que fornece uma implementação do padrão de projeto Command que poderá ser utilizado para executar unidades de trabalho que são classe que implementam a interface com.opensymphony.xwork.action Cada ação (comando) representa uma unidade de trabalho (objeto) 5

XWork fornece! Padrão command em ambiente requisição / resposta Action chaining Inversão de Controle (IoC) Não fornece qualquer recurso para web 6

WebWork O WebWork além de implementar o MVC modelo 2 por meio de ações e resultados, ainda provê ao desenvolvedor características web-based: Ações O gerenciamento de ações ou de comandos é a característica mais básica do WebWork. Descrevendo uma ação no arquivo de xwork.xml e criando uma classe Java para esta ação é o suficiente para ver o WebWork em funcionamento Redirecionamento Como resultado de uma ação temos um redirecionamento. Ao ser chamada uma ação, esta retorna para onde deseja redirecionar a aplicação na camada de visualização 7

WebWork Interceptadores Com os interceptors, uma ação pode ser interceptada antes e depois da sua execução podendo ter seu fluxo desviado Múltiplos interceptors podem ser utilizados para uma ação Validação de formulários O WebWork pode automatizar a validação de formulários com arquivos simples em XML, separando e facilitando sem a necessidade de programação em Java conversão automática de dados Componentes Com a característica de Inversão de Controle do XWork, é possível ter objetos que ficam disponíveis para as ações em um determinado escopo 8

WebWork Tags JSP, macros Velocity e JasperReports Internacionalização O WebWork possui arquivos de recursos separados por ações e por língua 9

Arquitetura do WebWork Figura retirado do livro: MANNING Art of Java Web Development 10

Exemplo de uma Action (bem simples) package helloword; import com.opensymphony.xwork.actionsupport; public class ActionCadastroNoticia implements Action { private String nome; private String saudacao; } public void setnome(string nome) { this.nome = nome; } public Date getsaudacao() { return this.saudacao; } public String execute() throws Exception { saudacao = Olá + nome; return SUCCESS; } Definido na interface Action 11

Tipos de retorno da interface Action package com.opensymphony.xwork; public interface Action { public static final String SUCESS = sucess ; public static final String INPUT = input ; public static final String ERROR = error ; public static final String NONE = none ; public static final String LOGIN = login ; public String execute(); } 12

Configurando o Descritor Web (web.xml) <?xml version="1.0"?> <web-app> <display-name>conexao Java 2004</display-name> <servlet> <servlet-name>webwork</servlet-name> <servlet-class> com.opensymphony.webwork.dispatcher.servletdispatcher </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>webwork</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>... </web-app> Esta configuração mapeia o ServletDispatcher do WebWork e faz com que todas as ações que terão a extenção *.action para este servlet que se encarregará de chamar a ação correspondente 13

Configurando o XWork Depois de configurar o container com o arquivo web.xml é necessário configurar o XWork A configuração é feita no arquivo xwork.xml que deve ficar em WEB-INF/classes O arquivo a seguir não faz nada, é a configuração mais básica do Xwork <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="webwork-default.xml" /> <package name="default" extends="webwork-default">... </package> </xwork> Configuração das actions e interceptadores 14

Ações e Resultados As ações são as classes que recebem a requisição do WebWork. Estas classes devem estar configuradas no arquivo xwork.xml e deve estar prontas para receber a requisição do WebWork Utilizando o WebWork, os JSP s terão apenas a tarefa de controlar a visualização do sistema, a camada View, e eles é quem irão fazer a requisição das ações ao WebWork 15

Ações e Resultados configurando no xwork.xml <xwork> <include file="webwork-default.xml" /> <package name="default" extends="webwork-default"> <default-interceptor-ref name="defaultstack" /> <action name="anonascimento" class="guia.calculaanonascimento"> <result name="error" type="dispatcher">leidade.jsp</result> <result name="success" type="dispatcher">mostraano.jsp</result> </action> </package> </xwork> Padrão para utilização básica do WebWork OBS: este arquivo será adicionado na pasta WEB-INF/classes 16

Actions em mais detalhes No XWork, entrada e saída são tratados como JavaBean ou (POJO Plain Old Java Object) que implementa a interface Action Action é uma operação Actions devem ser simples! A interface Action define apenas um método: package com.opensymphony.xwork; public interface Action { public static final String SUCESS = sucess ; // outras constantes public String execute(); } 17

Resultados Ao ser configurada uma ação, devem ser especificados todos os possível retornos: Dispatcher - Encaminha o resultado para um determinado local, este é o mais utilizado no WebWork. Redirect - Encaminha o resultado para um determinado local Diferente do dispacher, o redirect não envia as propriedades da ação para a página de resultado Velocity - Encaminha o resultado para um arquivo de modelo do velocity. O WebWork trabalha nativamente com o Velocity Chain - Encaminha o resultado de uma ação para outra ação 18

Exemplo simples (completo) Será criado um exemplo de ação, que será uma página que perguntará o nome e a idade e de uma pessoa e se esta pessoa já fez aniversário este ano. Como resposta terá o ano de nascimento dessa pessoa 19

Config: xwork.xml <xwork> <include file="webwork-default.xml" /> <package name="default" extends="webwork-default"> <default-interceptor-ref name="defaultstack" /> <action name="anonascimento" class="guia.calculaanonascimento"> <result name="error" type="dispatcher">leidade.jsp</result> <result name="success" type="dispatcher">mostraano.jsp</result> </action> </package> </xwork> 20

leidade.jsp: página que requisita os dados do usuário <html> <body> <h2>guia do WebWork</h2> <Form method="post" action="anonascimento.action"> Entre com os dados:<br> Nome: <input type="text" name="nome" size="30"> <BR> Idade: <input type="text" name="idade" size="5"> <BR> Já fez aniversário este ano: <input type="checkbox" name="aniversario" value="true"> <input type="submit" value="mostra Ano Nascimento"> </form> </body> </html> No arquivo web.xml, foi configurado para que tudo que termine com *.action seja direcionado ao WebWork. E no xwork.xml foi configurado uma ação AnoNascimento 21

ActionCalculaAnoNascimento.java import com.opensymphony.xwork.actionsupport; import java.util.calendar; public class ActionCalculaAnoNascimento extends ActionSupport { private String nome; private Integer idade; private Boolean aniversario; private Integer ano; public String execute() throws Exception { if (nome == null nome.equals("") idade == null idade.equals("")) { return ERROR; } if (aniversario == null) { aniversario = new Boolean(false); } if (!aniversario.booleanvalue()) { idade = new Integer(idade.intValue()+1); } Calendar data = Calendar.getInstance(); data.add(calendar.year, (idade.intvalue()*-1)); ano = new Integer(data.get(Calendar.YEAR)); return SUCCESS; } // Métodos Get e Set O WebWork utiliza o conceito de Inversão de Controle e Injeção de Dependência, isto faz com que criar ações seja muito simples. Os dados do formulário são injetados dentro da classe em seus respectivos atributos fazendo uma chamada ao método setnome(string nome)

IoC e Componentes É uma forma de administrar dependência entre objetos A idéia é fornecer automaticamente para algumas actions instancias de objetos necessárias para se realizar a ação É preciso definir uma interface (chamada de interface habilitadora) a ser implementada pela ação Em seguida precisamos fazer um registro no arquivo components.xml 23

IoC e Componentes public class CarrinhoCompras implements Serializable { private List itens = new ArrayList(); public List getitens() { return itens; } public void setitens(list itens) { this.itens = itens; } } public interface CarrinhoComprasAware { public void setcarrinhocompras(carrinhocompras carrinho); } <components> <component> <scope>session</scope> <class>br.com.javafree.ww.carrinhocompras</class> <enabler>carrinhocomprasaware</enabler> </component> </components> 24

IoC e Componentes É preciso adicionar no web.xml <web-app> <filter> <filter-name>container</filter-name> <filter-class>com.opensymphony.webwork.lifecycle.requestlifecyclefilter</filter-class> </filter> <filter-mapping> <filter-name>container</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <listener> <listener-class>com.opensymphony.webwork.lifecycle.sessionlifecyclelistener</listener-class> </listener> <listener> <listener-class>com.opensymphony.webwork.lifecycle.applicationlifecyclelistener</listener-class> </listener> 25

IoC e Componentes Arquivo xwork.xml <xwork> <!-- Importa as configurações default do WebWork. --> <include file="webwork-default.xml" /> <!-- Configuração para pacote default. --> <package name="default" extends="webwork-default"> <interceptors> <interceptor-stack name="basicstack"> <interceptor-ref name="validationworkflowstack" /> <interceptor-ref name="component" /> </interceptor-stack> </interceptors> <action name="vercarrinho" class="br.com.javafree.ww.vercarrinhoaction"> <interceptor-ref name="basicstack" /> <result name="success" type="dispatcher">mostraritens.jsp</result> </action> </package> </xwork> 26

Bibliografia Consultada 27