Struts Java avançado – PCC Jobson Ronan

Slides:



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


Arquiteto de Software – TJDF
Introdução a JSF Marco Antonio.
Framework para desenvolvimento web
Desenvolvimento Web em Java com Java Server Faces (JSF)
Projeto de Sistemas de Software
Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser
Itamir de Morais Barroca Filho Mario V. Andrade de Melo Neto
Módulo II Arquitetura em Camadas
Java Server Faces Leandro O. Gomes Primeiros passos - FES(2009-1)
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.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
JAVA - Struts
Desenvolvimento de Projetos e Aplicações Web
Aplicativos Web Com Orientação a Objetos
JAVA - Struts
Grupo de Pesquisa em ENGENHARIA DE SOFTWARE
Filtros. O que são Filtros Um filtro é um componente Web que reside no servidor Intercepta as requisições e respostas no seu caminho até o servlet e de.
Tecnologia para Web Tratamento de Exceções
Integração com Banco de Dados
JAVA - Struts. AULA 3.
Hibernate Java avançado – PCC Jobson Ronan
Hibernate Java avançado – PCC Jobson Ronan
Conceitos de J2EE para a WEB
Aula 2 – Primeiros Passos com a arquitetura Web Servidor
Java para Web com Struts
Prof. Alexandre Monteiro Recife
JSP / Servlets Avançado
The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho.
Linguagem II Exceções.
Aula 2 – Primeiros Passos com a arquitetura Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas.
Arquitetura das JSP - Aula 2
Implementação MVC Pedro Antonino.
Conceitos da arquitetura
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
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
Padrões de Interação com o Usuário
Equipe Bruno Gesoaldo Tiago.   Auxilia nas aplicações WEB.  Comunicação e integração entre as camadas de visualização (controle). STRUTS.
Ultimos recursos Jobson Ronan
Framework MVC Francisco do Nascimento PSC - Programação de Softwares Corporativos UNIBRATEC, novembro de 2008.
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
JSP – Mais Recursos Jobson Ronan
SISTEMA PROCESSUAL DIGITAL
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Java para Web com Struts Danilo Toshiaki Sato Treinamento ALESP – SPL Módulo III.
Developing Web Applications with JavaServer Faces (Qusay H. Mahmound) Luiza Pagliari Pablo Grigoletti Universidade Federal do Rio Grande do Sul Programa.
Curso de JSP Básico Camilo Porto Nunes.
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
USANDO JAVABEANS EM JSP. Usando JavaBeans em JSP  O uso de JavaBeans em uma página JSP envolve as actions, e.
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
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 Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
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 #
Apache Struts 2. Idéias principais Model View Controller Configuração por convenção Action Mapping Interceptors Struts Tags (ONGL) Plugins auto-configuráveis.
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
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Playframework 2.0. O que veremos hoje Playframework 2.0 Instalação Criação e Execução de uma Aplicação Estrutura de uma Aplicação Exemplos.
Transcrição da apresentação:

Struts Java avançado – PCC Jobson Ronan {jrjs@cin.ufpe.br} Guilherme Kely {gkmo@cin.ufpe.br}

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) através de arquivos XML externos, que despacham requisições a classe Action (Command) implementados pelo desenvolvedor Uma vasta coleção de taglibs JSP Classes ajudantes que oferecem suporte a tratamento de XML, preenchimento de JavaBeans, validação de formulários e gerenciamento externo de conteúdo

Componentes Model (M) View (V) Controller (C) Geralmente um objeto java (JavaBean) View (V) Geralmente uma página HTML ou JSP. Embora o Struts seja independente da camada de apresentação (ex. velstruts) Controller (C) org.apache.struts.action.ActionServlet ou subclasse

Componentes Classes ajudantes FromBean: Encapsula dados de um formulário HTML (M) ActionError(s): Encapsula dados de Erros (M) (deprecated 1.2) ActionMessage(s): Encapsula dados de Mensagens (M) Custon tags: Encapsulam lógica de apresentação (V) Actions: implementam lógica comandos (C) ActionForward: Encapsulam lógica de redirecionamento (C)

Como funciona? Componentes-chave: ActionServlet: despachante de ações Action: classe estendida por cada ação (comando) a ser implementada (Command pattern) struts-config.xml: arquivo onde se definem mapeamentos entre ações, páginas, beans e dados Form Bean JSP Action Servlet Action delega http Dados, Dao ou Session Facade lê despacha Bean prenche

Como usar? struts-blank.war Um template básico para um aplicação web já configurada para usar o struts web.xml <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> ... </servlet>

Como usar? web.xml (cont.) ... <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

Como usar? struts-config.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <!-- ============================================== Form Bean Definitions --> <form-beans> </form-beans> <!-- ======================================= Global Exception Definitions --> <global-exceptions> </global-exceptions> <!-- ========================================= Global Forward Definitions --> <global-forwards> <forward name="welcome" path="/Welcome.do"/> </global-forwards>

Como usar? struts-config.xml (cont.) ... <!-- ========================================= Action Mapping Definitions --> <action-mappings> <action path="/Welcome“ forward="/pages/Welcome.jsp"/> </action-mappings> <!-- =========================================== Controller Configuration --> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> <!-- ====================================== Message Resources Definitions --> <message-resources parameter="MessageResources" />

Entendendo... Index.jsp <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <logic:redirect forward="welcome"/>

Actions Implementando a ação cadastrar novo filme package pec; //imports public class CadastrarFilmeAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //código de efetuar cadastro... return mapping.findForward("sucesso"); }

Actions Declarando <!-- ========================================= Action Mapping Definitions --> <action-mappings> <action path="/Welcome“ forward="/pages/Welcome.jsp"/> <action path="/cadastrarFilme" type="pec.CadastrarFilmeAction"/> <forward name="sucesso" path="pages/cadastroSucesso.jsp"/> </action-mappings> ...

ActionForm Nossa ação precisa de um formulário Java bean comum As propriedades do bean são populadas de forma transparente public class CadastroFilmeForm extends ActionForm { private String idRef; private String nomeOriginal; private String nomeNacional; private String numeroCopias; //get´s e set´s }

ActionForm ActionFroms podem ser validados Commons validator package pec; public class CadastroFilmeForm extends ActionForm { //... public ActionErrors validate(ActionMapping mapping, HttpServletRequest response) { ActionErrors validatorErros = new ActionErrors(); if (idRef == null || idRef.trim().equals("")) validatorErros.add("idRef", new ActionMessage( "filme.cadastro.idRef.required")); if (nomeOriginal == null || nomeOriginal.trim().equals("")) validatorErros.add("nomeOriginal", new ActionMessage( "filme.cadastro.nomeOriginal.required")); if (numCopias == null || numCopias.trim().equals("")) validatorErros.add("numCopias", new ActionMessage( "filme.cadastro.numCopias.required")); else if (!GenericValidator.isInt(numCopias)) "filme.cadastro.numCopias.notInt")); return validatorErros; } Commons validator

ActionForm Formulário (HTML/JSP) Formulário (HTML/JSP) Página Sucesso Request recebido pelo controler Cria ou recicla um ActionForm Chama reset() Formulário (HTML/JSP) Guarda o ActionForm no escopo desejado Com menssagens de erro! Popula ActionForm a partir do request Dá um forward para o input Chama validate() do ActionForm Página Sucesso (HTML/JSP) Validação falha Validação ok Chama execute() do Action Dá um forward para “sucesso”

ActionForm ActionForm são firewalls dos Actions O ActionForms só chegam aos actions caso tenham sido validados Cuidado com a definição dos tipos Se o usuário digita um valor, torne esta propriedade uma String

ActionForm Declarando (struts-config.xml) ... <form-beans> <form-bean name="cadastroFilmeForm" type="pec.CadastrarFilmeForm"/> </form-beans> <action-mappings> <action path="/cadastrarFilme" type="pec.CadastrarFilmeAction" name="cadastroFilmeForm" input="/cadastrarNovoFilme.jsp"> <forward name="sucesso" path="/pages/cadastroFilmeSuc.jsp" /> </action>

ActionForm De volta ao action... Garantia de validação! package pec; //imports public class CadastrarFilmeAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { CadastroFilmeForm cadastroForm = (CadastroFilmeForm) form; //código de efetuar cadastro... return mapping.findForward("sucesso"); } Garantia de validação!

ActionForm cadastrarNovoFilme.jsp <%@ taglib uri="/tags/struts-html" prefix="html"%> <%@ taglib uri="/tags/struts-bean" prefix="bean"%> <html:html locale="true"> <head> <title>Cadastrar Filme</title> </head> <body> <h1>Cadastrar Filme</h1> <html:errors /> <table> <html:form action="cadastrarFilme"> <tr> <td><bean:message key="filme.cadastro.idRef" />*</td> <td><html:text property="idRef" /></td> </tr> <td><bean:message key="filme.cadastro.nomeOriginal" />*</td> <td><html:text property="nomeOriginal" /></td> <td><bean:message key="filme.cadastro.nomeNacional" /></td> <td><html:text property="nomeNacional" /></td> ...

ActionForm cadastrarNovoFilme.jsp (cont) ... <tr> <td><bean:message key="filme.cadastro.numCopias" />*</td> <td><html:text property="numCopias" /></td> </tr> <td colspan="2"> <html:submit value="Cadastrar"/> <html:cancel value="Cancelar"/> </td> </html:form> </table> </body> </html:html>

ActionForm MessageResources.properties # -- cadastro filme success -- filme.cadastro.title=Filme Cadastrado filme.cadastro.heading=Sucesso! filme.cadastro.message=Filme Cadastrado com sucesso! # -- cadastro filme form -- filme.cadastro.idRef=Id Ref filme.cadastro.nomeOriginal=Nome Original filme.cadastro.nomeNacional=NomeNacional filme.cadastro.numCopias=Número de Cópias filme.cadastro.idRef.required=Id Ref Requerido filme.cadastro.nomeOriginal.required=Nome Original Requerido filme.cadastro.numCopias.required=Número de Cópias Requerido filme.cadastro.numCopias.notInt=Número de Cópias inválido

ActionForm ActionForm também podem ser usados para fornecer dados ... <form-beans> <form-bean name="filmeForm" type="pec.FilmeForm"/> </form-beans> <action-mappings> <action path="/verDadosFilme" type="pec.VerDadosFilmeAction" name="filmeForm" scope="request" validate="false"> <forward name="sucesso" path="/pages/filmeForm.jsp" /> </action>

ActionForm Problemas Muitos objetos de domínio duplicados Muito código de cópia de propriedades Usar BeanUtils.copyProperties(Object dest, Object src); Grande quantidade de Froms com grandes quantidades de propriedades pode ser difícil de manter Usar DynaActionForm?

Exceções Struts dá suporte a um tratamento de exceções declarativo Suponha que o código de negócio de VerDadosFilmeAction lance a exceção pec.FilmeNaoEncontradoException <action path="/verDadosFilme" type="pec.VerDadosFilmeAction" name="filmeForm" scope="request" validate="false"> <forward name="sucesso" path="/pages/filmeForm.jsp" /> <exception key="filmeNaoEncontrado.exception" type="pec.FilmeNaoEncontradoException" path="/pages/exception.jsp" /> </action> ...

O que mais? Outros tipos de actions Plugins DispatchAction: quando tempos um formulário que terá mais de uma ação associada Plugins Struts-Validator Struts-Tiles

Exercícios Implemente um aplicação web usando o struts para cadastrar, visualizar, atualizar, remover e listar usuários (CRUD) Usuários possuem: Nome, login (único), senha, data de cadastro Implemente a persistência usando JDBC *