Intro Struts

download Intro Struts

of 40

Transcript of Intro Struts

  • 8/2/2019 Intro Struts

    1/40

  • 8/2/2019 Intro Struts

    2/40

    Introduo ao Struts

    Curso deIntroduo ao

    Daniel Destro do Carmo

    Softech Network [email protected]

  • 8/2/2019 Intro Struts

    3/40

    Introduo ao Struts

    O que ?

  • 8/2/2019 Intro Struts

    4/40

    Introduo ao Struts

    Struts um framework gratuito para construo deaplicaes web implementadas em Java.

    Struts acelera o desenvolvimento de aplicaes web queutilizam o paradigma Model 2, que uma especializaodo design pattern Model-View-Controller (MVC).

    Criado por Craig McClanahan e doado ao Apache SoftwareFoundation (ASF) em 2000.

    Atualmente disponvel na verso 1.1 release candidate.

    Struts

  • 8/2/2019 Intro Struts

    5/40

    Introduo ao Struts

    Frameworks

    Frameworks so aceleradores decdigo que implementam solues

    genricas para um determinadoproblema.

    Impedem a reinveno da rodaatravs de componentesreutilizavis e flexveis.

    Oferecem um ponto de partida paraa implementao do projeto.

  • 8/2/2019 Intro Struts

    6/40

    Introduo ao Struts

    Modelos de Aplicaes Web em Java

    Aplicaes Web Java podem ser divididas em duas categorias:

    Model 1: O cliente acessa diretamente uma pgina JSP queredireciona a resposta para a prxima pgina.

    Model 2: O cliente acessa um Servlet que de acordo com oestado da aplicao determina qual JSP serapresentado como resposta.

  • 8/2/2019 Intro Struts

    7/40

    Introduo ao Struts

    Model 1

    Web Server

    Servlet/JSP

    Servlet/JSP

    Servlet/JSP

    Servlet/JSP

    Servlet/

    JSP

    Pginas Ligadas Individualmente: (Espaguete)

  • 8/2/2019 Intro Struts

    8/40

    Introduo ao Struts

    Model 2

    Aplicado com o padro MVC

    Web

    Server Servlet Controller

    JSP JSP JSP

  • 8/2/2019 Intro Struts

    9/40

    Introduo ao Struts

    Problemas Comuns

    Devido a popularidade e alcance das aplicaes web,vrios requisitos complexos foram adicionados,tornando o simples mecanismo de request e responselimitado:

    Complexa navegao;

    Internacionalizao; Suporte a mltiplos dispositivos; Validao de formulrios;

    Tratamento de excees; Personalizao; Restries de acesso.

  • 8/2/2019 Intro Struts

    10/40

    Introduo ao Struts

    Como o Struts Pode Ajudar?

    STRUTS

    JSP/ServletFront

    Controller

    MVC CommandPattern

    I18N

    Tratamentode Excees Validao de

    Formulrios

    Solues comprovadas, desenvolvidas pelos experts,aumentando assim a produtividade e diminuindo o risco do

    projeto.

    Segmentao do sistema e a especializao da equipe de

    desenvolvimento por perfis.

  • 8/2/2019 Intro Struts

    11/40

    Introduo ao Struts

    Como o Struts

    implementa o

    MVC?

  • 8/2/2019 Intro Struts

    12/40

    Introduo ao Struts

    MVC

    Front

    Controller

    View(JSP)

    Model(beans)cliente

    (1) request (2) executa

    (3) despacha

    (4) atualiza(5) exibe

    MMMM

    VVVV

    CCCC

  • 8/2/2019 Intro Struts

    13/40

    Introduo ao Struts

    Controlador

    Para implementar as funcionalidades exigidas pelo frameworko Struts utiliza, alm de Servlets, vrios design patterns

    (Front Controller, Commande Adapter) para obter osseguintes benefcios:

    1. Redirecionar todas as requisies para um nico ponto.2. Extrair e validar informaes contidas nas requisies.3. Mapear as requisies para as suas respectivas atividades.4. Redirecionar dados e contedo para suas respectivas

    pginas.5. Tratar eventuais excees.

  • 8/2/2019 Intro Struts

    14/40

    Introduo ao Struts

    Desenvolvendocom Struts

  • 8/2/2019 Intro Struts

    15/40

    Introduo ao Struts

    Nosso Sistema

    Para nossa apresentao, vamos levar em conta odesenvolvimento de um sistema bem simples, de cadastro

    de funcionrios.

  • 8/2/2019 Intro Struts

    16/40

    Introduo ao Struts

    Front Controller

    A classe ActionServlet atua como o Front Controller do Struts.Ele deve ser configurado no arquivo web.xml.

    action

    org.apache.struts.action.ActionServlet

    config

    /WEB-INF/struts-config.xml

    action

    /*.do

  • 8/2/2019 Intro Struts

    17/40

    Introduo ao Struts

    ActionForm

    Logo aps o recebimento da requisio o ActionServletdelega ao RequestProcessor a responsabilidade de extrair

    os parmetros da requisio e popular um ActionForm.

    Os ActionForms so responsveis por validar se os

    atributos da requisio so sintaticamente corretos eeventualmente disparar excees avisando o usurio final.

    O desenvolvedor deve especializar um ActionForm e

    sobrescrever os mtodos resete validade.

    Alm disso, a sua classe de ActionForm deve conter osatributos que correspondem aos campos do form html.

  • 8/2/2019 Intro Struts

    18/40

    Introduo ao Struts

    ActionForm

    package br.com.softech;import org.apache.struts.action.*;

    public class FuncionarioForm extends ActionForm {private String nome;private Integer idade;

    public void setName(String nome) {this.nome = nome;

    }

    public void setIdade(Integer idade) {this.idade = idade;

    }

    public String getNome() {return nome;

    }

    public Integer getIdade() {return idade;

    }

  • 8/2/2019 Intro Struts

    19/40

    Introduo ao Struts

    ActionForm

    // continuao

    public void reset( ActionMapping mapping, HttpServletRequest req ) {

    this.nome = null;

    this.idade = null;

    }

    public ActionErrors validate( ActionMapping mapping, HttpServletRequest req ) {

    ActionErrors errors = new ActionErrors( );

    if( nome == null || idade == null ) {

    errors.add( errNomeIdade, new ActionError(nomeIdade.required) );

    }

    return errors;

    }}

    Esta classe representa um form html com dois campos:

    nome e idade (devem ser idnticos ao name do form)

  • 8/2/2019 Intro Struts

    20/40

    Introduo ao Struts

    ActionForm

    Agora, devemos declarar o nosso form no arquivo deconfigurao do Struts (struts-config.xml).

  • 8/2/2019 Intro Struts

    21/40

    Introduo ao Struts

    Action

    Aps criar e validar os parmetros via ActionForm oRequestProcessor acessa o mtodo execute do objeto

    Action relacionado a requisio (Command Pattern).

    As Actions so responsveis por ativar os objetos denegcio, tratar eventuais excees e redirecionar dados econtedo para a prxima pgina.

    O desenvolvedor deve especializar a classe Action e

    sobrescrever o mtodo execute.

    As classes Action so reutilizadas por todas asrequisies, deste modo tais classes devem ser thread-

    safe.

  • 8/2/2019 Intro Struts

    22/40

    Introduo ao Struts

    Action

    public class ListaFuncAction extends Action {

    public ActionForward execute(ActionMapping mapping,ActionForm form,

    HttpServletRequest request,

    HttpServletResponse response)

    throws IOException, ServletException {//Acessando ActionForm

    //Lgica do Negcio para buscar os funcionrios

    //....

    //Redirecionamento

    return mapping.getInputForward( );

    }

    }

    Lista todos os funcionrios

  • 8/2/2019 Intro Struts

    23/40

    Introduo ao Struts

    Action

    public class NovoFuncAction extends Action {

    public ActionForward execute(ActionMapping mapping,ActionForm form,

    HttpServletRequest request,

    HttpServletResponse response)

    throws IOException, ServletException {//Acessando ActionForm

    FuncionarioForm funcForm = (FuncionarioForm) form;

    String nome = funcForm.getNome( );

    Integer idade = funcForm.getIdade( );

    //Lgica do Negcio para cadastrar um novo funcionrio

    //....

    //Redirecionamento

    return mapping.findForward("sucesso");

    }}

    Grava um novo funcionrio

  • 8/2/2019 Intro Struts

    24/40

    Introduo ao Struts

    Associao e Mapeamento das Aes

    Como o Struts as requisies com suas respectivas aes?

    O mapeamento entre as requisies e as aes (Action) feito de forma declarativa no arquivo struts-config.xml.

  • 8/2/2019 Intro Struts

    25/40

    Introduo ao Struts

    ActionForward

    A classe ActionFoward responsvel pelo mapeamentolgico das pginas do sistemas, evitando assim, o uso do

    nome fsico (URI) dento do cdigo.

    O uso eficiente do ActionFoward facilita a manuteno

    do sistema.

    ActionFowards so declaradas dentro do struts-

    config.xmlem dois nveis (Global e Action), sendo que asdeclaradas dentro das aes tem maior precedncia.

  • 8/2/2019 Intro Struts

    26/40

    Introduo ao Struts

    ActionForward

    Configurando os ActionForward no struts-config.xml:

  • 8/2/2019 Intro Struts

    27/40

    Introduo ao Struts

    ActionError e ActionMessages

    Responsveis pelo armazenamento de informaes sobremensagens de erro, anomalias do sistema (ActionError)

    e avisos (ActionMessage).

    Geralmente utilizada dentro de ActionForms (erros de

    sintaxe) e Actions (erros de sistema).

    Possuem grande integrao com os servios de

    internacionalizao e tag libraries.

  • 8/2/2019 Intro Struts

    28/40

    Introduo ao Struts

    ActionError e ActionMessages

    public ActionErrors validate(ActionMapping mapping,

    HttpServletRequest request) {

    ActionErrors errors = new ActionErrors();

    if ((this.nome == null) || (this.nome.lenght()

  • 8/2/2019 Intro Struts

    29/40

    Introduo ao Struts

    Internacionalizao

    O Struts oferece suporte a internacionalizao atravs daclasse MessageResources.

    A classe MessageResources populada em tempo deexecuo pelo RequestProcessor de acordo com asinformaes registradas no struts-confige a lngua/regioutilizada pelo usurio final.

    Largamente utilizadas pelos ActionErrors e tag libraries

    do Struts.

    A implementao padro usa arquivos .properties, masespecializaes podem ser adicionadas para atender

    outros cenrios.

  • 8/2/2019 Intro Struts

    30/40

    Introduo ao Struts

    Internacionalizao

    Configurando a I18N no arquivo struts-config.xml:

  • 8/2/2019 Intro Struts

    31/40

    Introduo ao Struts

    Exceptions Handling

    Mecanismo adicionado na verso 1.1.

    Tem por finalidade implementar o tratamento de

    excees de forma declarativa. Utiliza a classe ExceptionHandler para interceptar as

    excees e redirecion-las para as suas pginas de erroou respectivas aes de controle.

    Impedem que o usurio veja excees de sistema notratadas:

    NullPointerException

    Internal Error Podem ser globais ou relativas a uma ao (Action).

  • 8/2/2019 Intro Struts

    32/40

    Introduo ao Struts

    Exceptions Handling

  • 8/2/2019 Intro Struts

    33/40

    Introduo ao Struts

    View

    O Struts foi concebido primeiramente para trabalhar compginas JSP, apesar de suportar outras possibilidades

    como Velocity, XSLT (tambm conhecido com Model2X) eUIX (Framework Oracle).

    Para facilitar o desenvolvimento das pginas JSP e

    integrao com o controlador, o Struts oferece uma srie detag libraries.

    Tag libraries facilitam a manuteno dos arquivos JSP, vistoque inibem, na maioria das vezes, o uso explcito de

    scriptlets.

  • 8/2/2019 Intro Struts

    34/40

    Introduo ao Struts

    Struts Tag Lib

    Struts HTML:

    Construo de

    Forms, Text Itens,Buttons e etc

    Struts Bean:

    Acesso a objetosarmazenados emvrios escopos(application, session,request e page)

    Struts Logic:

    Condies

    Loops

    Redirect e Forward

    Struts Templates:

    Construo de

    templates

    Struts Tiles:

    Plug-in do Struts

    Possibilita a criao deTemplates Master

  • 8/2/2019 Intro Struts

    35/40

    Introduo ao Struts

    Modelo

    O Struts no oferece nenhuma facilidade para odesenvolvimento do modelo, mas por outro lado est aberto

    a qualquer tecnologia ou framework de mercado: Enterprise Java Beans (EJB)

    Java Data Objects (JDO)

    Frameworks O-R (Hibernate, JDO, Toplink)

    Melhores prticas (Design Patterns) devem ser aplicadaspara evitar o acoplamento forte entre a lgica de negcio e ocontrolador, aumentando assim a reutilizao do cdigo:

    Business Delegate Session Faade

    Factory Method

  • 8/2/2019 Intro Struts

    36/40

    Introduo ao Struts

    The Big Picture

  • 8/2/2019 Intro Struts

    37/40

    Introduo ao Struts

    Dicas e Truques

    1. ActionForms no so Value Objects (VO ou DTO).

    2. Lgica de negcio no deve ser implementada dentro dos

    objetos Action.3. Regras de validao genricas (obrigatrio, maior ou

    menor, expresses regulares e etc) podem ser reduzidascom o framework Validator.

    4. Reduza o nmero de ActionsForms via formulriosdinmicos.

    5. Agrupe atividades relacionas com a classe

    DispatchAction, reduzindo assim o nmero de Actions.

  • 8/2/2019 Intro Struts

    38/40

    Introduo ao Struts

    Livros Disponveis

  • 8/2/2019 Intro Struts

    39/40

    Introduo ao Struts

    Struts in ActionHusted, Ted N.Editora Manning

    Editora Cincia Moderna (em portugus Struts em Ao)

    Pgina Oficial do Projeto Struts

    http://struts.apache.org

    Outros Siteshttp://www.jamesholmes.com/struts

    Material de Apoio

  • 8/2/2019 Intro Struts

    40/40

    Introduo ao Struts

    Este material foi baseado no material disponibilizado pelo pessoal da Oracle do

    Brasil, alm outras fontes na internet.

    OBRIGADO!

    Agradecimentos