44

Spring & Struts

  • Upload
    eduan

  • View
    3.492

  • Download
    2

Embed Size (px)

DESCRIPTION

Olá, encontrei dificuldades para achar um conteúdo sobre Spring e Struts em português, acho que esse será uma grande apoio para quem anda pesquisando sobre isso, por favor qualquer duvida entrem em contato comigo, pois será uma prazer ajudar

Citation preview

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)