Conhecendo o Struts 2 <ul><ul><li>Jaime Schettini </li></ul></ul>
Agenda de apresentação <ul><li>Histórico </li></ul><ul><li>Arquitetura </li></ul><ul><li>Dependências </li></ul><ul><li>Es...
Histórico <ul><li>Struts é um framework baseado na arquitetura MVC </li></ul><ul><li>Novos frameworks: Spring, Stripes and...
Arquitetura
Dependências <ul><li>Servlet API 2.4 </li></ul><ul><li>JSP API 2.0 </li></ul><ul><li>Java 5 </li></ul>
Estrutura da aplicação
Arquivos de configuração <ul><li>WEB-INF/web.xml </li></ul><ul><li>WEB-INF/classes/struts.xml </li></ul>
Configuração <ul><li>web.xml </li></ul><ul><li>Define informações que um servidor precisa saber sobre a aplicação </li></u...
Configurando o web.xml <ul><li><web-app> </li></ul><ul><li><display-name> Struts 2 - Exemplo </display-name> </li></ul><ul...
Página de boas vindas <ul><li>web.xml </li></ul><ul><li><welcome-file-list> </li></ul><ul><li><welcome-file> index.htm l</...
Struts.xml e actions <ul><li>Action: contém código que nós queremos que seja executado antes de uma página renderizar a re...
Configurando o struts.xml <ul><li><struts> </li></ul><ul><li><include file= &quot; struts-default.xm l&quot; /> </li></ul>...
A propriedade result <ul><li>URL= 'boas-vindas.action' </li></ul><ul><li>Action: </li></ul><ul><li><action name= &quot;boa...
Action e parâmetros <ul><li>Action sem parâmetro: </li></ul><ul><li>boas-vindas.action </li></ul><ul><li>Método: </li></ul...
Tipos de resultado <ul><li>Os tipos de resultado são sempre uma  String , normalmente uma constante. Vários tipos de resul...
Observação <ul><li>O result name 'success' é o result padrão, podendo ser omitido na configuração da action </li></ul><ul>...
Results globais <ul><li>Nesse caso, o result 'error' está definido em um escopo global. Podem ocorrer problemas com qualqu...
Fluxo de uma requisição
Action com vários métodos <ul><li>struts.xml </li></ul><ul><li><action name= &quot;usuario!*&quot;   method= &quot;{1}&quo...
Redirecionando actions <ul><li><action name= &quot;usuario!*&quot;   method= &quot;{1}&quot;   </li></ul><ul><li>class= &q...
Observação <ul><li>Para permitir o uso de símbolos diferentes do '!' é preciso desabilitar uma opção nas propriedades do s...
Interceptors <ul><li>Objetos utilizados para execução de código antes e depois de Actions </li></ul><ul><li>Adiciona funci...
Tags html <ul><li>Até agora nós informamos qual ação nós queremos que a action faça (listar usuários, por exemplo), mas o ...
Exemplo com tags html
Exemplo usando tags do Struts
Mais informações <ul><li>http://struts.apache.org/2.x/ </li></ul><ul><li>Revista Mundo Java – nº 22 </li></ul><ul><li>Revi...
Upcoming SlideShare
Loading in …5
×

Conhecendo o Struts 2 - Java Tech Day 2007

3,625 views

Published on

Palestra apresentada por mim no Java Tech Day de Belém-PA em abril de 2007.
--
Presentation at Java Tech Day in april 2007. Belém-PA-Brazil.

Published in: Technology, Education
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,625
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
106
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Conhecendo o Struts 2 - Java Tech Day 2007

  1. 1. Conhecendo o Struts 2 <ul><ul><li>Jaime Schettini </li></ul></ul>
  2. 2. Agenda de apresentação <ul><li>Histórico </li></ul><ul><li>Arquitetura </li></ul><ul><li>Dependências </li></ul><ul><li>Estrutura do projeto </li></ul><ul><li>Configuração </li></ul><ul><li>Como utilizar? </li></ul><ul><li>Criando um projeto </li></ul><ul><li>Conclusão </li></ul>
  3. 3. Histórico <ul><li>Struts é um framework baseado na arquitetura MVC </li></ul><ul><li>Novos frameworks: Spring, Stripes and Tapestry </li></ul><ul><li>União do Struts com o WebWork – arquitetura semelhante </li></ul><ul><li>Muitas funcionalidades do WebWork 2.2 </li></ul><ul><li>Struts 2: extensível e de fácil integração com Ajax </li></ul>
  4. 4. Arquitetura
  5. 5. Dependências <ul><li>Servlet API 2.4 </li></ul><ul><li>JSP API 2.0 </li></ul><ul><li>Java 5 </li></ul>
  6. 6. Estrutura da aplicação
  7. 7. Arquivos de configuração <ul><li>WEB-INF/web.xml </li></ul><ul><li>WEB-INF/classes/struts.xml </li></ul>
  8. 8. Configuração <ul><li>web.xml </li></ul><ul><li>Define informações que um servidor precisa saber sobre a aplicação </li></ul><ul><li>Nele é configurado o dispatcher </li></ul><ul><li>Dispatcher </li></ul><ul><li>Recebe todas as requisições da aplicação e faz a ligação entre essas requisições e uma determinada action </li></ul>
  9. 9. Configurando o web.xml <ul><li><web-app> </li></ul><ul><li><display-name> Struts 2 - Exemplo </display-name> </li></ul><ul><li><filter> </li></ul><ul><li><filter-name> struts </filter-name> </li></ul><ul><li><filter-class> </li></ul><ul><li>org.apache.struts2.dispatcher.FilterDispatcher </li></ul><ul><li></filter-class> </li></ul><ul><li></filter> </li></ul><ul><li><filter-mapping> </li></ul><ul><li><filter-name> struts </filter-name> </li></ul><ul><li><url-pattern> /* </url-pattern> </li></ul><ul><li></filter-mapping> </li></ul><ul><li></web-app> </li></ul>
  10. 10. Página de boas vindas <ul><li>web.xml </li></ul><ul><li><welcome-file-list> </li></ul><ul><li><welcome-file> index.htm l</welcome-file> </li></ul><ul><li></welcome-file-list> </li></ul><ul><li>index.html </li></ul><ul><li><!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; > </li></ul><ul><li><html> </li></ul><ul><li><head> </li></ul><ul><li><META HTTP-EQUIV= &quot;Refresh&quot; CONTENT= &quot;0;URL=boas- </li></ul><ul><li>vindas.action&quot; > </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><p> Carregando... </p> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  11. 11. Struts.xml e actions <ul><li>Action: contém código que nós queremos que seja executado antes de uma página renderizar a resposta </li></ul><ul><li>As actions são definidas em arquivos de configuração </li></ul><ul><li>Ao carregar a aplicação, o arquivo struts.xml é lido para que o framework possa mapear a requisição para uma determinada página em uma determinada action. </li></ul>
  12. 12. Configurando o struts.xml <ul><li><struts> </li></ul><ul><li><include file= &quot; struts-default.xm l&quot; /> </li></ul><ul><li><package name= &quot;default&quot; extends= &quot;struts-default &quot; > </li></ul><ul><li><action name= &quot;boas-vindas“ </li></ul><ul><li>class= &quot;br.com.versatiliti.BoasVindasAction&quot; > </li></ul><ul><li><result> /jsp/boas-vindas.jsp </result> </li></ul><ul><li></action> </li></ul><ul><li><action name= &quot;usuario!*&quot; method= &quot;{1}&quot; </li></ul><ul><li>class= &quot;br.com.versatiliti.UsuarioAction&quot; > </li></ul><ul><li><result name= &quot;form&quot; > /jsp/usuario/form.jsp </result> </li></ul><ul><li><result name= &quot;cancel&quot; type= &quot;redirect-action&quot; > </li></ul><ul><li>boas-vindas </li></ul><ul><li></result> </li></ul><ul><li><result> /jsp/usuario/list.jsp </result> </li></ul><ul><li></action> </li></ul><ul><li><global-results> </li></ul><ul><li><result name= &quot;error&quot; > /jsp/Error.jsp </result> </li></ul><ul><li></global-results> </li></ul><ul><li></package> </li></ul><ul><li></struts> </li></ul>
  13. 13. A propriedade result <ul><li>URL= 'boas-vindas.action' </li></ul><ul><li>Action: </li></ul><ul><li><action name= &quot;boas-vindas&quot; class= &quot;br.com.versatiliti.BoasVindasAction&quot; > </li></ul><ul><li><result> /jsp/boas-vindas.jsp </result> </li></ul><ul><li></action> </li></ul><ul><li>Método: </li></ul><ul><li>public String execute() throws Exception { </li></ul><ul><li>return SUCCESS ; </li></ul><ul><li>} </li></ul>
  14. 14. Action e parâmetros <ul><li>Action sem parâmetro: </li></ul><ul><li>boas-vindas.action </li></ul><ul><li>Método: </li></ul><ul><li>public String execute() throws Exception { </li></ul><ul><li>return SUCCESS ; </li></ul><ul><li>} </li></ul><ul><li>Action com parâmetro </li></ul><ul><li>boas-vindas! sair .action </li></ul><ul><li>Método: </li></ul><ul><li>public String sair() { </li></ul><ul><li>return CANCEL ; </li></ul><ul><li>} </li></ul>
  15. 15. Tipos de resultado <ul><li>Os tipos de resultado são sempre uma String , normalmente uma constante. Vários tipos de resultado já estão definidos na interface Action, como ERROR, SUCCESS, LOGIN, NONE e INPUT. Esses tipos podem ser usados na aplicação, ou pode-se criar outros. </li></ul>
  16. 16. Observação <ul><li>O result name 'success' é o result padrão, podendo ser omitido na configuração da action </li></ul><ul><li>Action: </li></ul><ul><li><action name= &quot;boas-vindas&quot; class= &quot;br.com.versatiliti.BoasVindasAction&quot; > </li></ul><ul><li><result> /jsp/boas-vindas.jsp </result> </li></ul><ul><li></action> </li></ul><ul><li>é a mesma coisa que: </li></ul><ul><li><action name= &quot;boas-vindas&quot; class= &quot;br.com.versatiliti.BoasVindasAction&quot; > </li></ul><ul><li><result name= ”success” > /jsp/boas-vindas.jsp </result> </li></ul><ul><li></action> </li></ul>
  17. 17. Results globais <ul><li>Nesse caso, o result 'error' está definido em um escopo global. Podem ocorrer problemas com qualquer outra action, e elas podem usar o result global quando ela quiser. </li></ul><ul><li><global-results> </li></ul><ul><li><result name= &quot;error&quot; > /jsp/Error.jsp </result> </li></ul><ul><li></global-results> </li></ul><ul><li>Se uma action definir um result chamado 'error' dentro do seu escopo, é esse result que será usado em caso de erro ao invés do result global. </li></ul>
  18. 18. Fluxo de uma requisição
  19. 19. Action com vários métodos <ul><li>struts.xml </li></ul><ul><li><action name= &quot;usuario!*&quot; method= &quot;{1}&quot; </li></ul><ul><li>class= &quot;br.com.versatiliti.UsuarioAction&quot; > </li></ul><ul><li><result name= &quot;form&quot; > /jsp/usuario/form.jsp </result> </li></ul><ul><li><result name= &quot;list&quot; > /jsp/usuario/list.jsp </result> </li></ul><ul><li><result name= &quot;success&quot; > /jsp/usuario/list.jsp </result> </li></ul><ul><li></action> </li></ul><ul><ul><li>public String execute() { </li></ul></ul><ul><ul><li>return SUCCESS ; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public String list() { </li></ul></ul><ul><ul><li>usuarioService.findAll(); </li></ul></ul><ul><ul><li>return &quot;list&quot; ; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public String input() { </li></ul></ul><ul><ul><li>Usuario usuario = new Usuario(); </li></ul></ul><ul><ul><li>return “form” ; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public String save() { </li></ul></ul><ul><ul><li>usuarioService.insert(usuario); </li></ul></ul><ul><ul><li>return SUCCESS ; </li></ul></ul><ul><ul><li>} </li></ul></ul>_______________________________________________________________ UsuarioAction.java
  20. 20. Redirecionando actions <ul><li><action name= &quot;usuario!*&quot; method= &quot;{1}&quot; </li></ul><ul><li>class= &quot;br.com.versatiliti.UsuarioAction&quot; > </li></ul><ul><li><result name= &quot;form&quot; > /usuario/form.jsp </result> </li></ul><ul><li><result name= &quot;list&quot; > /usuario/list.jsp </result> </li></ul><ul><li><result name= &quot;success&quot; > /usuario/listar.jsp </result> </li></ul><ul><li><result name= &quot;cancel&quot; type= &quot;redirect-action&quot; > </li></ul><ul><li>boas-vindas </li></ul><ul><li></result> </li></ul><ul><li></action> </li></ul><ul><li><action name= &quot; boas-vindas &quot; class= &quot;br.com.versatiliti.BoasVindasAction&quot; > </li></ul><ul><li><result> /jsp/boas-vindas.jsp </result> </li></ul><ul><li></action> </li></ul>
  21. 21. Observação <ul><li>Para permitir o uso de símbolos diferentes do '!' é preciso desabilitar uma opção nas propriedades do struts: </li></ul><ul><li>struts.properties </li></ul><ul><li>struts.enable.DynamicMethodInvocation = false </li></ul><ul><li>A extenção padrão para actions no Struts 2 é '.action'. Para mudar essa configuração e definir sua própria extenção, é preciso mudar o arquivo de configuração do Struts. </li></ul><ul><li>struts.properties </li></ul><ul><li>struts.action.extension = .nova_extencao </li></ul>
  22. 22. Interceptors <ul><li>Objetos utilizados para execução de código antes e depois de Actions </li></ul><ul><li>Adiciona funcionalidades sem mexer na Action </li></ul><ul><li>Utilizado para desacoplamento de código: autenticação, validação, etc </li></ul><ul><li>Existem diversos interceptors prontos para uso, mas pode-se criar um novo implementando a interface Interceptor </li></ul>
  23. 23. Tags html <ul><li>Até agora nós informamos qual ação nós queremos que a action faça (listar usuários, por exemplo), mas o conteúdo ainda não foi mostrado na jsp. </li></ul><ul><li>O Struts tem diversas tags html. É com o auxílio dessas tags que nós vamos mostrar o conteúdo no navegador. </li></ul><ul><li>Os atributos de classe definidos nas actions são disponibilizados para a página através de seus métodos de acesso (get e set). </li></ul>
  24. 24. Exemplo com tags html
  25. 25. Exemplo usando tags do Struts
  26. 26. Mais informações <ul><li>http://struts.apache.org/2.x/ </li></ul><ul><li>Revista Mundo Java – nº 22 </li></ul><ul><li>Revista Java Magazine – nº 41 </li></ul>

×