intro struts
TRANSCRIPT
-
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