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
...MAS PRIMEIRO...
MVCModel-View-Controller
Introdução
• Códigos suscetíveis a mudança.• Lógica acoplada firmemente à interface.
• Solução:– Dividir a aplicação.
• Model• View• Controller
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.
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.
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.
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.
Struts
Framework padrão WEB
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
Entendedo 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
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
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
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
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.
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
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.
Example.xml
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
• J2EE
• Aplicações de grande porte
• Reduzir este problema
• MVC
Utilização
• Padrões de Desenvolvimento
• Dependency Injection
• Inversion of Control
Conceitos Básicos
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)
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)
Vamos implementar o seguinte sistema de classes Normalmente e depois implementaremos Spring no Sistema.
Exemplo Codificação(Inclusão de Dependência)
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)
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!
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)
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
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!
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)
<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.
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)