Download - Spring & Struts

Transcript
Page 1: Spring & Struts
Page 2: Spring & Struts

...MAS PRIMEIRO...

Page 3: Spring & Struts

MVCModel-View-Controller

Page 4: Spring & Struts

Introdução

• Códigos suscetíveis a mudança.• Lógica acoplada firmemente à interface.

• Solução:– Dividir a aplicação.

• Model• View• Controller

Page 5: Spring & Struts

Model

• Representa os dados usados pela aplicação.• Define detalhes da manipulação e

armazenamento de dados.

• Benefícios:– Manutenção: detalhes dos dados e das operações nos

dados podem ser encontrados facilmente.– Pode ser reutilizado por outra aplicação.

Page 6: Spring & Struts

View

• Detalhes da implementação da interface de usuário.

• Única a interagir com o usuário

• Benefícios:– Múltiplas interfaces(Swing, WEB, Console).– Criação de grupo de design voltada para o estilo, look

& feel.

Page 7: Spring & Struts

Controller

• Detalhes sobre a transição da aplicação.• Captura os eventos da camada view e atualiza os

componentes da camada model.

• Benefícios:– Camada view pode ser projetada sem estar ciente de

outros componentes.– Atualização dos componentes model são removidos

da view.

Page 8: Spring & Struts
Page 9: Spring & Struts

Model 2

• Ligeira modificação do MVC para uso em aplicações WEB.– Servlet:

• Fornecer um ponto de acesso único ao restante da aplicação.• Responsável pela gerência central do fluxo da aplicação

– Páginas JSP.

Page 10: Spring & Struts

Struts

Framework padrão WEB

Page 11: Spring & Struts

Apresentação do Framework

Os desenvolvedores utilizam o Struts para suportar cada camada de uma aplicação (MVC2).

Ele implementa o controlador da aplicação (Integração das camadas).

Struts – Estrutura – Provê a estrutura inicial das aplicações

Page 12: Spring & Struts

Entendedo Struts

Page 13: Spring & Struts

O que baixar para instalar

Você deve ter o TomCat

Baixe o Struts 2 no site http://struts.apache.org/download.cgi#struts20111

Instale o Amateras: https

://sourceforge.jp/projects/amateras/files/?release_id=29511#29511

Page 14: Spring & Struts

Como instalar Descompacte o Struts em qualquer diretório

Para testar o Struts copie o arquivo struts2-blank-2.0.11.1.war para a pasta \webapps do Tomcat

Inicie o serviço Tomcat, acesse http://localhost:8080• Deve aparecer a página inicial do Tomcat

Agora tente acessar o arquivo war que você copiou digitando• http://localhost:8080/struts2-blank-2.0.11.1

Page 15: Spring & Struts
Page 16: Spring & Struts
Page 17: Spring & Struts

Para fazer sua própria aplicação Struts Quando você abrir o arquivo .war com um browser, ele

gerará uma pasta struts2-blank-2.0.11.1, que terá algumas subpastas.• WEB-INF/results: páginas JSPs contendo o resultado de

uma operação realizada pelo usuário. Estas páginas poderão ser chamadas somente pelo Struts. O usuário da aplicação não conseguirá acessá-las diretamente;

• WEB-INF/src: abaixo deste diretório serão mantidos os arquivos .java da aplicação

• WEB-INF/lib: bibliotecas utilizadas pela aplicação; • WEB-INF/classes: arquivos .class referentes às classes

Java compiladas da aplicação; Adicione essa pasta ao seu workspace, mude seu nome

e comece a editá-la

Page 18: Spring & Struts
Page 19: Spring & Struts

Vantagens do Struts

O Struts serve para auxiliar no desenvolvimento de aplicações para WEB.

Ele separa muito bem cada camada utilizando MVC

Desenvolvedores html e java podem trabalhar separadamente no mesmo projeto.

A interface não depende do fluxo de informação e vice-versa

Page 20: Spring & Struts

Inside Struts... Servlets é uma tecnologia em servidores que ajudam a

guiar uma página web para uma URL que contém uma classe e permite a utilização do métodos desta usando http.

Ruim pois qualquer modificação na interface gerava mudança no código fonte do Servlet (Que continha o código Java)

JSP (Java Server Pages) Páginas com HTML e código Java, facilita o desenvolvimento.

Problema: JSP lida com a apresentação (html) e desenvolvimento (JAVA) no mesmo arquivo, não havia como reutilizar código decentemente.

Page 21: Spring & Struts

Solução Com o problema da reusabilidade das JSP, criaram tags

especiais html para acessar partes de código, exemplos:

• <jsp:useBean … /> Agora para dividir bem as funções das JSP e dos

Servlets criaram frameworks como o Struts! O Struts gerencia as 3 partes do MVC (Mais focado na C)

• Model: .Java

• View: São as JSPs

• Controller: Actions

Page 22: Spring & Struts

Exemplo de Projeto Struts

Vamos estudar um projeto que vêm com o Struts

O que irei explicar é uma tela de login simples que lê os dados de um usuário.

Page 23: Spring & Struts
Page 24: Spring & Struts
Page 25: Spring & Struts

Example.xml

Page 26: Spring & Struts
Page 27: Spring & Struts
Page 28: Spring & Struts
Page 29: Spring & Struts
Page 30: Spring & Struts

Conclusão

O Struts facilita o desenvolvimento de aplicações WEB.

A versão 2.0 tem bastante ferramentas inovadoras.

Deve ser estudado com afinco pois é muito abrangente

Page 31: Spring & Struts
Page 32: Spring & Struts

• J2EE

• Aplicações de grande porte

• Reduzir este problema

• MVC

Utilização

Page 33: Spring & Struts

• Padrões de Desenvolvimento

• Dependency Injection

• Inversion of Control

Conceitos Básicos

Page 34: Spring & Struts

Padrão de desenvolvimento de programas

de computadores onde a sequência

(controle) de chamadas dos métodos não

é determinada pelo programador. Este

controle é delegado a uma infraestrutura

de software muitas vezes chamada de

container. Esta é uma característica

comum aos frameworks.

Inversion of Control

http://pt.wikipedia.com/ Dependency_Injection

(Inversão de Controle)

Page 35: Spring & Struts

No Spring o container se encarrega de

"instanciar" classes de uma aplicação

Java e definir as dependências entre elas

através de um arquivo de configuração em

formato XML. Dessa forma o Spring

permite o baixo acoplamento entre classes

de uma aplicação orientada a objetos.

Dependency Injection

http://pt.wikipedia.com/ Dependency_Injection

(Inclusão de Dependência)

Page 36: Spring & Struts

Vamos implementar o seguinte sistema de classes Normalmente e depois implementaremos Spring no Sistema.

Exemplo Codificação(Inclusão de Dependência)

Page 37: Spring & Struts

public class Computador {private Impressora impressora = null;private Monitor monitor = null;private Teclado teclado = null;

public void setImpressora(Impressora impressora) {this.impressora = impressora;

}public void setMonitor(Monitor monitor) {

this.monitor = monitor;}public void setTeclado(Teclado teclado) {

this.teclado = teclado;}public void ligar(){

monitor.exibeMensagem("Digite texto para impressão");

String texto = teclado.ler();

impressora.imprimir(texto);

monitor.exibeMensagem("Texto Impresso!");

}

}

Exemplo Codificação(Inclusão de Dependência)

Page 38: Spring & Struts

public class Impressora {public void imprimir(String texto) {

System.out.println("[IMPRESSORA] " + texto);}

}

Exemplo Codificação(Inclusão de Dependência)

public class Monitor {public void exibeMensagem(String mensagem) {

System.out.println("[MONITOR] "+mensagem);}

}

public class Teclado {public String ler() {

String texto = null;System.out.print("[TECLADO]>");

try {texto = new BufferedReader(new InputStreamReader(System.in)).readLine();

} catch (IOException e) {System.out.println("Erro lendo teclado!");e.printStackTrace();

}return texto;}

}

/*Classe de Teste*/

public class IniciaComputador {public static void main(String[] args) {

Computador computador = new Computador();computador.setImpressora(new Impressora());computador.setTeclado(new Teclado());computador.setMonitor(new Monitor());computador.ligar();

}}

/*Saida no Console*/[MONITOR] Digite texto para impressão[TECLADO]> Teste[IMPRESSORA] Teste[MONITOR] Texto Impresso!

Page 39: Spring & Struts

Para fazer o Spring entender a

dependência entre nossas classes,

precisamos criar um arquivo de

configuração. Este geralmente recebe o

nome de applicationContext.xml. Vejamos

o arquivo que

define nosso exemplo:

Dependency Injection(Inclusão de Dependência)

Page 40: Spring & Struts

Exemplo Codificação(Inclusão de Dependência)

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<beans><bean id=“computadorBean” class=“pacoteBase.Computador”>

<property name="impressora" ref=“impressoraBean“/>

<property name="teclado" ref=“tecladoBean“/><property name="monitor“ ref="monitorBean“/>

</bean>

<bean id=“impressoraBean“ class=“pacoteBase.Impressora“/>

<bean id=“tecladoBean“ class=“pacoteBase.Teclado“/>

<bean id=“monitorBean“ class=“pacoteBase.Monitor“/>

</beans>

Classes

Atributos

Page 41: Spring & Struts

E para testar nosso exemplo utilizando Spring podemos utilizar a classe abaixo:

public class IniciaUsandoSpring {public static void main(String[] args) {

ApplicationContext applicationContext = newClassPathXmlApplicationContext(“classpath:pacoteBase/applicationContext.xml");

Computador computador = (Computador)applicationContext.getBean("computadorBean");

computador.ligar();}

}

Exemplo Codificação(Inclusão de Dependência)

/*Saida no Console*/[MONITOR] Digite texto para impressão[TECLADO]> Teste[IMPRESSORA] Teste[MONITOR] Texto Impresso!

Page 42: Spring & Struts

O applicationContext.xml é onde são

declarados os beans do Spring. O

framework chama de beans

todas as classes que gerencia. As classes

precisam ser declaradas utilizando o

elemento <bean>

O Arquivo ApplicationContext.xml(Inclusão de Dependência)

Page 43: Spring & Struts

<bean id=”identificador do bean” class=”FQN da classe que implementa o bean” >

<property name=”nome do atributo” ref=”id do bean que satisfaz a dependência”/>

</bean>

FQN significa Fully-Qualified Name, ou nome completo. O FQN de uma classe é o nome da classe com oseu pacote completo. Por exemplo, o FQN da classe String é java.lang.String, o FQN da classeList é java.util.List.

Page 44: Spring & Struts

No exemplo, declaramos os beans computadorBean, impressoraBean, monitorBean e tecladoBean.

O bean computadorBean possui como atributos referências para os outros beans e estas referências sãodeclaradas utilizando elementos property dentro da declaração do bean.

Ao utilizar o elemento property, o Spring irá tentar utilizar um método setNomeDoAtributo() parapreencher o bean com a dependência configurada.Muitas vezes, para não quebrar a invariante de um objeto é necessário que suas dependências sejam supridas durante a inicialização deste. Para estes casos, o Spring oferece a possibilidade de injetar as dependências utilizando o construtor do objeto ao invés de seus métodos mutadores (setters).

O Arquivo ApplicationContext.xml(Inclusão de Dependência)


Top Related