Pesquisar este blog

quarta-feira, 16 de março de 2011

VALIDAÇÃO DE CPF -ESCRITA NA TELA

VALIDAÇÃO DE CPF -MÉTODO AUXILIAR-hasOnlyNumber

O método  hasOnlyNumber  tem a s seguintes características:
Nome do Método
hasOnlyNumber

Argumento ou parâmetro
String  str
É o que está colocado entre os parêntesis
Processamento
Todo código colocado entre as chaves
Tipo de retorno
boolean
Colocado antes do nome do método
Nível de acesso
public
Permite acesso geral, dentro da classe e fora da classe
Assinatura do Método
A primeira linha de código do método
public String hasOnlyNUmer(String str)


Este método tem por objetivo retornar false caso o usuário tenha digitado letra no lugar de número ou não tenha colocado o traço ou o ponto antes dos dígitos verificadores.
Este método declara a  variável hasOnlyNumber do tipo Boolean e atribui  o valor false como valor inicial.
Em seguida, através da estrutura de repetição  baseada no for  verifica se cada caractere digitado   trata-se de um dígito número, exceto o traço.
Assim o for declara i do tipo inteiro  com valor inicial em 0.
Na primeira vez que o código dentro do  for executado, i vale 0, de forma o código dentro do IF é executado,  pois  0 é diferente de 9.
  
Dentro do IF , o método isDigit  da classe Character é responsável por verificar se o caractere trata-se de um dígito numérico. Se for dígito numérico, então a variável hasOnlyNumber recebe  true, caso contrário recebe false.
O segundo IF dentro do primeiro IF é responsável por parar a repetição do for caso hasOnlyNumber receba um false. Ou seja, se ao fazer a varredura e encontrar qualquer coisa diferente de um dígito numérico, a repetição é interrompida pelo break  e a linha de código  return hasOnlyNumber é executada.
Para cada valor de i esse processo se repete, até encontre um false ou até todos os caracteres tenham sido varridos.
Para o valor de i igual a 9 corresponde ao momento em que se está acessando  o traço ou o ponto que separa os dígitos verificadores. Neste momento, o código dentro do else  passa a ser executado.
Dentro do código do else é verificado se existe um traço ou um ponto antes dos dígitos verificadores.  Caso isso ocorra, a repetição é interrompida, e o método retorna false.











VALIDAÇÃO DE CPF - PROCESSAMENTO


O processamento verifica se a caixa de texto está vazia ou tem  números misturados com letras então:
            É solicitado ao usuário para digitar um CPF  no formato correto
caso contrário
          Se o CPF for válido então
                  Confirma que o CPF é válido
          Caso contrário
                  Informa que se trata um CPF inválido


VALIDAÇÃO DO CPF - LEITURA

A leitura dos dados dos formulário, simplesmente basta usar o método request.getParameter("cpf"). O único ponto que merece destaque corresponde ao arguento recebido pelo método. Esse argumento deve ter o mesmo nome da caixa de texto colocada no formulário, colocado entre aspas duplas.
Outro fato, se refere ao tipo de dado lido. No caso  String, portanto a variável que recebe o dado lido é declarada do tipo String .
A variável do tipo String msg será usada par armazenar a mensagem, se o o CPF é válidoou não.


VALIDAÇÃO DE CPF - PROCESSANDO A VALIDAÇÃO

A página cpf-recebe.jsp  será analisada por partes. Clique na Figura para ver a imagem ampliada.
Basicamente temos três partes:

  1. Leitura dos dados do formulário. No caso apenas o valor digitado do CPF
  2. Processamento. No caso   realizar o processo de validação do CPF. Esta parte está embutida a chamada dos métodos auxiliares
    1. getDigito
    2. validaDigitosVerificadores
    3. hasOnlyNumber
  3. Escrita na Tela . Após o obter os resultado, exibí-los na tela


VALIDAÇÃO DO CPF - -FORMULÁRIO

Abaixo segue o código do arquivo cpf-formulario.jsp que tem apenas umm formulário com uma caixa de texto e um botão submit.
Observe que a tag form define o atributo action como sendo cpf-recebe.jsp, portanto os dados serão enviados para esta página.
Como o atributo method não está explícito, vale a regra: todo atributo não explicitado usa o valor padrão. Nesse caso o valor padrão corresponde ao método GET. Ou seja, nesse caso os dados serão enviados anexados ao final da URL na barra de endereço.




<%@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>Valida CPF</title>
    </head>
    <body>
        <center>
        <h1>Validação de CPF</h1>
        <form name="f1" action="cpf-recebe.jsp">
            CPF:<input type="text" name="cpf" value="123456789-09" />
            <input type="submit" value="Validar" />
        </form>
        </center>
    </body>
</html>

Validação de CPF

A validação de CPF verifica apenas se os dois dígitos finais  são válidos  quando verificados de acordo com a regra de definição dos seus valores. Em outras palavras, os dois dígitos finais dependem dos outros dígitos.

Para exemplificar usaremos o CPF 123456789-09.

Cálculo do Dígito Verificador  1(Div1):

1)Basta fazermos as seguintes operações:
soma=1*10+2*9+3*8+4*7+5*6+6*5+ 7*4+8*3+9*2=210

2)Calcular o resto da divisão por 11:   resto=mod(soma/11)=210%11=1

Lembre-se calcular o resto da divisão usa-se mod no Excel e % na lIngaugem Java

3) Aplica a regra:
Se o resto  for menor que 2 então{
           o dígito verificador 1 é 0
}
Caso contrário{
           o dígito verificador é igual a (11-resto)
}

Portanto Div1=0 pois o resto é menor que 2

          

Cálculo do Dígito Verificador  2 ( Div2):

1)Basta fazermos as seguintes operações:
soma=1*11+2*10+3*9+4*8+5*7+6*6+ 7*5+8*4+9*3 +div1*2=210

2)Calcular o resto da divisão por 11:   resto=mod(soma/11)=210%11=1

Lembre-se calcular o resto da divisão usa-se mod no Excel e % na lIngaugem Java

3)Aplique a regra:
 Se o resto  for menor que 2 então{
           o dígito verificador 1 é 0
}
Caso contrário{
           o dígito verificador é igual a (11-resto)
}
         

Portanto Div2=11-2=9 pois o resto não é menor que 2