Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPaulo Carvalho Alterado mais de 8 anos atrás
1
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
2
Componentes Model (M) 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
3
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)
4
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 JSP Form Bean Action Servlet Action Dados, Dao ou Session Facade Bean http delega prenche despacha lê
5
Como usar? struts-blank.war Um template básico para um aplicação web já configurada para usar o struts web.xml action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml...
6
Como usar? web.xml (cont.)... action *.do... /tags/struts-bean /WEB-INF/struts-bean.tld /tags/struts-html /WEB-INF/struts-html.tld...
7
Como usar? struts-config.xml <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
8
Como usar? struts-config.xml (cont.)... <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>...
9
Entendendo... Index.jsp
10
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"); }
11
Actions Declarando <action path="/cadastrarFilme" type="pec.CadastrarFilmeAction"/> <forward name="sucesso" path="pages/cadastroSucesso.jsp"/>...
12
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 }
13
ActionForm ActionFroms podem ser validados 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)) validatorErros.add("numCopias", new ActionMessage( "filme.cadastro.numCopias.notInt")); return validatorErros; } Commons validator
14
ActionForm Formulário (HTML/JSP) Request recebido pelo controler Chama reset() Guarda o ActionForm no escopo desejado Cria ou recicla um ActionForm Popula ActionForm a partir do request Chama validate() do ActionForm Dá um forward para “sucesso” Chama execute() do Action Dá um forward para o input Formulário (HTML/JSP) Página Sucesso (HTML/JSP) Com menssagens de erro! Validação falha Validação ok
15
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
16
ActionForm Declarando (struts-config.xml)......... <action path="/cadastrarFilme" type="pec.CadastrarFilmeAction" name="cadastroFilmeForm" input="/cadastrarNovoFilme.jsp">...
17
ActionForm De volta ao action... 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!
18
ActionForm cadastrarNovoFilme.jsp Cadastrar Filme Cadastrar Filme * *...
19
ActionForm cadastrarNovoFilme.jsp (cont)... *
20
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
21
ActionForm ActionForm também podem ser usados para fornecer dados......... <action path="/verDadosFilme" type="pec.VerDadosFilmeAction" name="filmeForm" scope="request" validate="false">...
22
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?
23
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"> <exception key="filmeNaoEncontrado.exception" type="pec.FilmeNaoEncontradoException" path="/pages/exception.jsp" />...
24
O que mais? Outros tipos de actions DispatchAction: quando tempos um formulário que terá mais de uma ação associada Plugins Struts-Validator Struts-Tiles
25
Exercícios Implementar o Exercício de Mensagens usando Struts
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.