SlideShare uma empresa Scribd logo
1 de 23
Fernando Oliveira
Introdução ao Struts 2
Sobre mim…
• Atualmente – Analista de Sistemas na NYX Knowledge (www.nyxk.com.br)
– Tecnologias: C, C++, Objective C, Python, Java, Javascript e MySQL
• 2012 – Desenvolvedor Bolsista do Projeto SIGA-EPCT no IFAL
– Tecnologias: Java, JSF, JPA, EJB e PostgreSQL
• 2012 – Sócio Proprietário Oneicon Mobile e Mídias Digitais
– Tecnologias: Java, Ruby, Ruby on Rails, JSF, Hibernate, JPA, PostgreSQL, etc..
• 2010 à 2012 – Desenvolvedor na Aloo Telecom (www.aloo.com.br)
– Java, PHP, MySQL, JavaScript, HTML e CSS
• 2008 à 2010 – Suporte Técnico Aloo Telecom (www.aloo.com.br)
O que é o Struts
Um framework para o desenvolvimento de
aplicações WEB
Algumas Características
Fortemente baseado nos padrões
MVC e FrontController
MVC – Model View Controller
Obtendo o Struts
http://struts.apache.org/
Jars Obrigatórios
• commons-fileupload-1.2.2.jar
• commons-io-2.0.1.jar
• commons-lang-2.5.jar
• commons-logging-1.1.1.jar
• commons-logging-api.1.1.jar
• freemarker-2.3.18.jar
• ognl-3.0.4.jar
• struts2-core-2.3.1.2.jar
• xwork-core-2.3.1.2.jar
• javassist-3.11.0.GA.jar
Configurando o Struts
Configurando o filtro do Struts no arquivo web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.foo.bar,com.baz.quux</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Criando o arquivo struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts -default">
<action name="index">
<result>/Index</result>
</action>
</package>
</struts>
src/struts.xml
Actions
Serão os nossos Controllers
1. Fornecem dados para serem exibidos na view
2. Recebem dados das requisições
3. Executam as ações solicitadas pelo usuário
Como criar uma Action?!
Uma action é apenas uma classe Java que herda da classe
ActionSupport
Nossa primeira Action
controle.actions.CadastrarUsuarioAction.java
package controle.actions;
import com.opensymphony.xwork2.ActionSupport;
public class CadastrarUsuarioAction extends ActionSupport {
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
return super.execute();
}
}
Agora é necessário definir a nossa
Action no arquivo Struts.xml
<action name="CadastrarUsuario” class="controle.actions.CadastrarUsuarioAction">
</action>
Para definir uma action precisamos irformar
o seu nome e a classe…
Métodos
Sempre que uma Action for acionada, por
padrão, o método execute() será disparado.
Ele tem a seguinte estrutura:
public String execute() throws Exception {
return super.execute();
}
Action Results
Método execute irá definir qual a próxima página
deverá ser chamada.
Para isso precisamos mapear os resultados possíveis
no Struts.xml
<action name="CadastrarUsuario" class="controle.actions.CadastrarUsuarioAction">
<result name="success">/visao/Login.jsp</result>
</action>
Conjunto Padrão de Resultados
• SUCCESS
• NONE
• ERROR
• INPUT
• LOGIN
Exemplo:
public String execute() throws Exception {
return CadastroUsuarioAction.SUCCESS;
}
Properties
Também podemos definir propriedades para serem
acessadas nas views.
Exemplo:
public class TesteAction extends ActionSupport {
private String nome;
public String execute() throws Exception {
return CadastroUsuarioAction.SUCCESS;
}
public String getNome () {
return this.nome;
}
}
Acessando as propriedades
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding=”UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
Nome: <s:property value=”nome" />
</body>
</html>
Outras TAGS
<s:iterator value="usuarios" status="status">
<tr style="background-color: ${status.even ? ’#EEEEEE’ : ’#FFFFFF’}">
<td><s:property value="id"/></td>
<td><s:property value="nome"/></td>
<td><s:property value="username"/></td>
<td><s:property value="password"/></td>
<td>
<s:a action="UsuarioPreparaAlteracao" > alterar
<s:param name="usuario.id" value="id"/>
</s:a>
</td>
<td>
<s:a action="UsuarioRemove" > remover
<s:param name="usuario.id" value="id"/>
</s:a>
</td>
</tr>
</s:iterator>

Mais conteúdo relacionado

Semelhante a Introdução ao Struts 2 - Tudo sobre este poderoso framework Java

Semelhante a Introdução ao Struts 2 - Tudo sobre este poderoso framework Java (20)

Java Seminar
Java SeminarJava Seminar
Java Seminar
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
 
Workshop05
Workshop05Workshop05
Workshop05
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQuery
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Struts2 remote codeexecution
Struts2 remote codeexecutionStruts2 remote codeexecution
Struts2 remote codeexecution
 
Construindo sua primeira aplicação android
Construindo sua primeira aplicação androidConstruindo sua primeira aplicação android
Construindo sua primeira aplicação android
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
 

Introdução ao Struts 2 - Tudo sobre este poderoso framework Java

  • 2. Sobre mim… • Atualmente – Analista de Sistemas na NYX Knowledge (www.nyxk.com.br) – Tecnologias: C, C++, Objective C, Python, Java, Javascript e MySQL • 2012 – Desenvolvedor Bolsista do Projeto SIGA-EPCT no IFAL – Tecnologias: Java, JSF, JPA, EJB e PostgreSQL • 2012 – Sócio Proprietário Oneicon Mobile e Mídias Digitais – Tecnologias: Java, Ruby, Ruby on Rails, JSF, Hibernate, JPA, PostgreSQL, etc.. • 2010 à 2012 – Desenvolvedor na Aloo Telecom (www.aloo.com.br) – Java, PHP, MySQL, JavaScript, HTML e CSS • 2008 à 2010 – Suporte Técnico Aloo Telecom (www.aloo.com.br)
  • 3. O que é o Struts Um framework para o desenvolvimento de aplicações WEB
  • 5. Fortemente baseado nos padrões MVC e FrontController
  • 6. MVC – Model View Controller
  • 7.
  • 9.
  • 10. Jars Obrigatórios • commons-fileupload-1.2.2.jar • commons-io-2.0.1.jar • commons-lang-2.5.jar • commons-logging-1.1.1.jar • commons-logging-api.1.1.jar • freemarker-2.3.18.jar • ognl-3.0.4.jar • struts2-core-2.3.1.2.jar • xwork-core-2.3.1.2.jar • javassist-3.11.0.GA.jar
  • 12. Configurando o filtro do Struts no arquivo web.xml <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>com.foo.bar,com.baz.quux</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 13. Criando o arquivo struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts -default"> <action name="index"> <result>/Index</result> </action> </package> </struts> src/struts.xml
  • 14. Actions Serão os nossos Controllers 1. Fornecem dados para serem exibidos na view 2. Recebem dados das requisições 3. Executam as ações solicitadas pelo usuário
  • 15. Como criar uma Action?! Uma action é apenas uma classe Java que herda da classe ActionSupport
  • 16. Nossa primeira Action controle.actions.CadastrarUsuarioAction.java package controle.actions; import com.opensymphony.xwork2.ActionSupport; public class CadastrarUsuarioAction extends ActionSupport { private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { return super.execute(); } }
  • 17. Agora é necessário definir a nossa Action no arquivo Struts.xml <action name="CadastrarUsuario” class="controle.actions.CadastrarUsuarioAction"> </action> Para definir uma action precisamos irformar o seu nome e a classe…
  • 18. Métodos Sempre que uma Action for acionada, por padrão, o método execute() será disparado. Ele tem a seguinte estrutura: public String execute() throws Exception { return super.execute(); }
  • 19. Action Results Método execute irá definir qual a próxima página deverá ser chamada. Para isso precisamos mapear os resultados possíveis no Struts.xml <action name="CadastrarUsuario" class="controle.actions.CadastrarUsuarioAction"> <result name="success">/visao/Login.jsp</result> </action>
  • 20. Conjunto Padrão de Resultados • SUCCESS • NONE • ERROR • INPUT • LOGIN Exemplo: public String execute() throws Exception { return CadastroUsuarioAction.SUCCESS; }
  • 21. Properties Também podemos definir propriedades para serem acessadas nas views. Exemplo: public class TesteAction extends ActionSupport { private String nome; public String execute() throws Exception { return CadastroUsuarioAction.SUCCESS; } public String getNome () { return this.nome; } }
  • 22. Acessando as propriedades <%@ taglib prefix="s" uri="/struts-tags" %> <%@ page language="java" contentType="text/html; charset=US-ASCII" pageEncoding=”UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Insert title here</title> </head> <body> Nome: <s:property value=”nome" /> </body> </html>
  • 23. Outras TAGS <s:iterator value="usuarios" status="status"> <tr style="background-color: ${status.even ? ’#EEEEEE’ : ’#FFFFFF’}"> <td><s:property value="id"/></td> <td><s:property value="nome"/></td> <td><s:property value="username"/></td> <td><s:property value="password"/></td> <td> <s:a action="UsuarioPreparaAlteracao" > alterar <s:param name="usuario.id" value="id"/> </s:a> </td> <td> <s:a action="UsuarioRemove" > remover <s:param name="usuario.id" value="id"/> </s:a> </td> </tr> </s:iterator>