Vous êtes sur la page 1sur 5

Portal Java Tutorial: Desenvolvimento gil e Simplicado com Mentawai por Rubem Azenha Introduo Praticamente todos os frameworks

MVC para web hoje em dia usam arquivos XML para configurao/mapeamento das Actions. A prtica de configurao por arquivos XML se tornou quase que um padro para frameworks feito em Java. Isso torna quase impossvel fugir das configuraes em arquivos XML. Para resolver este e outros problemas que comprometem a produtividade e o prazer de desenvolver sites web, foi criado o framework MVC Mentawai (http://mentawai.lohis.com.br). O principal objetivo deste framework fornecer os servios dos frameworks MVC do mercado, mas sem o uso (confuso) de arquivos XML para a configurao e focando principalmente em produtividade e simplicidade. As principais vantegens do Mentawai so:

Simplicidade: O Mentawai extremamente simples de entender e usar. O programador no tem que ficar se preocupando com aprender a sintaxe especfica dos arquivos XML, pois toda a configurao feita em cdigo Java. Tambm um framework bem compacto, no tentando ser um framework que resolve todos os problemas do programador, focando nos problemas mais comuns e importantes. Para programadores canados de lidar com XML Flexvel: Sendo uma API pequena e bem projetada, quaisquer mudanas que o programador sentir nescessidade de fazer ser feito com pouca dificuldade, sem maior impacto no resto do cdigo da aplicao. Se no gostar de algo, mude, sem dor de cabea ou preocupaes. Fcil: O programador no precisar gastar muito tempo para entender e dominar o framework. A curva de aprendizado bem menor que a dos outros frameworks MVC, como Struts, WW, SpringMVC, etc.

Configurao XML X Cdigo Java: Algumas pessoas acham que o uso de cdigo Java para configurao um retrocesso. Mas o fato que o cdigo Java muito mais flexvel, testvel e fcil de identificar erros que o XML. Os arquivos XMLs podem atingir propores muito grandes. Embora o mesmo possa acontecer com o cdigo Java, com o cdigo Java bem mais fcil diluir o cdigo de configurao para vrios mtodos ou classes, ajudando assim na manuteno. E com certeza mais fcil aprender como funciona a configurao com o cdigo Java do que ter que decorar como a sintaxe especfica de cada framework funciona. H tambm aqueles que dizem que XML pode ser muito produtivo quando se usa alguma IDE RAD para gerar as configuraes XML. Porm, isso torna o programador dependente da IDE. Amide ocorre de programadores saberem usar certo framework ou ferramenta apenas atravs de uma ferramenta que automatiza tudo, sem saber trabalhar sem aquela ferramenta. Isso prejudica, e muito, o aprendizado do programador. No pense que as configuraes do Mentawai esto hardcoded na aplicao! Lembre-se que o arquivo ApplicationManager.java totalmente separado da sua aplicao principal e pode ser alterado independentemente do resto da aplicao. O Mentawai tambm demanda pouco tempo para ser entendido e dominado. Por ser toda a configurao em cdigo Java, o programador no tem que perder tempo decorando a sintaxe (s vezes complexa) dos arquivos XMLs especficos de cada framework. O Mentawai implementa de uma forma bem interessante o patern Command/Action. Existe um servlet controlador que responsvel por receber as requisies de execuo das Actions, instanciar as actions, passar os parmetros para elas e mandar executa-las. As aes so mapeadas no gerenciador da aplicao (ApplicationManager). A ao ser executada e ir gerar um resultado (Result). Esse resultado ir gerar uma consequencia

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Desenvolvimento gil e Simplicado com Mentawai por Rubem Azenha (Consequence). Existem valores padres para o resultado (no caso, sucess e error), e tambm existem consequencias j implementadas (Redirect, Forward), mas voc pode usar qualquer outro valor para os resultados e implementar outros tipos de consequecias. Alm disso, cada ao recebe uma entrada (Input), no caso de aplicaes web, os parmetros da requisio, e pode colocar valores de sada (Output), que sero acessveis fora da action. Para acessar valores como a seo e o contexto do Servlet o Mentawai encapsula-os em contextos (Context). Existem o SessionContext e o ApplicationContext, mas outros tipos de contexto podem ser desenvolvidos. Configurao nescessrio apenas declarar o servlet controlador no arquivo web.xml para usar o Mentawai em sua aplicao web. Esse servlet ir atender a todas as requisies com um sufixo pr-determinado, que por padro .mtw, mas qualquer sufixo pode ser usado, basta mudar na configurao. Lembre-se tambm de colocar os binrios do Mentawai (arquivo mentawai.jar) dentro do classpath de sua aplicao. <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Exemplo de artigo</display-name> <!-- O controller do Mentawai--> <servlet> <servlet-name>Controller</servlet-name> <servlet-class>org.mentawai.core.Controller</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Voc pode escolher qualquer exteno para as actions do Mentawai --> <servlet-mapping> <servlet-name>Controller</servlet-name> <url-pattern>*.mtw</url-pattern> </servlet-mapping> </web-app> Pronto! Esta toda a configurao nescessria para poder usar o Mentawai em uma aplicao web! Implmentando uma Action Existem duas maneiras bsicas para implementar uma Action: implementando a interface org.mentawai.core.Action ou extendendo a classe org.mentawai.core.BaseAction. A diferena que se implementar a interface Action, ter que implementar todos os mtodos da classe (setInput, getInput, setOutput, getOutput, etc). A classe BaseAction j implementa isso, basta apenas implementar o mtodo execute. Para exemplificar, o cdigo abaixo de uma Action, que extende da classe BaseAction, procura por uma valor frase na Input e retorna, na Output, quantas letras vogais tem a frase.

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Desenvolvimento gil e Simplicado com Mentawai por Rubem Azenha package br.com.portaljava.artigo.exemplo; import org.mentawai.core.*; public class ContaVogais extends BaseAction{ public String execute(){ String frase = input.getStringValue("frase"); if (frase == null || frase.trim().equals("")) return ERROR; int numVogais = 0; for (int i = 0; i < frase.length(); i++){ char c = frase.charAt(i); switch(c){ case 'a': case 'e': case 'i': case 'o': case 'u' : numVogais++; default: } } output.setValue("frase", new Integer(numVogais)); return SUCCESS; }

Agora, a Action ContaVogais precisa ser mapeada no ApplicationManager. O cdigo para mapear qualquer Action bem simples. Por padro, o Controller ira procurar na raiz do classpath (no pacote padro) uma classe com o nome de ApplicationManager que extende a classe org.mentawai.core.ApplicationManager.

//No "default package" - Sem definio de pacote! import org.mentawai.core.*; public class ApplicationManager extends org.mentawai.core.ApplicationManager{ public void loadActions(){ ac = new ActionConfig("/ContaVogais", ContaVogais.class); config.addConsequence(ContaVogais.SUCCESS, new Forward config.addConsequence(ContaVogais.ERROR, new Forward addActionConfig(ac);

("exibe.jsp")); ("frase.jsp")); }

Segue abaixo o cdigo das pginas JSP:

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Desenvolvimento gil e Simplicado com Mentawai por Rubem Azenha frase.jsp <html> <head> <title>Contador de vogais</title> <body> Contador de vogais! <br/> Digite uma frase abaixo: <form action="ContaVogais.mtw" > <input type="text" name="frase" /> <br/> <input type="submit" value="Enviar" /> </form> </body> </head> </html> exibe.jsp <%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %> <html> <head> <title>Resultado</title> </head> <body> Nmero de vogais: <mtw:out value="frase"/> <br/> Nmero de vogais: ${frase} <br/><!-- com EL --> </body> </html> Note que em exibe.jsp, existem diversas maneiras de exibir o contedo colocado na Output da Action. Agora, basta baixar o binrio do framework Mentawai (na data da escrita deste artigo, o Mentawai estava na verso 1.1) no site do Mentawai (http://mentawai.lohis.com.br), descompactar, copiar o arquivo mentawai.jar para a pasta \WEB-INF\lib de sua aplicao. Simples, fcil e prtico! Concluso O Mentawai uma alternativa bem simples, fcil e gil para desenvolvimento MVC web. Diferente de quase todos os frameworks MVC, o Mentawai procura no confundir a cabea do programador com arquivos XMLs gigantes, simplificando a configurao para cdigo Java. Mas o que foi coberto por esse artigo apenas a ponta do iceberg. O Mentawai possui bem mais recursos, deixando pouco ou nada a desejar em comparao com os outros frameworks MVC. Uma lista dos recursos do Mentawai:

Internacionalizao Filtros Mensagens Dinmicas Redirecionamento Autenticalao Autorizao Inverso de Controle Action Chaining Actions Internas Converso Data Lists Tags HTML

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Desenvolvimento gil e Simplicado com Mentawai por Rubem Azenha

Display Tags Custom Tags

E mais alguns recursos extras que no fazem exatamente parte da parte MVC do framework, mas so bastante usados no desenvolvimento web, e por isso foram implementados para ajudar o programador:

Integrao com pool de conexes Integrao com Hiberante Envio de e-mail transparente Suporte a Velocity Upload de arquivos

Enquanto espera sair mais um artigo falando sobre esses recursos que no foram abordados, voc pode acessar o site do Mentawai, onde consta toda a documentao oficial do Mentawai. Sobre o autor Colaborador do Portal Java e desenvolvedor do Mentawai Para entrar em contato: rubem.azenha@gmai.com Referncias Site oficial do Mentawai http://mentawai.lohis.com.br Frum oficial do Mentawai - http://mentaforum.lohis.com.br/forums/list.page Artigo publicado no JavaWorld, No XML, please! - http://www.javaworld.com/javaworld/jw-07-2005/jw0718-mentawai.html

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.