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

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

Struts Java avançado – PCC Jobson Ronan Guilherme Kely

Apresentações semelhantes


Apresentação em tema: "Struts Java avançado – PCC Jobson Ronan Guilherme Kely"— Transcrição da apresentação:

1 Struts Java avançado – PCC Jobson Ronan Guilherme Kely

2 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

3 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

4 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)

5 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ê

6 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...

7 Como usar? web.xml (cont.)... action *.do... /tags/struts-bean /WEB-INF/struts-bean.tld /tags/struts-html /WEB-INF/struts-html.tld...

8 Como usar? struts-config.xml

9 Como usar? struts-config.xml (cont.)... ...

10 Entendendo... Index.jsp

11 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"); }

12 Actions  Declarando ...

13 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 }

14 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

15 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

16 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

17 ActionForm  Declarando (struts-config.xml) ...

18 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!

19 ActionForm  cadastrarNovoFilme.jsp Cadastrar Filme Cadastrar Filme * *...

20 ActionForm  cadastrarNovoFilme.jsp (cont)... *

21 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

22 ActionForm  ActionForm também podem ser usados para fornecer dados ...

23 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?

24 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 ...

25 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

26 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 *


Carregar ppt "Struts Java avançado – PCC Jobson Ronan Guilherme Kely"

Apresentações semelhantes


Anúncios Google