Para começar, considera-se que o leitor já possua uma ferramenta de IDE (
Eclipse,
Netbeans) de sua preferência já instalada e em funcionamento, além de um contêiner como
Tomcat.
No exemplo abordado neste artigo, a ferramenta utilizada foi Netbeans IDE 5.5, disponível em:
http://netbeans.org
O site oficial do Mentawai disponibiliza
um plugin no formato .nbm para utilização do mesmo nesta ferramenta. A instalação do plugin pode ser encontrada dentro do arquivo compactado.
Para utilizar o Mentawai deve-se seguir os seguintes passos:
- Baixar o arquivo correspondente à versão atual do Mentawai, que no momento de escrita deste é a 1.9 e está disponível em: http://www.mentaframework.org/mentawai-1.9.zip
- Descompactar o arquivo em qualquer diretório vazio e instalá-lo.
Criação da primeira aplicação web
No Netbeans, com o plugin instalado, criar uma aplicação, seguindo os passos:
File > New Project > Web > Mentawai Web Project > Next
Nesse ponto o projeto será criado com a estrutura básica de aplicações web, inclusive com o
servlet já mapeado no arquivo \WEB_IN\web.xml, ao qual é responsável por responder as requisições que contenham o prefixo .mtw. Esse é o padrão do Mentawai, mas nada impede de alterar para qualquer outro. E também o binário do Mentawai (mentawai.jar) já estará adicionado, o que em outra IDE se faz necessário adicionar manualmente no diretório \WEB_INF\lib. A figura 1 mostra um exemplo de um arquivo xml.
Neste ponto o projeto já está pronto para utilizar o Mentawai e suas facilidades. Execute o projeto e veja o resultado do exemplo que acompanha o plugin. Um novo exemplo um pouco mais elaborado deve ser criado, onde o usuário entra com uma data e o código da semana e o dia do ano será calculado e retornado. Este exemplo utiliza validação e internacionalização, passo a passo, com propósito didático.
Para começar esse novo exemplo, os arquivos .jsp do diretórios Web Pages e todo conteúdo do diretório Source Packages devem ser apagados e o projeto deve ser renomeado para Exemplo_artigo, ou deve-se criar um novo projeto Web com esse mesmo nome.
Mentawai: Actions
Uma action pode ser entendida como um recurso que recebe os dados das requisições do cliente e possibilita a visualização do resultado da execução da solicitação. Há duas maneiras de implementar as actions. Estender a classe da
org.mentawai.core.BaseAction, que já implementa os métodos abstratos ficando apenas o método execute para programador implementar, ou utilizar a interface
org.mentawai.core.Action, ao qual o programador terá que implementar todos os métodos.
No exemplo, a primeira alternativa será abordada. Dando continuidade no exemplo, deve-se criar uma nova classe no pacote padrão, em Source Package (File > New JavaClass - Em class name, coloque o nome CalculaCodigoDaSemanaDiaDoAno e estenda de org.mentawai.core.BaseAction). O método
execute recebe a data digitada pelo Input e retorna pelo Output. O retorno SUCCESS ou ERROR será a consequência a ser tratada pela ApplicationManager.java.
A figura 2 mostra a classe CalculaCodigoDaSemanaDiaDoAno.java.
Mentawai: Validação
Para implementar a validação deve-se criar uma classe para que o usuário digite a data sem caracteres especiais, ou seja, a data terá que ser informada no formato: dia mês ano.
O Mentawai permite criar de duas maneiras usando a ValidationFilter onde validação é feita através de um filtro de validação que herda de org.mentawai.filter.ValidationFilter. Dessa maneira a validação é totalmente desacoplada da sua action e pode ser inclusive aplicada a mais de uma action diferente ou utilizando a ValidatorFilter: A validação é codificada diretamente na action que implementa a interface Validatable. Dessa maneira não é necessário criar um novo filtro de validação e a lógica de validação fica dentro da action a qual ela se aplica. A validação continuará sendo feita por um filtro, mas nesse caso por um filtro global de validação que é o org.mentawai.filter.ValidatorFilter. Utilizaremos a primeira em nosso exemplo ValidationFilter. Continuando, criar uma classe no mesmo local onde foi criada a primeira com o nome ValidaData e estenda-a de ValidationFilter.
Esse filtro pode ser aplicado a qualquer action antes ser executada. A primeira regra diz que o campo requerido não pode estar em branco, a segunda que não poderá conter os caracteres especiais e as strings CAMPO_REQUIRIDO_ERRO e INVALID_CARACTER_ESPEC recebem a chave referente à mensagem que será exibida ao usuário caso as regras sejam violadas. Note que pode ser identificada como string ou um inteiro.
Mentawai: Mensagens de validação
As mensagens deverão estar dentro de um arquivo em \Web Pages\validation que deverá possuir o nome com o formato Nome_Da_Classe_loc_i18n, onde o nome da classe e o próprio nome da classe de validação, loc é a localização, i18n é a extensão padrão do Mentawai, logo ficará assim: ValidaData_pt_BR.i18n para a português do Brasil e ValidaData_en_US.i18n para o inglês.
Continuando com o exemplo, crie um folder dentro de Web Pages chamado validation e crie os arquivos com a extensão .i18n, com os nomes especificados. A figura a seguir mostra a estrutura do projeto nesse momento.
Veja a seguir o arquivo ValidaData_pt_BR.i18n:
O arquivo em inglês contém o mesmo texto, porém na língua inglesa.
Mentawai: Mapeamento de actions
As actions deverão ser mapeadas em uma classe especial chamada ApplicatioManager.java, que herda de org.mentawai.core.ApplicationManager. Por padrão essa classe fica dentro do diretório SourcePackages da aplicação, porém nada impede de alterar.
Para mapear a action CalculaCodigoDaSemanaDiaDoAno vamos criar a classe que gerencia as actions da aplicação, seguindo os passos: File > New JavaClass em class name coloque o nome ApplicationManager e estenda de org.mentawai.core.ApplicationManager.
Nas aplicações web, o método loadActions é chamado pelo controller quando é iniciado. O controller localiza as actions pelo nome dado a ela, action ("/Nome_da_Action", Classe_Responsavel.class). Instanciaremos então as actions e suas consequências, que por padrão são forward ou redirect.
Mentawai: Classes de negócio
Agora vamos criar a classe que fará uso da java.util.Calendar para retornar o código que representa a semana digitada e o dia referente no ano. Criar a classe CodSemanaAno.java em Source Package, no pacote default.
Mentawai: Classes de apresentação
Em nosso exemplo utilizaremos a Java Server Page (jsp), que será a camada apresentada ao usuário, aplicando a internacionalização. As páginas devem ficar dentro de \Web Pages. Faremos três páginas, a index.jsp, que conterá apenas um redirecionamento a outra página, denominada Entrada.jsp. Esta será responsável por coletar a data do usuário fazendo as validações que criamos, até que uma data no formato desejado seja inserida. Nesse ponto o cálculo é feito e o resultado é direcionado para outra página denominada Saida.jsp, que exibirá o resultado.
Lembrando que devemos adicionar no topo de todas nossas páginas referências (uri) do arquivo binário do Mentawai e o prefixo que o identificará (prefix). A referência ao mentawai é a seguinte: <%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %>.
As figuras a seguir demonstram os arquivos index.jsp, entrada.jsp e saida.jsp.
E para fazer a internacionalização nos textos estáticos utilizaremos a tag <mtw:i18n key="valor">, onde key é a chave, e valor é o conteúdo a ser exibido. O arquivo com mesmo nome da jsp deve ficar dentro de \Web Page\i18n com formato Nome_Da_jsp_loc_.i18n. É necessário também colocar no topo das páginas que usam internacionalização:
<mtw:useI18N />
Para fazer a internacionalização ao nosso exemplo convidamos o leitor a criar os arquivos, por exemplo, o Entrada_en_US.i18n, trocar a linguagem do seu browser e verificar o resultado.
Usamos também a tag <mtw:hasError><mtw:error field="dataDigitada"/></mtw:hasError> que responsável por exibir as mensagens de erro, o parâmetro field espera como argumento um campo que será o validado, no nosso caso foi o campo de entrada especificado pela outra tag <mtw:input type="text" name="dataDigitada" maxlength="8"/>, que é um campo do tipo texto, tem o nome de dataDigitada e pode ter no máximo 8 dígitos. Portanto, ao pressionar o botão enviar, declarado com <input type="submit" value="<mtw:i18n key="entrada.mensagem.botao"/>" /> a action a ser invocada será a definida em <form action="Calculo.mtw" method="post"> e a resposta será definida pelo resultado da action. Se for sucesso, redirecionará para a página Saida.jsp, caso contrário continua na página entrada.jsp. A partir daqui o exemplo deverá estar funcionado.
Sem dúvida os criadores do Mentawai conseguiram atingir seus objetivos, de criar um framework MVC simples e que não deixa a desejar se comparado aos concorrentes. O uso de um framework agiliza muito o trabalho dos desenvolvedores.
Neste artigo foi abordado apenas uma pequena parcela do poder que o Mentawai possui, logo aconselha-se aos leitores interessados em aprofundar os conhecimentos a visitar o site oficial, baixar sua API e praticar.
Referências bibliográficas
SUN Microsystems,
NetBeans IDE 5.5
Acesso em: Junho. 2006
Site oficial do mentawai
Acesso: 25 ago 2007
GUIMARAES, José de Oliveira. Frameworks. São Paulo.(2000)
Disponível em:
dc.ufscar.br - apostilas-patterns.zip