PRING TRUTS
...MAS PRIMEIRO...
MVC Model-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
SPRING
Utilização J2EE Aplicações de grande porte Reduzir este problema MVC
Conceitos Básicos Padrões de Desenvolvimento Dependency Injection Inversion of Control
Inversion of Control  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. http://pt.wikipedia.com/ Dependency_Injection (Inversão de Controle)
Dependency Injection No Spring o container se encarrega de &quot;instanciar&quot; 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. http://pt.wikipedia.com/ Dependency_Injection (Inclusão de Dependência)
Exemplo Codificação Vamos implementar o seguinte sistema de classes Normalmente e depois implementaremos Spring no Sistema. (Inclusão de Dependência)
Exemplo Codificação 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(&quot;Digite texto para impressão&quot;); String texto = teclado.ler(); impressora .imprimir(texto); monitor .exibeMensagem(&quot;Texto Impresso!&quot;); } } (Inclusão de Dependência)
Exemplo Codificação public class  Impressora { public void imprimir(String texto) { System.out.println(&quot;[IMPRESSORA] &quot; + texto); } } (Inclusão de Dependência) public class  Monitor { public void exibeMensagem(String mensagem) { System.out.println(&quot;[MONITOR] &quot;+mensagem); } } public class  Teclado { public String  ler() { String texto =  null ; System.out.print(&quot;[TECLADO]>&quot;); try  { texto = new BufferedReader(new InputStreamReader(System.in)) .readLine(); }  catch  (IOException e) { System.out.println(&quot;Erro lendo teclado!&quot;); 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!
Dependency Injection 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: (Inclusão de Dependência)
Exemplo Codificação (Inclusão de Dependência) <?xml version= &quot;1.0&quot;  encoding= &quot;UTF-8&quot; ?> <!DOCTYPE beans PUBLIC  &quot;-//SPRING//DTD BEAN//EN&quot; &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot; > <beans> <bean id=“ computadorBean ” class=“ pacoteBase.Computador ”> <property name=&quot; impressora &quot; ref=“ impressoraBean “/> <property name=&quot; teclado &quot; ref=“ tecladoBean “/> <property name=&quot; monitor “ ref=&quot; monitorBean “/> </bean> <bean id=“ impressoraBean “ class=“ pacoteBase.Impressora “/> <bean id=“ tecladoBean “ class=“ pacoteBase.Teclado “/> <bean id=“ monitorBean “ class=“ pacoteBase.Monitor “/> </beans> Classes Atributos
Exemplo Codificação E para testar nosso exemplo utilizando Spring podemos utilizar a classe abaixo: public class  IniciaUsandoSpring { public static void  main(String[] args) { ApplicationContext applicationContext =  new ClassPathXmlApplicationContext(“ classpath:pacoteBase/applicationContext.xml &quot;); Computador computador = (Computador) applicationContext.getBean(&quot; computadorBean &quot;); computador.ligar(); } } (Inclusão de Dependência) /*Saida no Console*/ [MONITOR] Digite texto para impressão [TECLADO]>  Teste [IMPRESSORA] Teste [MONITOR]  Texto Impresso!
O Arquivo ApplicationContext.xml 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> (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 o seu pacote completo. Por exemplo, o FQN da classe  String  é  java.lang.String , o FQN da classe List  é  java.util.List .
O Arquivo ApplicationContext.xml 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ão declaradas utilizando elementos property dentro da declaração do bean. Ao utilizar o elemento property, o Spring irá tentar utilizar um método set NomeDoAtributo () para preencher 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). (Inclusão de Dependência)

Spring & Struts

  • 1.
  • 2.
  • 3.
  • 4.
    Introdução Códigos suscetíveisa mudança. Lógica acoplada firmemente à interface. Solução: Dividir a aplicação. Model View Controller
  • 5.
    Model Representa osdados 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.
  • 6.
    View Detalhes daimplementaçã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 .
  • 7.
    Controller Detalhes sobrea 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 .
  • 8.
  • 9.
    Model 2 Ligeiramodificaçã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.
  • 10.
  • 11.
    Apresentação do FrameworkOs 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
  • 12.
  • 13.
    O que baixarpara 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
  • 14.
    Como instalar Descompacteo 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
  • 15.
  • 16.
  • 17.
    Para fazer suapró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
  • 18.
  • 19.
    Vantagens do StrutsO 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
  • 20.
    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.
  • 21.
    Solução Com oproblema 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
  • 22.
    Exemplo de ProjetoStruts 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.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
    Conclusão O Strutsfacilita o desenvolvimento de aplicações WEB. A versão 2.0 tem bastante ferramentas inovadoras. Deve ser estudado com afinco pois é muito abrangente
  • 31.
  • 32.
    Utilização J2EE Aplicaçõesde grande porte Reduzir este problema MVC
  • 33.
    Conceitos Básicos Padrõesde Desenvolvimento Dependency Injection Inversion of Control
  • 34.
    Inversion of Control 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. http://pt.wikipedia.com/ Dependency_Injection (Inversão de Controle)
  • 35.
    Dependency Injection NoSpring o container se encarrega de &quot;instanciar&quot; 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. http://pt.wikipedia.com/ Dependency_Injection (Inclusão de Dependência)
  • 36.
    Exemplo Codificação Vamosimplementar o seguinte sistema de classes Normalmente e depois implementaremos Spring no Sistema. (Inclusão de Dependência)
  • 37.
    Exemplo Codificação publicclass 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(&quot;Digite texto para impressão&quot;); String texto = teclado.ler(); impressora .imprimir(texto); monitor .exibeMensagem(&quot;Texto Impresso!&quot;); } } (Inclusão de Dependência)
  • 38.
    Exemplo Codificação publicclass Impressora { public void imprimir(String texto) { System.out.println(&quot;[IMPRESSORA] &quot; + texto); } } (Inclusão de Dependência) public class Monitor { public void exibeMensagem(String mensagem) { System.out.println(&quot;[MONITOR] &quot;+mensagem); } } public class Teclado { public String ler() { String texto = null ; System.out.print(&quot;[TECLADO]>&quot;); try { texto = new BufferedReader(new InputStreamReader(System.in)) .readLine(); } catch (IOException e) { System.out.println(&quot;Erro lendo teclado!&quot;); 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!
  • 39.
    Dependency Injection Parafazer 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: (Inclusão de Dependência)
  • 40.
    Exemplo Codificação (Inclusãode Dependência) <?xml version= &quot;1.0&quot; encoding= &quot;UTF-8&quot; ?> <!DOCTYPE beans PUBLIC &quot;-//SPRING//DTD BEAN//EN&quot; &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot; > <beans> <bean id=“ computadorBean ” class=“ pacoteBase.Computador ”> <property name=&quot; impressora &quot; ref=“ impressoraBean “/> <property name=&quot; teclado &quot; ref=“ tecladoBean “/> <property name=&quot; monitor “ ref=&quot; monitorBean “/> </bean> <bean id=“ impressoraBean “ class=“ pacoteBase.Impressora “/> <bean id=“ tecladoBean “ class=“ pacoteBase.Teclado “/> <bean id=“ monitorBean “ class=“ pacoteBase.Monitor “/> </beans> Classes Atributos
  • 41.
    Exemplo Codificação Epara testar nosso exemplo utilizando Spring podemos utilizar a classe abaixo: public class IniciaUsandoSpring { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“ classpath:pacoteBase/applicationContext.xml &quot;); Computador computador = (Computador) applicationContext.getBean(&quot; computadorBean &quot;); computador.ligar(); } } (Inclusão de Dependência) /*Saida no Console*/ [MONITOR] Digite texto para impressão [TECLADO]> Teste [IMPRESSORA] Teste [MONITOR] Texto Impresso!
  • 42.
    O Arquivo ApplicationContext.xmlO 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> (Inclusão de Dependência)
  • 43.
    <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 o seu pacote completo. Por exemplo, o FQN da classe String é java.lang.String , o FQN da classe List é java.util.List .
  • 44.
    O Arquivo ApplicationContext.xmlNo 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ão declaradas utilizando elementos property dentro da declaração do bean. Ao utilizar o elemento property, o Spring irá tentar utilizar um método set NomeDoAtributo () para preencher 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). (Inclusão de Dependência)