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.