Lato Sensu em
                               Sistemas Orientados a Objetos




                       Módulo 4.2
         ...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                                                    Desenvolvimento de Aplicaõ...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/...
Lato Sensu em Sistemas Orientados a Objetos
                                      Desenvolvimento de Aplicaões Web Avançad...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/200...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                             Desenvolvimento de Aplicaões Web Avançado - 1°/20...
Lato Sensu em Sistemas Orientados a Objetos
                        Desenvolvimento de Aplicaões Web Avançado - 1°/2009


...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                           Desenvolvimento de Aplicaões Web Avançado - 1°/2009...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                           Desenvolvimento de Aplicaões Web Avançado - 1°/2009...
Lato Sensu em Sistemas Orientados a Objetos
                           Desenvolvimento de Aplicaões Web Avançado - 1°/2009...
Lato Sensu em Sistemas Orientados a Objetos
                                  Desenvolvimento de Aplicaões Web Avançado - ...
Lato Sensu em Sistemas Orientados a Objetos
                                      Desenvolvimento de Aplicaões Web Avançad...
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/200...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                                           Desenvolvimento de Aplicaões Web Av...
Lato Sensu em Sistemas Orientados a Objetos
                                           Desenvolvimento de Aplicaões Web Av...
Lato Sensu em Sistemas Orientados a Objetos
                                            Desenvolvimento de Aplicaões Web A...
Lato Sensu em Sistemas Orientados a Objetos
                                            Desenvolvimento de Aplicaões Web A...
Lato Sensu em Sistemas Orientados a Objetos
                                            Desenvolvimento de Aplicaões Web A...
Lato Sensu em Sistemas Orientados a Objetos
                                               Desenvolvimento de Aplicaões We...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Ava...
Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Ava...
Lato Sensu em Sistemas Orientados a Objetos
                                          Desenvolvimento de Aplicaões Web Ava...
Lato Sensu em Sistemas Orientados a Objetos
                                           Desenvolvimento de Aplicaões Web Av...
Lato Sensu em Sistemas Orientados a Objetos
                         Desenvolvimento de Aplicaões Web Avançado - 1°/2009

...
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/...
Lato Sensu em Sistemas Orientados a Objetos
                                  Desenvolvimento de Aplicaões Web Avançado - ...
Friday, May 22, 2009
setUsuario(“alegomes”);
                         setSenha(“123456”);




Friday, May 22, 2009
setUsuario(“alegomes”);
                         setSenha(“123456”);




Friday, May 22, 2009
Friday, May 22, 2009
Friday, May 22, 2009
Friday, May 22, 2009
Lato Sensu em Sistemas Orientados a Objetos
                                     Desenvolvimento de Aplicaões Web Avançado...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                        Desenvolvimento de Aplicaões Web Avançado - 1°/2009


...
http://
servidor/
   app/
  action




                       login.jsp menu.jsp




Friday, May 22, 2009
struts.xml
<action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;>
   ...
struts.xml
<action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;>
   ...
senha
                                                                                  correta




                      ...
senha
                                                                        errada




                       <title>Tel...
<h1>Seja bem vindo, <s:property value=quot;usuarioquot; />.</h1>




Friday, May 22, 2009
<h1>Seja bem vindo, <s:property value=quot;usuarioquot; />.</h1>




Friday, May 22, 2009
<s:form action=quot;login_autenticarquot;>
                         <s:textfield label=quot;Loginquot; name=quot;usuarioqu...
Friday, May 22, 2009
Friday, May 22, 2009
Friday, May 22, 2009
Friday, May 22, 2009
mais infos...




Friday, May 22, 2009
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/200...
http://
servidor/
   app/
  action




                       login.vt menu.jsp




Friday, May 22, 2009
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/...
Lato Sensu em Sistemas Orientados a Objetos
                                           Desenvolvimento de Aplicaões Web Av...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                                              Desenvolvimento de Aplicaões Web...
Lato Sensu em Sistemas Orientados a Objetos
                                Desenvolvimento de Aplicaões Web Avançado - 1°...
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/200...
http://
servidor/
   app/
  action




Friday, May 22, 2009
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/...
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 1°/...
Lato Sensu em Sistemas Orientados a Objetos
                                              Desenvolvimento de Aplicaões Web...
Lato Sensu em Sistemas Orientados a Objetos
                                            Desenvolvimento de Aplicaões Web A...
Lato Sensu em Sistemas Orientados a Objetos
                                              Desenvolvimento de Aplicaões Web...
Lato Sensu em Sistemas Orientados a Objetos
                                                                 Desenvolvimen...
Lato Sensu em Sistemas Orientados a Objetos
                                             Desenvolvimento de Aplicaões Web ...
Lato Sensu em Sistemas Orientados a Objetos
                                   Desenvolvimento de Aplicaões Web Avançado -...
Lato Sensu em Sistemas Orientados a Objetos
                                    Desenvolvimento de Aplicaões Web Avançado ...
Lato Sensu em Sistemas Orientados a Objetos
                             Desenvolvimento de Aplicaões Web Avançado - 1°/20...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Lato Sensu em Sistemas Orientados a Objetos
                            Desenvolvimento de Aplicaões Web Avançado - 1°/200...
Friday, May 22, 2009
Friday, May 22, 2009
Ambos os sites propõem
                       classes da apoio aos testes




Friday, May 22, 2009
Friday, May 22, 2009
// create action context for my action, feed
 // into the action context all request parameters
 Map requestParameters = n...
Lato Sensu em Sistemas Orientados a Objetos
                                                          Desenvolvimento de A...
Lato Sensu em Sistemas Orientados a Objetos
                                   Desenvolvimento de Aplicaões Web Avançado -...
Lato Sensu em Sistemas Orientados a Objetos
                                                        Desenvolvimento de Apl...
Lato Sensu em Sistemas Orientados a Objetos
                                       Desenvolvimento de Aplicaões Web Avança...
Lato Sensu em Sistemas Orientados a Objetos
                                                     Desenvolvimento de Aplica...
Lato Sensu em Sistemas Orientados a Objetos
                                     Desenvolvimento de Aplicaões Web Avançado...
Lato Sensu em Sistemas Orientados a Objetos
                                               Desenvolvimento de Aplicaões We...
<interceptor name=quot;validationquot;
             class=quot;org.apache.struts2.interceptor.validation.AnnotationValidat...
<interceptor name=quot;validationquot;
             class=quot;org.apache.struts2.interceptor.validation.AnnotationValidat...
Friday, May 22, 2009
<body>
                <s:form action=quot;login_autenticarquot; validate=quot;truequot;>
                  <s:textfield l...
<validators>
           
 <field name=quot;usuarioquot;>
           
 
 <field-validator type=quot;requiredstringquot;>
  ...
<validators>
           
 <field name=quot;usuarioquot;>
           
 
 <field-validator type=quot;requiredstringquot;>
  ...
<validators>
           
 <field name=quot;usuarioquot;>
           
 
 <field-validator type=quot;requiredstringquot;>
  ...
<validators>
           
 <field name=quot;usuarioquot;>
           
 
 <field-validator type=quot;requiredstringquot;>
  ...
<validators>
           
 <field name=quot;usuarioquot;>
           
 
 <field-validator type=quot;requiredstringquot;>
  ...
Friday, May 22, 2009
Lato Sensu em Sistemas Orientados a Objetos
                       Desenvolvimento de Aplicaões Web Avançado - 1°/2009



...
Friday, May 22, 2009




                       http://cwiki.apache.org/confluence/display/WW/Big+Picture
Lato Sensu em Sistemas Orientados a Objetos
                                                          Desenvolvimento de A...
Lato Sensu em Sistemas Orientados a Objetos
                                             Desenvolvimento de Aplicaões Web ...
Lato Sensu em
                                  Sistemas Orientados a Objetos




                   Q&A MSc. Alexandre Go...
Upcoming SlideShare
Loading in...5
×

Struts 2.x

2,855

Published on

Material (incompleto) das aulas de Struts 2.x ministradas no curso de especialização em Sistemas Orientados a Objetos da Universidade Católica de Brasília.

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,855
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
338
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Struts 2.x

  1. 1. Lato Sensu em Sistemas Orientados a Objetos Módulo 4.2 Struts 2 Friday, May 22, 2009
  2. 2. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  3. 3. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 4 1. 2 x k x or 2. x 0. .2 1. W s 2. ts t ts eb k W u ru or ru bW r W St St St e 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 Friday, May 22, 2009
  4. 4. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  5. 5. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts 2 objetivo simplificar o desenvolvimento web Friday, May 22, 2009
  6. 6. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts 2 objetivo Redução do XML convenção sobre configuração anotações Actions são POJOs melhor testabilidade bind automático de parâmetros HTTP Friday, May 22, 2009
  7. 7. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts 2 novidades Interceptadores pré e pós-processamento Extensibilidade plugins Result Types JSP, Velocity, Freemarker Injeção de dependências Spring, Plexus, PicoContainer Friday, May 22, 2009
  8. 8. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 In a nutshell Friday, May 22, 2009
  9. 9. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action Friday, May 22, 2009
  10. 10. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action struts.xml Friday, May 22, 2009
  11. 11. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action ActionTeste.java Friday, May 22, 2009
  12. 12. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action ok.jsp Friday, May 22, 2009
  13. 13. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  14. 14. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  15. 15. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 XML mapeia POJO comum Friday, May 22, 2009
  16. 16. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 método execute() obrigatório qdo nenhuma configuração é feita no XML Friday, May 22, 2009
  17. 17. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 o retorno do método execute() revela o resultado da Action Friday, May 22, 2009
  18. 18. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Action e struts.xml libs web.xml *.html *.jsp Friday, May 22, 2009
  19. 19. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 At a glance Friday, May 22, 2009
  20. 20. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action Friday, May 22, 2009
  21. 21. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ app/ action ? Friday, May 22, 2009
  22. 22. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts 1.x Friday, May 22, 2009
  23. 23. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts 1.x ? Friday, May 22, 2009
  24. 24. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 http:// servidor/ FrontController! app/ action Friday, May 22, 2009
  25. 25. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Friday, May 22, 2009
  26. 26. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Friday, May 22, 2009
  27. 27. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions http://localhost:8080/app/entrar LoginAction.execute() Friday, May 22, 2009
  28. 28. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions http://localhost:8080/app/entrar LoginAction.execute() Friday, May 22, 2009
  29. 29. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions http://localhost:8080/app/entrar LoginAction.execute() <action name=quot;entrarquot; class=quot;xpto.LoginActionquot;/> Friday, May 22, 2009
  30. 30. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions http://localhost:8080/app/entrar ControleDeAcessoAction.login() <action name=quot;entrarquot; method=quot;loginquot; class=quot;xpto.ControleDeAcessoActionquot;/> Friday, May 22, 2009
  31. 31. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions http://localhost:8080/app/entrar ControleDeAcessoAction.login() <action name=quot;entrarquot; method=quot;loginquot; class=quot;xpto.ControleDeAcessoActionquot;/> Friday, May 22, 2009
  32. 32. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/acesso_login ControleDeAcessoAction.login() Friday, May 22, 2009
  33. 33. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/acesso_login ControleDeAcessoAction.login() Friday, May 22, 2009
  34. 34. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/acesso_login ControleDeAcessoAction.login() Friday, May 22, 2009
  35. 35. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/acesso_login ControleDeAcessoAction.login() <action name=quot;acesso_ *quot; method=quot; {1}quot; class=quot;xpto.ControleDeAcessoActionquot;/> Friday, May 22, 2009
  36. 36. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  37. 37. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  38. 38. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/Usuario/edit UsuarioAction.edit() Friday, May 22, 2009
  39. 39. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/Usuario/edit UsuarioAction.edit() Friday, May 22, 2009
  40. 40. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/Usuario/edit UsuarioAction.edit() Friday, May 22, 2009
  41. 41. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Estratégia de Mapeamento de Actions Patterns Matching http://localhost:8080/app/Usuario/edit UsuarioAction.edit() <action name=quot; */*quot; method=quot; {2}quot; class=quot;xpto. {1}Actionquot;/> Friday, May 22, 2009
  42. 42. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Binding Friday, May 22, 2009
  43. 43. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Dados de Requisição usuario=alegomes senha=123456 Friday, May 22, 2009
  44. 44. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Nada de ActionForms! bind automático Friday, May 22, 2009
  45. 45. Friday, May 22, 2009
  46. 46. setUsuario(“alegomes”); setSenha(“123456”); Friday, May 22, 2009
  47. 47. setUsuario(“alegomes”); setSenha(“123456”); Friday, May 22, 2009
  48. 48. Friday, May 22, 2009
  49. 49. Friday, May 22, 2009
  50. 50. Friday, May 22, 2009
  51. 51. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Testabilidade Como Actions são POJOS, nenhuma infra-estrutura mágica é necessária para implementação de testes unitários. Friday, May 22, 2009
  52. 52. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  53. 53. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Tags Friday, May 22, 2009
  54. 54. http:// servidor/ app/ action login.jsp menu.jsp Friday, May 22, 2009
  55. 55. struts.xml <action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;> <result name=quot;loginOKquot;>menu.jsp</result> <result name=quot;loginNOKquot;>login.jsp</result> </action> LoginAction.java public class LoginAction { public static final String USUARIO_ESPERADO = quot;alegomesquot;; public static final String SENHA_ESPERADA = quot;123456quot;; private String usuario; private String senha; public String autenticar() { if (USUARIO_ESPERADO.equals(usuario) && SENHA_ESPERADA.equals(senha)) { return quot;loginOKquot;; } else { return quot;loginNOKquot;; } } //Gets e Sets } Friday, May 22, 2009
  56. 56. struts.xml <action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;> <result name=quot;loginOKquot;>menu.jsp</result> <result name=quot;loginNOKquot;>login.jsp</result> </action> LoginAction.java public class LoginAction { public static final String USUARIO_ESPERADO = quot;alegomesquot;; public static final String SENHA_ESPERADA = quot;123456quot;; private String usuario; private String senha; public String autenticar() { if (USUARIO_ESPERADO.equals(usuario) && SENHA_ESPERADA.equals(senha)) { return quot;loginOKquot;; } else { return quot;loginNOKquot;; } } //Gets e Sets } Friday, May 22, 2009
  57. 57. senha correta <title>Menu do Sistema</title> </head> <body> <h1>Seja bem vindo.</h1> Escolha uma das abaixo. <ul> <li><a href=quot;servico_f1quot;>Funcionalidade 1</a></li> <li><a href=quot;servico_f1quot;>Funcionalidade 2</a></li> <li><a href=quot;servico_f1quot;>Funcionalidade 3</a></li> <li><a href=quot;servico_f1quot;>Funcionalidade 4</a></li> </ul> </body> </html> menu.jsp Friday, May 22, 2009
  58. 58. senha errada <title>Tela de Autenticação</title> </head> <body> <form action=quot;login_autenticarquot;> Login: <input type=quot;textquot; value=quot;quot;/><p/> Senha: <input type=quot;passwordquot; value=quot;quot;/><p/> <input type=quot;submitquot;/> </form> </body> login.jsp Friday, May 22, 2009
  59. 59. <h1>Seja bem vindo, <s:property value=quot;usuarioquot; />.</h1> Friday, May 22, 2009
  60. 60. <h1>Seja bem vindo, <s:property value=quot;usuarioquot; />.</h1> Friday, May 22, 2009
  61. 61. <s:form action=quot;login_autenticarquot;> <s:textfield label=quot;Loginquot; name=quot;usuarioquot;/> <s:password label=quot;Senhaquot; name=quot;senhaquot; /> <s:submit/> </s:form> Friday, May 22, 2009
  62. 62. Friday, May 22, 2009
  63. 63. Friday, May 22, 2009
  64. 64. Friday, May 22, 2009
  65. 65. Friday, May 22, 2009
  66. 66. mais infos... Friday, May 22, 2009
  67. 67. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Results & Result Types Friday, May 22, 2009
  68. 68. http:// servidor/ app/ action login.vt menu.jsp Friday, May 22, 2009
  69. 69. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Results implementação da Camada View Resposta da Action Friday, May 22, 2009
  70. 70. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Results login.jsp menu.jsp Velocity Freemarker XSTL Action Friday, May 22, 2009
  71. 71. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Result Types Velocity Freemarker XSTL <action name=quot;qqcoisa*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.QQActionquot;> <result name=quot;result1quot;>menu.jsp</result> <result name=quot;result1quot; type=”dispatcher”>some.jsp</result> <result name=quot;result2quot; type=”freemarker”>login.ftl</result> <result name=quot;result3quot; type=”velocity”>page.vt</result> </action> Friday, May 22, 2009
  72. 72. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Result Types customizados public interface Result extends Serializable { public void execute(ActionInvocation invocation) throws Exception; } <result-types> <result-type name=quot;dispatcherquot; default=quot;truequot; class=quot;seu.pacote.SuaClassequot;/> </result-types> Friday, May 22, 2009
  73. 73. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Dependency Injection Friday, May 22, 2009
  74. 74. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors Friday, May 22, 2009
  75. 75. http:// servidor/ app/ action Friday, May 22, 2009
  76. 76. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Revisão Intercepting Filters Friday, May 22, 2009
  77. 77. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Revisão Intercepting Filters interceptors action interceptors Friday, May 22, 2009
  78. 78. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors pra quê? Tratamento de exceção Evitar submit duplo Upload de arquivo Ciclo de vida Validações http://struts.apache.org/2.1.6/docs/interceptors.html Friday, May 22, 2009
  79. 79. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors <package name=quot;defaultquot; extends=quot;struts-defaultquot;> <interceptors> <interceptor name=quot;timerquot; class=quot;...quot;/> <interceptor name=quot;loggerquot; class=quot;...quot;/> </interceptors> <action name=quot;loginquot; class=quot;tutorial.Loginquot;> <interceptor-ref name=quot;timerquot;/> <interceptor-ref name=quot;loggerquot;/> <result name=quot;inputquot;>login.jsp</result> <result name=quot;successquot; type=quot;redirectActionquot;>/secure/home</result> </action> </package> Friday, May 22, 2009
  80. 80. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Pacotes de Interceptors <package name=quot;defaultquot; extends=quot;struts-defaultquot;> <interceptors> <interceptor name=quot;timerquot; class=quot;..quot;/> <interceptor name=quot;loggerquot; class=quot;..quot;/> <interceptor-stack name=quot;myStackquot;> <interceptor-ref name=quot;timerquot;/> <interceptor-ref name=quot;loggerquot;/> </interceptor-stack> </interceptors> <action name=quot;loginquot; class=quot;tutuorial.Loginquot;> <interceptor-ref name=quot;myStackquot;/> <result name=quot;inputquot;>login.jsp</result> <result name=quot;successquot; type=quot;redirectActionquot;>/secure/home</result> </action> </package> Friday, May 22, 2009
  81. 81. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors <interceptor name=quot;aliasquot; class=quot;com.opensymphony.xwork2.interceptor.AliasInterceptorquot;/> <interceptor name=quot;autowiringquot; class=quot;com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptorquot;/> <interceptor name=quot;chainquot; class=quot;com.opensymphony.xwork2.interceptor.ChainingInterceptorquot;/> <interceptor name=quot;conversionErrorquot; class=quot;org.apache.struts2.interceptor.StrutsConversionErrorInterceptorquot;/> <interceptor name=quot;clearSessionquot; class=quot;org.apache.struts2.interceptor.ClearSessionInterceptorquot; /> <interceptor name=quot;createSessionquot; class=quot;org.apache.struts2.interceptor.CreateSessionInterceptorquot; /> <interceptor name=quot;debuggingquot; class=quot;org.apache.struts2.interceptor.debugging.DebuggingInterceptorquot; /> <interceptor name=quot;externalRefquot; class=quot;com.opensymphony.xwork2.interceptor.ExternalReferencesInterceptorquot;/> <interceptor name=quot;execAndWaitquot; class=quot;org.apache.struts2.interceptor.ExecuteAndWaitInterceptorquot;/> <interceptor name=quot;exceptionquot; class=quot;com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptorquot;/> <interceptor name=quot;fileUploadquot; class=quot;org.apache.struts2.interceptor.FileUploadInterceptorquot;/> <interceptor name=quot;i18nquot; class=quot;com.opensymphony.xwork2.interceptor.I18nInterceptorquot;/> <interceptor name=quot;loggerquot; class=quot;com.opensymphony.xwork2.interceptor.LoggingInterceptorquot;/> <interceptor name=quot;modelDrivenquot; class=quot;com.opensymphony.xwork2.interceptor.ModelDrivenInterceptorquot;/> <interceptor name=quot;scopedModelDrivenquot; class=quot;com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptorquot;/> <interceptor name=quot;paramsquot; class=quot;com.opensymphony.xwork2.interceptor.ParametersInterceptorquot;/> <interceptor name=quot;actionMappingParamsquot; class=quot;org.apache.struts2.interceptor.ActionMappingParametersInteceptorquot;/> <interceptor name=quot;preparequot; class=quot;com.opensymphony.xwork2.interceptor.PrepareInterceptorquot;/> <interceptor name=quot;staticParamsquot; class=quot;com.opensymphony.xwork2.interceptor.StaticParametersInterceptorquot;/> <interceptor name=quot;scopequot; class=quot;org.apache.struts2.interceptor.ScopeInterceptorquot;/> <interceptor name=quot;servletConfigquot; class=quot;org.apache.struts2.interceptor.ServletConfigInterceptorquot;/> <interceptor name=quot;sessionAutowiringquot; class=quot;org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptorquot;/> <interceptor name=quot;timerquot; class=quot;com.opensymphony.xwork2.interceptor.TimerInterceptorquot;/> <interceptor name=quot;tokenquot; class=quot;org.apache.struts2.interceptor.TokenInterceptorquot;/> <interceptor name=quot;tokenSessionquot; class=quot;org.apache.struts2.interceptor.TokenSessionStoreInterceptorquot;/> <interceptor name=quot;validationquot; class=quot;org.apache.struts2.interceptor.validation.AnnotationValidationInterceptorquot;/> <interceptor name=quot;workflowquot; class=quot;com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptorquot;/> <interceptor name=quot;storequot; class=quot;org.apache.struts2.interceptor.MessageStoreInterceptorquot; /> <interceptor name=quot;checkboxquot; class=quot;org.apache.struts2.interceptor.CheckboxInterceptorquot; /> <interceptor name=quot;profilingquot; class=quot;org.apache.struts2.interceptor.ProfilingActivationInterceptorquot; /> <interceptor name=quot;rolesquot; class=quot;org.apache.struts2.interceptor.RolesInterceptorquot; /> <interceptor name=quot;jsonValidationquot; class=quot;org.apache.struts2.interceptor.validation.JSONValidationInterceptorquot; /> <interceptor name=quot;annotationWorkflowquot; class=quot;com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptorquot; /> Friday, May 22, 2009
  82. 82. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Exemplo <action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;> <interceptor-ref name=quot;loggerquot;/> <result name=quot;loginOKquot;>menu.jsp</result> <result name=quot;loginNOKquot;>login.jsp</result> </action> May 15, 2009 11:39:22 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger info INFO: Starting execution stack for action //login_autenticar May 15, 2009 11:39:22 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger info INFO: Finishing execution stack for action //login_autenticar Friday, May 22, 2009
  83. 83. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors coisas muito mais complexas podem ser feitas... Friday, May 22, 2009
  84. 84. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Interceptors coisas muito mais complexas podem ser feitas... ...e precisam ser testadas! Friday, May 22, 2009
  85. 85. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Testes Direto na Action :-/ Friday, May 22, 2009
  86. 86. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  87. 87. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  88. 88. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Testes Action Proxied :-) Friday, May 22, 2009
  89. 89. Friday, May 22, 2009
  90. 90. Friday, May 22, 2009
  91. 91. Ambos os sites propõem classes da apoio aos testes Friday, May 22, 2009
  92. 92. Friday, May 22, 2009
  93. 93. // create action context for my action, feed // into the action context all request parameters Map requestParameters = new HashMap(); requestParameters.put(quot;param1quot;, quot;param1-valuequot;); requestParameters.put(quot;param2quot;, quot;param2-valuequot;); Map actionContext = StrutsTestCaseSupport.getInstance().buildActionContext( quot;my.hostname.comquot;, quot;getquot;, quot;/myActionNamespace/myActionNamequot;, requestParameters); // create the proxy for the action, this encapsulates all // the interception stack up to the real action ActionProxy proxy = StrutsTestCaseSupport.getInstance().createActionProxy( quot;myActionNamequot;, quot;myActionNameSpacequot;,actionContext); // inject parameters as required // let the full stack run String result = proxy.execute(); // confirm result assert result.equals(quot;myTestResponseStringquot;); // look into mock HttpServletResponse, do whatever // tests I need to do: returned HTML, returned headers, // cookies, etc... String responseXml = ((MockHttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE)).getContentAsString(); assert responseXml.indexOf(quot;successquot;) != -1; http://fassisrosa.blogspot.com/2006/11/unit-testing-struts-20.html Friday, May 22, 2009
  94. 94. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Struts2 testes org.apache.struts2.util.StrutsTestCaseHelper Generic test setup methods to be used with any unit testing framework. com.opensymphony.xwork2.TestNGXWorkTestCase Base test class for TestNG unit tests. Provides common XWork variables and performs XWork setup and teardown processes com.opensymphony.xwork2.XWorkTestCase Base JUnit TestCase to extend for XWork specific JUnit tests. Uses the generic test setup for logic. com.opensymphony.xwork2.util.XWorkTestCaseHelper Generic test setup methods to be used with any unit testing framework. Friday, May 22, 2009
  95. 95. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Include Mecanismo para modularização das configurações. Friday, May 22, 2009
  96. 96. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Include <struts> <include file=quot;billing-config.xmlquot; /> <include file=quot;admin-config.xmlquot; /> <include file=quot;reports-config.xmlquot; /> ... </struts> struts-default.xml e struts-plugin.xml são incluídos implicitamente em todo struts.xml Friday, May 22, 2009
  97. 97. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Packages Mecanismo para organização lógica e reaproveitamento de configurações Friday, May 22, 2009
  98. 98. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Packages <struts> <package name=quot;exemploquot; extends=quot;struts-defaultquot;> <action name=quot;login_*quot; method=quot;{1}quot; class=quot;br.ucb.soo.wa.struts2.lab3.LoginActionquot;> <interceptor-ref name=quot;loggerquot;/> <result name=quot;loginOKquot;>menu.jsp</result> <result name=quot;loginNOKquot;>login.jsp</result> </action> <action name=quot;logout/*quot; class=quot;br.ucb.soo.wa.struts2.lab3.LogoutActionquot;> <result>{1}.jsp</result> </action> </package> </struts> Friday, May 22, 2009
  99. 99. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Validators Verificação declarativa de campos Friday, May 22, 2009
  100. 100. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Bundled Validators conversion validator date validator double validator email validator expression validator fieldexpression validator int validator regex validator required validator requiredstring validator stringlength validator url validator visitor validator http://struts.apache.org/2.1.6/docs/validation.html Friday, May 22, 2009
  101. 101. <interceptor name=quot;validationquot; class=quot;org.apache.struts2.interceptor.validation.AnnotationValidationInterceptorquot;/> struts.xml Friday, May 22, 2009
  102. 102. <interceptor name=quot;validationquot; class=quot;org.apache.struts2.interceptor.validation.AnnotationValidationInterceptorquot;/> struts-default.xml <interceptor-ref name=quot;validationquot; /> struts.xml Friday, May 22, 2009
  103. 103. Friday, May 22, 2009
  104. 104. <body> <s:form action=quot;login_autenticarquot; validate=quot;truequot;> <s:textfield label=quot;Loginquot; name=quot;usuarioquot;/> <s:password label=quot;Senhaquot; name=quot;senhaquot; /> <s:submit/> </s:form> </body> login.jsp Friday, May 22, 2009
  105. 105. <validators> <field name=quot;usuarioquot;> <field-validator type=quot;requiredstringquot;> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name=quot;senhaquot;> <field-validator type=quot;requiredstringquot;> <message>Senha obrigatoria!</message> </field-validator> </field> </validators> br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xml Friday, May 22, 2009
  106. 106. <validators> <field name=quot;usuarioquot;> <field-validator type=quot;requiredstringquot;> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name=quot;senhaquot;> <field-validator type=quot;requiredstringquot;> <message>Senha obrigatoria!</message> </field-validator> </field> </validators> br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xml Friday, May 22, 2009
  107. 107. <validators> <field name=quot;usuarioquot;> <field-validator type=quot;requiredstringquot;> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name=quot;senhaquot;> <field-validator type=quot;requiredstringquot;> <message>Senha obrigatoria!</message> </field-validator> </field> </validators> br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xml Friday, May 22, 2009
  108. 108. <validators> <field name=quot;usuarioquot;> <field-validator type=quot;requiredstringquot;> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name=quot;senhaquot;> <field-validator type=quot;requiredstringquot;> <message>Senha obrigatoria!</message> </field-validator> </field> </validators> br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xml Friday, May 22, 2009
  109. 109. <validators> <field name=quot;usuarioquot;> <field-validator type=quot;requiredstringquot;> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name=quot;senhaquot;> <field-validator type=quot;requiredstringquot;> <message>Senha obrigatoria!</message> </field-validator> </field> </validators> br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xml Friday, May 22, 2009
  110. 110. Friday, May 22, 2009
  111. 111. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Friday, May 22, 2009
  112. 112. Friday, May 22, 2009 http://cwiki.apache.org/confluence/display/WW/Big+Picture
  113. 113. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Afinal, por que Struts2? • Baseado em Actions • Configurações - XML e Annotations • Actions POJO - alta testabilidade • Integrável - Spring, SiteMesh e Tiles • Opções de View - JSP, Freemarker, Velocity e XSLT Friday, May 22, 2009 • Plugável
  114. 114. Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009 Labs “The Bootstap tutorials starts from the very beginning and steps through creating a simple application.” http://struts.apache.org/2.x/docs/bootstrap.html Friday, May 22, 2009
  115. 115. Lato Sensu em Sistemas Orientados a Objetos Q&A MSc. Alexandre Gomes alegomes@gmail.com Friday, May 22, 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×