struts 2.x
DESCRIPTION
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.TRANSCRIPT
![Page 1: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/1.jpg)
Lato Sensu em Sistemas Orientados a Objetos
Módulo 4.2Struts 2
Friday, May 22, 2009
![Page 2: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/2.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 3: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/3.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
Strut
s 0.x
Stru
ts 2
.x
Strut
s 1.x
Web
Wor
k 1.4
Web
Wor
k 2.2.
2
Friday, May 22, 2009
![Page 4: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/4.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 5: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/5.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
simplificar o desenvolvimento
web
Struts 2objetivo
Friday, May 22, 2009
![Page 6: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/6.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Redução do XMLconvenção sobre configuração
anotações
Actions são POJOsmelhor testabilidade
bind automático de parâmetros HTTP
Struts 2objetivo
Friday, May 22, 2009
![Page 7: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/7.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Interceptadorespré e pós-processamento
Extensibilidadeplugins
Result TypesJSP, Velocity, Freemarker
Injeção de dependênciasSpring, Plexus, PicoContainer
Struts 2novidades
Friday, May 22, 2009
![Page 8: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/8.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
In a nutshell
Friday, May 22, 2009
![Page 9: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/9.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
http://servidor/
app/action
Friday, May 22, 2009
![Page 10: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/10.jpg)
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
![Page 11: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/11.jpg)
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
![Page 12: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/12.jpg)
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
![Page 13: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/13.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 14: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/14.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 15: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/15.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
XML mapeia POJO comum
Friday, May 22, 2009
![Page 16: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/16.jpg)
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
![Page 17: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/17.jpg)
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
![Page 18: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/18.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Actione
struts.xml
libs
web.xml*.html*.jsp
Friday, May 22, 2009
![Page 19: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/19.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
At a glance
Friday, May 22, 2009
![Page 20: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/20.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
http://servidor/
app/action
Friday, May 22, 2009
![Page 21: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/21.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
http://servidor/
app/action
?
Friday, May 22, 2009
![Page 22: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/22.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Struts 1.x
Friday, May 22, 2009
![Page 23: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/23.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Struts 1.x
?
Friday, May 22, 2009
![Page 24: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/24.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
http://servidor/
app/action
FrontController!
Friday, May 22, 2009
![Page 25: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/25.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
<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>
web.xml
Friday, May 22, 2009
![Page 26: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/26.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia deMapeamento de Actions
Friday, May 22, 2009
![Page 27: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/27.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de
Mapeamento de Actions
LoginAction.execute()
http://localhost:8080/app/entrar
Friday, May 22, 2009
![Page 28: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/28.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de
Mapeamento de Actions
LoginAction.execute()
http://localhost:8080/app/entrar
Friday, May 22, 2009
![Page 29: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/29.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de
Mapeamento de Actions
LoginAction.execute()
http://localhost:8080/app/entrar
<action name="entrar" class="xpto.LoginAction"/>
Friday, May 22, 2009
![Page 30: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/30.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de
Mapeamento de Actions
ControleDeAcessoAction.login()
http://localhost:8080/app/entrar
<action name="entrar" method="login" class="xpto.ControleDeAcessoAction"/>
Friday, May 22, 2009
![Page 31: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/31.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de
Mapeamento de Actions
ControleDeAcessoAction.login()
http://localhost:8080/app/entrar
<action name="entrar" method="login" class="xpto.ControleDeAcessoAction"/>
Friday, May 22, 2009
![Page 32: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/32.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de Mapeamento de Actions
Patterns Matching
ControleDeAcessoAction.login()
http://localhost:8080/app/acesso_login
Friday, May 22, 2009
![Page 33: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/33.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de Mapeamento de Actions
Patterns Matching
ControleDeAcessoAction.login()
http://localhost:8080/app/acesso_login
Friday, May 22, 2009
![Page 34: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/34.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de Mapeamento de Actions
Patterns Matching
ControleDeAcessoAction.login()
http://localhost:8080/app/acesso_login
Friday, May 22, 2009
![Page 35: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/35.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de Mapeamento de Actions
Patterns Matching
ControleDeAcessoAction.login()
http://localhost:8080/app/acesso_login
<action name="acesso_*" method="{1}" class="xpto.ControleDeAcessoAction"/>
Friday, May 22, 2009
![Page 36: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/36.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 37: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/37.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 38: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/38.jpg)
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
![Page 39: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/39.jpg)
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
![Page 40: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/40.jpg)
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
![Page 41: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/41.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Estratégia de Mapeamento de Actions
Patterns Matching
<action name="*/*" method="{2}" class="xpto.{1}Action"/>
http://localhost:8080/app/Usuario/edit
UsuarioAction.edit()
Friday, May 22, 2009
![Page 42: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/42.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Binding
Friday, May 22, 2009
![Page 43: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/43.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Dados de Requisição
usuario=alegomessenha=123456
Friday, May 22, 2009
![Page 44: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/44.jpg)
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
![Page 45: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/45.jpg)
Friday, May 22, 2009
![Page 46: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/46.jpg)
setUsuario(“alegomes”);setSenha(“123456”);
Friday, May 22, 2009
![Page 47: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/47.jpg)
setUsuario(“alegomes”);setSenha(“123456”);
Friday, May 22, 2009
![Page 48: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/48.jpg)
Friday, May 22, 2009
![Page 49: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/49.jpg)
Friday, May 22, 2009
![Page 50: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/50.jpg)
Friday, May 22, 2009
![Page 51: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/51.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Como Actions são POJOS, nenhuma infra-estrutura mágica é necessária para
implementação de testes unitários.
Testabilidade
Friday, May 22, 2009
![Page 52: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/52.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 53: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/53.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Tags
Friday, May 22, 2009
![Page 54: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/54.jpg)
http://servidor/
app/action
login.jsp menu.jsp
Friday, May 22, 2009
![Page 55: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/55.jpg)
<action name="login_*" method="{1}" class="br.ucb.soo.wa.struts2.lab3.LoginAction"> <result name="loginOK">menu.jsp</result> <result name="loginNOK">login.jsp</result></action>
public class LoginAction { public static final String USUARIO_ESPERADO = "alegomes"; public static final String SENHA_ESPERADA = "123456"; private String usuario; private String senha; public String autenticar() { if (USUARIO_ESPERADO.equals(usuario) && SENHA_ESPERADA.equals(senha)) { return "loginOK"; } else { return "loginNOK"; } }
//Gets e Sets}
struts.xml
LoginAction.java
Friday, May 22, 2009
![Page 56: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/56.jpg)
<action name="login_*" method="{1}" class="br.ucb.soo.wa.struts2.lab3.LoginAction"> <result name="loginOK">menu.jsp</result> <result name="loginNOK">login.jsp</result></action>
public class LoginAction { public static final String USUARIO_ESPERADO = "alegomes"; public static final String SENHA_ESPERADA = "123456"; private String usuario; private String senha; public String autenticar() { if (USUARIO_ESPERADO.equals(usuario) && SENHA_ESPERADA.equals(senha)) { return "loginOK"; } else { return "loginNOK"; } }
//Gets e Sets}
struts.xml
LoginAction.java
Friday, May 22, 2009
![Page 57: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/57.jpg)
menu.jsp
senha correta
<title>Menu do Sistema</title></head><body><h1>Seja bem vindo.</h1>
Escolha uma das abaixo.
<ul> <li><a href="servico_f1">Funcionalidade 1</a></li> <li><a href="servico_f1">Funcionalidade 2</a></li> <li><a href="servico_f1">Funcionalidade 3</a></li> <li><a href="servico_f1">Funcionalidade 4</a></li></ul></body></html>
Friday, May 22, 2009
![Page 58: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/58.jpg)
senha errada
login.jsp
<title>Tela de Autenticação</title></head><body><form action="login_autenticar"> Login: <input type="text" value=""/><p/> Senha: <input type="password" value=""/><p/> <input type="submit"/></form></body>
Friday, May 22, 2009
![Page 59: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/59.jpg)
<h1>Seja bem vindo, <s:property value="usuario" />.</h1>
Friday, May 22, 2009
![Page 60: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/60.jpg)
<h1>Seja bem vindo, <s:property value="usuario" />.</h1>
Friday, May 22, 2009
![Page 61: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/61.jpg)
<s:form action="login_autenticar"> <s:textfield label="Login" name="usuario"/> <s:password label="Senha" name="senha" /> <s:submit/></s:form>
Friday, May 22, 2009
![Page 62: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/62.jpg)
Friday, May 22, 2009
![Page 63: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/63.jpg)
Friday, May 22, 2009
![Page 64: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/64.jpg)
Friday, May 22, 2009
![Page 65: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/65.jpg)
Friday, May 22, 2009
![Page 66: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/66.jpg)
mais infos...
Friday, May 22, 2009
![Page 67: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/67.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Results&
Result Types
Friday, May 22, 2009
![Page 68: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/68.jpg)
http://servidor/
app/action
login.vt menu.jsp
Friday, May 22, 2009
![Page 69: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/69.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
implementação da
Camada View
Resposta da Action
Results
Friday, May 22, 2009
![Page 70: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/70.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Resultslogin.jsp menu.jsp
Action
FreemarkerVelocity XSTL
Friday, May 22, 2009
![Page 71: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/71.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Result TypesFreemarkerVelocity XSTL
<action name="qqcoisa*" method="{1}" class="br.ucb.soo.wa.struts2.lab3.QQAction"> <result name="result1">menu.jsp</result> <result name="result1" type=”dispatcher”>some.jsp</result> <result name="result2" type=”freemarker”>login.ftl</result> <result name="result3" type=”velocity”>page.vt</result></action>
Friday, May 22, 2009
![Page 72: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/72.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Result Typescustomizados
<result-types> <result-type name="dispatcher" default="true"
class="seu.pacote.SuaClasse"/> </result-types>
public interface Result extends Serializable { public void execute(ActionInvocation invocation) throws Exception; }
Friday, May 22, 2009
![Page 73: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/73.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Dependency Injection
Friday, May 22, 2009
![Page 74: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/74.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Interceptors
Friday, May 22, 2009
![Page 75: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/75.jpg)
http://servidor/
app/action
Friday, May 22, 2009
![Page 76: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/76.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
RevisãoIntercepting Filters
Friday, May 22, 2009
![Page 77: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/77.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
RevisãoIntercepting Filters
actioninterceptors interceptors
Friday, May 22, 2009
![Page 78: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/78.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Tratamento de exceção
Evitar submit duplo
Upload de arquivo
Ciclo de vida
Validações
Interceptorspra quê?
http://struts.apache.org/2.1.6/docs/interceptors.htmlFriday, May 22, 2009
![Page 79: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/79.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Interceptors
<package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class="..."/> <interceptor name="logger" class="..."/> </interceptors>
<action name="login" class="tutorial.Login"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <result name="input">login.jsp</result> <result name="success" type="redirectAction">/secure/home</result> </action></package>
Friday, May 22, 2009
![Page 80: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/80.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Pacotes de Interceptors<package name="default" extends="struts-default"> <interceptors> <interceptor name="timer" class=".."/> <interceptor name="logger" class=".."/>
<interceptor-stack name="myStack"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> </interceptor-stack>
</interceptors>
<action name="login" class="tutuorial.Login"> <interceptor-ref name="myStack"/>
<result name="input">login.jsp</result> <result name="success" type="redirectAction">/secure/home</result> </action></package>
Friday, May 22, 2009
![Page 81: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/81.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
<interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/><interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/><interceptor name="chain" class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/><interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/><interceptor name="clearSession" class="org.apache.struts2.interceptor.ClearSessionInterceptor" /><interceptor name="createSession" class="org.apache.struts2.interceptor.CreateSessionInterceptor" /><interceptor name="debugging" class="org.apache.struts2.interceptor.debugging.DebuggingInterceptor" /><interceptor name="externalRef" class="com.opensymphony.xwork2.interceptor.ExternalReferencesInterceptor"/><interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/><interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/><interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/><interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/><interceptor name="logger" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/><interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/><interceptor name="scopedModelDriven" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/><interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/><interceptor name="actionMappingParams" class="org.apache.struts2.interceptor.ActionMappingParametersInteceptor"/><interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/><interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/><interceptor name="scope" class="org.apache.struts2.interceptor.ScopeInterceptor"/><interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/><interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/><interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/><interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/><interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/><interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/><interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/><interceptor name="store" class="org.apache.struts2.interceptor.MessageStoreInterceptor" /><interceptor name="checkbox" class="org.apache.struts2.interceptor.CheckboxInterceptor" /><interceptor name="profiling" class="org.apache.struts2.interceptor.ProfilingActivationInterceptor" /><interceptor name="roles" class="org.apache.struts2.interceptor.RolesInterceptor" /><interceptor name="jsonValidation" class="org.apache.struts2.interceptor.validation.JSONValidationInterceptor" /><interceptor name="annotationWorkflow" class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor" />
Interceptors
Friday, May 22, 2009
![Page 82: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/82.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Exemplo
May 15, 2009 11:39:22 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger infoINFO: Starting execution stack for action //login_autenticarMay 15, 2009 11:39:22 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger infoINFO: Finishing execution stack for action //login_autenticar
<action name="login_*" method="{1}" class="br.ucb.soo.wa.struts2.lab3.LoginAction">
<interceptor-ref name="logger"/> <result name="loginOK">menu.jsp</result> <result name="loginNOK">login.jsp</result></action>
Friday, May 22, 2009
![Page 83: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/83.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
coisas muito mais complexas podem ser feitas...
Interceptors
Friday, May 22, 2009
![Page 84: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/84.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
coisas muito mais complexas podem ser feitas...
Interceptors
...e precisam ser testadas!
Friday, May 22, 2009
![Page 85: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/85.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
:-/
TestesDireto na Action
Friday, May 22, 2009
![Page 86: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/86.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 87: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/87.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 88: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/88.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
:-)
TestesAction Proxied
Friday, May 22, 2009
![Page 89: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/89.jpg)
Friday, May 22, 2009
![Page 90: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/90.jpg)
Friday, May 22, 2009
![Page 91: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/91.jpg)
Ambos os sites propõem classes da apoio aos testes
Friday, May 22, 2009
![Page 92: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/92.jpg)
Friday, May 22, 2009
![Page 93: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/93.jpg)
// create action context for my action, feed// into the action context all request parametersMap requestParameters = new HashMap();requestParameters.put("param1", "param1-value");requestParameters.put("param2", "param2-value");Map actionContext = StrutsTestCaseSupport.getInstance().buildActionContext( "my.hostname.com", "get", "/myActionNamespace/myActionName", requestParameters);
// create the proxy for the action, this encapsulates all// the interception stack up to the real actionActionProxy proxy = StrutsTestCaseSupport.getInstance().createActionProxy( "myActionName", "myActionNameSpace",actionContext);// inject parameters as required
// let the full stack runString result = proxy.execute();
// confirm resultassert result.equals("myTestResponseString");
// 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("success") != -1;
http://fassisrosa.blogspot.com/2006/11/unit-testing-struts-20.htmlFriday, May 22, 2009
![Page 94: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/94.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Struts2testes
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
![Page 95: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/95.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Mecanismo para modularização das configurações.
Include
Friday, May 22, 2009
![Page 96: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/96.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Include<struts> <include file="billing-config.xml" /> <include file="admin-config.xml" /> <include file="reports-config.xml" /> ... </struts>
struts-default.xml e struts-plugin.xml são incluídos implicitamente em todo struts.xml
Friday, May 22, 2009
![Page 97: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/97.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Mecanismo para organização lógica e reaproveitamento de configurações
Packages
Friday, May 22, 2009
![Page 98: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/98.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Packages
<struts>
<package name="exemplo" extends="struts-default"> <action name="login_*" method="{1}" class="br.ucb.soo.wa.struts2.lab3.LoginAction"> <interceptor-ref name="logger"/> <result name="loginOK">menu.jsp</result> <result name="loginNOK">login.jsp</result> </action> <action name="logout/*" class="br.ucb.soo.wa.struts2.lab3.LogoutAction"> <result>{1}.jsp</result> </action> </package>
</struts>
Friday, May 22, 2009
![Page 99: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/99.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Verificação declarativa de campos
Validators
Friday, May 22, 2009
![Page 100: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/100.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
conversion validatordate validator
double validatoremail validator
expression validatorfieldexpression validator
int validatorregex validator
required validatorrequiredstring validatorstringlength validator
url validatorvisitor validator
Bundled Validators
http://struts.apache.org/2.1.6/docs/validation.htmlFriday, May 22, 2009
![Page 101: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/101.jpg)
<interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>
struts.xmlFriday, May 22, 2009
![Page 102: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/102.jpg)
<interceptor-ref name="validation" />struts.xml
<interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>
struts-default.xml
Friday, May 22, 2009
![Page 103: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/103.jpg)
Friday, May 22, 2009
![Page 104: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/104.jpg)
<body><s:form action="login_autenticar" validate="true"> <s:textfield label="Login" name="usuario"/> <s:password label="Senha" name="senha" /> <s:submit/></s:form></body>
login.jspFriday, May 22, 2009
![Page 105: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/105.jpg)
<validators> <field name="usuario"> <field-validator type="requiredstring"> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name="senha"> <field-validator type="requiredstring"> <message>Senha obrigatoria!</message> </field-validator> </field></validators>
br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xmlFriday, May 22, 2009
![Page 106: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/106.jpg)
<validators> <field name="usuario"> <field-validator type="requiredstring"> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name="senha"> <field-validator type="requiredstring"> <message>Senha obrigatoria!</message> </field-validator> </field></validators>
br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xmlFriday, May 22, 2009
![Page 107: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/107.jpg)
<validators> <field name="usuario"> <field-validator type="requiredstring"> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name="senha"> <field-validator type="requiredstring"> <message>Senha obrigatoria!</message> </field-validator> </field></validators>
br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xmlFriday, May 22, 2009
![Page 108: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/108.jpg)
<validators> <field name="usuario"> <field-validator type="requiredstring"> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name="senha"> <field-validator type="requiredstring"> <message>Senha obrigatoria!</message> </field-validator> </field></validators>
br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xmlFriday, May 22, 2009
![Page 109: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/109.jpg)
<validators> <field name="usuario"> <field-validator type="requiredstring"> <message>Nome de usuario obrigatorio!</message> </field-validator> </field> <field name="senha"> <field-validator type="requiredstring"> <message>Senha obrigatoria!</message> </field-validator> </field></validators>
br/ucb/soo/wa/struts2/lab3/LoginAction-validation.xmlFriday, May 22, 2009
![Page 110: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/110.jpg)
Friday, May 22, 2009
![Page 111: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/111.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
Friday, May 22, 2009
![Page 112: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/112.jpg)
http
://cw
iki.a
pach
e.or
g/co
nflue
nce/
disp
lay/
WW
/Big
+Pi
ctur
e
Friday, May 22, 2009
![Page 113: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/113.jpg)
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
• PlugávelFriday, May 22, 2009
![Page 114: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/114.jpg)
Lato Sensu em Sistemas Orientados a Objetos Desenvolvimento de Aplicaões Web Avançado - 1°/2009
“The Bootstap tutorials starts from the very beginning and steps through creating a
simple application.”
http://struts.apache.org/2.x/docs/bootstrap.html
Labs
Friday, May 22, 2009
![Page 115: Struts 2.x](https://reader034.vdocuments.mx/reader034/viewer/2022051313/54b48aa84a7959da6c8b460b/html5/thumbnails/115.jpg)
Lato Sensu em Sistemas Orientados a Objetos
Q&AMSc. Alexandre [email protected]
Friday, May 22, 2009