Olá, amigos! Este é o meu primeiro artigo no iMasters e espero que seja o primeiro de muitos! Estudo Java há alguns anos e pretendo ajudar a comunidade de desenvolvedores com artigos como este.
Hoje vou apresentar a vocês um exemplo de validação de formulários em páginas JSP com o auxílio do Framework Struts.
Todos sabem que a validação de formulários é algo primordial para a manutenção da “saúde” de qualquer aplicação. Neste caso, em especial, uma aplicação web. Sem qualquer tipo de validação, você poderá ter inconsistências em seu banco de dados com informações inseridas de forma incorreta pelos usuários.
O Struts implementa o padrão MVC (Model-View-Controller) fazendo com que sua regra de negócio fique separada da parte visual de sua aplicação. Se quiser saber um pouco mais sobre Struts antes de prosseguir, leia esta matéria publicada aqui no iMasters.
Então, vamos ao que interessa: o exemplo! Para quem é iniciante em Java e/ou não conhece o NetBeans, vou prosseguir com o artigo passo a passo com as telas apresentadas pela IDE.
Primeira Etapa – Criando uma aplicação web no NetBeans
- Abra o seu NetBeans;
- Vá em File > New Project;
A tela exibida será a seguinte:
- Selecione em Categories a categoria Web e em Projetcs, Web Application.
Na tela seguinte você irá inserir um nome para o seu Projeto e a pasta em que ele será salvo. Vou chamar o meu de ProjetoStruts.
Acompanhe os passos até chegar ao quarto passo de criação conforme tela abaixo:
Nesta tela você selecionará os Frameworks que serão utilizados na aplicação:
- Selecione o Framework Struts.
- Altere em Application Resource o nome do package inserindo o nome de seu Projeto no lugar de myapp. No meu caso ficou: com.projetostruts.struts.ApplicationResource
- Finalize a criação.
Segunda Etapa – Criação do formulário
Antes de qualquer coisa, você deve ter percebido que foram criados dois arquivos em seu Projeto, dentro da pasta WEB-INF: index.jsp e welcomeStruts.jsp.
Se você rodar o seu Projeto pressionando a tecla F6, você observará no browser o funcionamento do Framework Struts.
Vamos então criar nosso formulário:
- Abra o arquivo index.jsp
- Edite o index.jsp para deixá-lo com o seguinte código:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<html:html>
<head>
<title>Trabalhando com Struts</title>
<style>
.visualInputErro {
border: 1px solid #b22222;
font-family: Arial, Helvetica, sans-serif;
color: #666666;
background-color: #ffe4e1;
}
</style>
</head>
<body>
<html:form action="login">
<table border="0">
<thead>
<tr>
<th colspan="2"><html:errors property="status"/></th>
</tr>
</thead>
<tbody>
<tr>
<td><bean:message key="login.usuario" /></td>
<td><html:text property="usuario" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td><bean:message key="login.senha" /></td>
<td><html:password property="senha" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td colspan="2"><html:submit value="Login"/></td>
</tr>
</tbody>
</table>
</html:form>
</body>
</html:html>
Terceira Etapa – Criação das Ações
Vamos então criar as ações que validarão nosso formulário.
- Clique com o botão direito sobre o seu projeto, selecione New > Struts ActionForm Bean:
- Em Class Name digite: AcaoFormLogin
- Ajuste o Package para com.projetostruts.struts
- Neste arquivo você realizará a validação dos campos que virão do formulário. Edite o arquivo AcaoFormLogin.java conforme abaixo:
package com.projetostruts.struts;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
/**
*
* @author Gustavo
*/
public class AcaoFormLogin extends org.apache.struts.action.ActionForm {
private String usuario;
private String senha;
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public AcaoFormLogin() {
super();
// TODO Auto-generated constructor stub
}
@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
boolean flag = false;
if (getUsuario() == null || getUsuario().length() < 1) {
errors.add("usuario", new ActionMessage("error.usuario.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
if (getSenha() == null || getSenha().length() < 1) {
errors.add("senha", new ActionMessage("error.senha.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
return errors;
}
}
Vale ressaltar que neste arquivo a única validação que estou fazendo é se o campo é nulo ou se há algum texto digitado nele. Outras validações poderão ser implementadas de acordo com a necessidade.
Vá ao arquivo ApplicationResource.properties no package com.projetostruts.struts. No final do arquivo, insira o seguinte código:
login.usuario=Usuário
login.senha=Senha
error.usuario.required=O campo 'Usuário' deve ser preenchido
error.senha.required=O campos 'Senha' deve ser preenchido
error.status=Os campos destacados são de preenchimento obrigatório
Observe que este código descreve o retorno que será dado caso um dos erros tratados no arquivo AcaoFormLogin.java apareça. Neste exemplo, apesar de declarar as mensagens de erro para usuário e senha, eu destacarei o input que apresentou erro através do estilo .visualInputErro declarado no arquivo index.jsp.
Vamos então criar outro arquivo:
Clique com o botão direito sobre o pakage com.projetostruts.struts, selecione New > Struts Action.
- Em Class Name digite: AcaoLogin
- Ajuste o Package para com.projetostruts.struts
- Em Action Path, digite: /login
- Pressione next
- Em Input Resource, localize o arquivo index.jsp
- Em Scope, selecione request e finalize.
Neste arquivo que foi criado, AcaoLogin.java, você notará a palavra success. Eu costumo alterá-la para descrever melhor o tipo de sucesso que foi obtido. Então, altere para: successLogin
- Encontre a pasta Configuration Files e abra o arquivo struts-config.xml
- Encontre a seguinte linha de código:
<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin"/>
Altere-a e deixe conforme segue:
<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin">
<forward name="sucessLogin" path="/login"/>
</action>
Quarta Etapa – Criação do Servlet
Nesta etapa vamos criar o Servlet que será responsável por tratar os dados. Como o objetivo deste artigo é apenas demonstrar o funcionamento do Struts, o Servlet criado não executará nenhuma ação, apenas irá encaminhar para a página login.jsp a ser criada.
- Crie um novo package denominado com.projetostruts.conexao
- Crie nesse package um Selvlet chamado Login.java
- Na tela de configuração do Servlet, ajuste a URL Pattern para: /login
No Servlet Login.java, localize o método processRequest e altere-o conforme abaixo:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
response.sendRedirect("login.jsp");
} finally {
out.close();
}
}
Mais uma vez lembrando que este Servlet apenas redireciona para a página login.jsp.
Quinta Etapa – Criação do Destino
Nesta última etapa, vamos criar o arquivo destino que mostrará o sucesso da validação:
- Clique com o botão direito na pasta Web Pages e crie um novo arquivo chamado login.jsp
- Edite o arquivo conforme abaixo:
<%@page contentType="text/html" 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=UTF-8">
<title>Login</title>
</head>
<body>
<h2>Todos os campos foram preenchidos!!!</h2>
</body>
</html>
Está pronto! Esse é o conceito básico do Struts e espero que tenha ajudado. Já vi outras formas de realizar validações com struts mas ficará para um próximo artigo aqui no iMasters.
Então, até breve!