sábado, 27 de novembro de 2010

Simples Exemplo Struts

Olá Pessoal,

Depois de um bom tempo, sem publicar um post, irei mostrar, como criar uma simples aplicação web, usando o FrameWork Struts 1.3. Para quem não conhece, o Struts é um framework open-source do projeto Jakarta, ele possibilita o desenvolvimento de aplicacões web, atuando como um Controller no padrão MVC e também oferece suporte na camada View, para a construção de páginas JSP através de custom tags.
O exemplo deste post é simples, teremos um formulário para preencher os dados de uma Pessoa, se a idade desta pessoa for maior de 18 anos, encaminhamos para uma página de sucesso, caso contrário, encaminhamos para uma página de falha. O projeto foi desenvolvido, usando o Eclipse + JBoss.
O Struts pode ser baixado no site http://struts.apache.org/download.cgi.
Ao final do post, o projeto será disponibilizado para download, com as libs, já inclusa.
1. Passo: Estrutura do projeto:


2. Passo: Crie uma Classe, chamada Pessoa:
package com.blogspot.jabesfelipe.struts.bean;

public class Pessoa {

private String nome;
private int idade;
private float altura;
private char sexo;

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public int getIdade() {
return idade;
}

public void setIdade(int idade) {
this.idade = idade;
}

public float getAltura() {
return altura;
}

public void setAltura(float altura) {
this.altura = altura;
}

public char getSexo() {
return sexo;
}

public void setSexo(char sexo) {
this.sexo = sexo;
}

}
Pessoa.java

3. Passo: Crie uma Classe, chamada PessoaFormBean, ela vai extender da Classe ActionForm, os form-beans se integram a um formulário de entrada de dados.
package com.blogspot.jabesfelipe.struts.formbean;

import org.apache.struts.action.ActionForm;
import com.blogspot.jabesfelipe.struts.bean.Pessoa;

public class PessoaFormBean extends ActionForm {

/**
*
*/
private static final long serialVersionUID = -759773695806534156L;
private Pessoa pessoa = new Pessoa();

public Pessoa getPessoa() {
return pessoa;
}

}
PessoaFormBean.java

4. Passo: Crie uma Classe, chamada PessoaAction, ela vai extender da Classe Action, e vamos sobrescrever o método execute, que funciona como um método main, esta Classe irá funcionar como o nosso Controller, o método execute, irá retornar um ActionForward, o mapeamento, será configurado no arquivo struts-config.xml.
package com.blogspot.jabesfelipe.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.blogspot.jabesfelipe.struts.bean.Pessoa;
import com.blogspot.jabesfelipe.struts.formbean.PessoaFormBean;

public class PessoaAction extends Action {

public static final String SUCESSO = "sucesso";
public static final String FALHA = "falha";
public static final String PESSOA = "pessoa";

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

Pessoa pessoa = ((Pessoa) ((PessoaFormBean) form).getPessoa());
boolean podeEntrar = false;

if (pessoa.getIdade() >= 18) {
podeEntrar = true;
}
request.setAttribute(PESSOA, pessoa);

return podeEntrar ? mapping.findForward(SUCESSO) : mapping.findForward(FALHA);
}

}
PessoaAction.java

5. Passo: Vamos criar nossas páginas JSPs, crie uma página index.jsp:
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<logic:forward name="index" />
index.jsp

6. Passo: Crie um JSP, para o formulário:
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<html:base/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Simples Exemplo Struts</title>
</head>
<body>
<html:form focus="pessoa.nome" action="/PessoaAction.do" method="POST">
Nome: <html:text property="pessoa.nome" /><br />
Idade: <html:text property="pessoa.idade" /><br />
Altura: <html:text property="pessoa.altura" /><br />
Sexo: <html:radio property="pessoa.sexo" value="M" />Masculino
<html:radio property="pessoa.sexo" value="F" />Feminino<br /><br />
<html:submit value="Ok"/>
</html:form>
</body>
</html:html>
formulario.jsp

7. Passo: Crie, agora a página de sucesso:
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<html:base/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Simples Exemplo Struts</title>
</head>
<body>
<bean:define id="pessoa" name="pessoa" scope="request" />
Olá <bean:write name="pessoa" property="nome"/>, SEJA BEM VINDO!!! <br />
Sexo:
<logic:equal value="M" name="pessoa" property="sexo">Masculino</logic:equal>
<logic:equal value="F" name="pessoa" property="sexo">Feminino</logic:equal>
<br /><br />
<br />
<html:link action="/Index.do">sair...</html:link>
</body>
</html:html>
sucesso.jsp

8. Passo: Crie, agora a página de falha:
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<html:base />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Simples Exemplo Struts</title>
</head>
<body>
<bean:define id="pessoa" scope="request" name="pessoa" />
Olá <bean:write name="pessoa" property="nome" />.
<br />
<br />
VOCÊ É MENOR DE IDADE E NÃO PODE ENTRAR!!!
<br />
<html:link action="/Index.do">voltar...</html:link>
</body>
</html:html>
falha.jsp

9. Passo: Agora, precisamos configurar o struts no arquivo web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>struts-exemplo</display-name>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</web-app>
web.xml

10. Passo: A configuração do arquivo struts-config, incluindo as as definições dos beans,
e os mapeamento das actions:
<?xml version="1.0" encoding="UTF-8"?>

<struts-config>
<!-- FORWARDS GLOBAL -->
<global-forwards>
<forward name="index" path="/Index.do" />
</global-forwards>

<form-beans>

<!-- FORM PESSOA -->
<form-bean name="PessoaFormBean" type="com.blogspot.jabesfelipe.struts.formbean.PessoaFormBean" />

</form-beans>


<action-mappings>

<!-- PAGINA INICIAL -->
<action path="/Index" include="/formulario.jsp" scope="request" />
<action name="PessoaFormBean" type="com.blogspot.jabesfelipe.struts.action.PessoaAction"
path="/PessoaAction" scope="request">
<forward name="sucesso" path="/sucesso.jsp"/>
<forward name="falha" path="/falha.jsp"/>
</action>

</action-mappings>

</struts-config>
struts-config.xml

11. Passo: A aplicação rodando, preenchendo o formulário:

Caso seja sucesso:
Se for falha:

Bom galera, este foi um exemplo de como criar uma simples aplicação web com FrameWork Struts.
Para quem quiser baixar o exemplo, clique aqui.
Qualquer dúvida, crítica ou sugestão, fico à disposição.

Jabes Felipe RSS Feed Jabes Felipe