segunda-feira, 30 de janeiro de 2012

Menu principal em COBOL


       identification division.
       program-id. menu.
       author. jorgefox.
       data division.
       working-storage section.
      *77 opcao          pic 9 value zero.
       77 wopcao          pic 9 value zero.
       screen section.
       01 menu-principal.
          02 blank screen.
          02 line 1 col 1 value "***************************************
      -"************************************".
          02 line 2 col 21 value "Sistema de compra e venda Mercadorias"
      -.
          02 line 3 col 1 value "***************************************
      -"************************************".
          02 line 4 col 33 value "Menu Principal".
          02 line 7 col 10 value "[1] Cadastro Mercadoria".
          02 line 8 col 10 value "[2] Cadastro Cliente".
          02 line 9 col 10 value "[3] Cadastro Vendedor/Comprador".
          02 line 10 col 10 value "[4] Listagem de Mercadoria".
          02 line 11 col 10 value "[5] Listagem de Cliente".
          02 line 12 col 10 value "[6] Sair sistema".
          02 line 15 col 10 "Digite a opção desejada[.]".
          02 opcao line 15 col 10 pic 9 using wopcao auto.
       procedure division.
       inicio.
          display menu-principal
          accept menu-principal
          evaluate wopcao
             when 1
                call "cadmercadoria" using wopcao
                go to inicio
             when 2
                call "cadcliente" using wopcao
             when 6
                stop run
             when other
                 go to inicio
          end-evaluate.

sexta-feira, 27 de janeiro de 2012

Exercício em sala - cobol mostrando vetor.

Este exemplo demonstra como  usar vetor em cobol.


       identification division.
       program-id. medias.
       author. jorgefox
       data division.
       working-storage section.
       01 aluno occurs 10 times.
          05 codigo      pic 9999 values zero.
          05 nome        pic x(50) values spaces.
          05 notas       pic 99v99 value zero occurs 4 times.
          05 media       pic 99v99 value zero.
       77 i              pic 99 values zero.
       77 j              pic 99 values zero.
       77 lc             pic 9999 value zero.
       77 opcao          pic x value space.
       procedure division.
       inicio.
          perform varying i from 1 by 1 until i>3
            display erase
            display "Codigo   : " at 0510
            display "nome     : " at 0610
            display "*********Notas*********" at 0710
            accept codigo(i) at 0520
            accept nome(i) at 0620
            display " " at 0809
            move 0910 to lc
            perform varying j from 1 by 1 until j>4
               add 100 to lc
               display "nota " at lc  j
               add 10 to lc
               accept notas(i,j) at lc
               subtract 10 from lc
               add notas(i,j) to media(i)
            end-perform
            divide media(i) by 4 giving media(i)
          end-perform
          perform varying i from 1 by 1 until i>3
            display erase
            display "Codigo   : " at 0510 codigo(i)
            display "nome     : " at 0610 nome(i)
            display "*********Notas*********" at 0710
            display " " at 0809
            move 0910 to lc
            perform varying j from 1 by 1 until j>4
               add 100 to lc
               display "nota " at lc  j
               add 10 to lc
               display notas(i,j) at lc
               subtract 10 from lc
            end-perform
            add 100 to lc
            display "Media   : " at lc media(i)
            display "Proximo" at 1610
            accept opcao at 1621
          end-perform

          stop run.

Ensaio de um crud em cobol


Pessoal depois de um jejum estou de volta com mais códigos, só que agora, com a linguagem cobol.
Este é uma tela para cadastramento de clientes, bem como mostrar o uso do nível 66.
Forte abraço.

       identification division.
       program-id. dados.
       author. jorgefox.
       data division.
       working-storage section.
       01 cliente.
          02 codigo            pic 9999 value zeros.
          02 nome              pic x(50) value spaces.
          02 endereco.
             03 rua            pic x(30) value spaces.
             03 qd             pic 99X value spaces.
             03 lt             pic 99X values spaces.
             03 compl          pic x(20) value spaces.
             03 bairro         pic x(20) value spaces.
             03 cidade         pic x(30) value spaces.
             03 estado         pic aa value spaces.
             03 cep            pic x(9) value spaces.
          02 email             pic x(50) value spaces.
          02 telefone          pic x(17) value spaces.
          02 celular           pic x(17) value spaces.
       66 logradouro renames rua thru compl.
       77 opcao                pic x value spaces.
       procedure division.
       inicio.
         display erase
         display "Codigo   : " at 0510
         display "Nome     : " at 0610
         display "Endereco " at 0710
         display "Rua      : " at 0810
         display "Qd." at 0852
         display "Lt." at 0859
         display "Compl    : " at 0910
         display "Bairro   : " at 0942
         display "Cidade   : " at 1010
         display "Estado   : " at 1052
         display "Cep      : " at 1110
         display "Telefone : " at 1210
         display "Celular  : " at 1242
         display "E-mail   : " at 1310
         display "Dados corretos [S/N] . " at 1510
         accept codigo at 0521
         accept nome at 0621
         accept rua at 0821
         accept qd at 0855
         accept lt at 0862
         accept compl at 0921
         accept bairro at 0953
         accept cidade at 1021
         accept estado at 1063
         accept cep at 1121
         accept telefone at 1221
         accept celular at 1253
         accept email at 1321
         accept opcao at 1531
         if opcao="S" or opcao="s" then
           display erase
           display "logradouro : " at 1010 logradouro
         else
           go to inicio
         end-if
         stop run.




domingo, 22 de janeiro de 2012

Exercicios sobre Variaveis Compostas Homgeneas Bidimensionais.

Pessoal como falei em sala de aula, estou postando aqui a solução dos exercícios.
Começo com a serie de FIBONACCI 

algoritmo "Fibonacci"
// Função :
// Autor :
// Data : 20/01/2012
// Seção de Declarações
var  n:inteiro
funcao Fibonacci(i:inteiro):inteiro
inicio
     se i=0 entao
        retorne 0
     senao
       se i=1 entao
          retorne 1
       senao
          retorne Fibonacci(i-2)+Fibonacci(i-1)
       fimse
     fimse
fimfuncao

inicio
para n de 0 ate 21 faca
  escreva(Fibonacci(n))
fimpara
fimalgoritmo

Este é o calculo do fatorial de um numero.
O fatorial é usado em cálculos probabilísticos e em series.



algoritmo "FATORIAL"
var  n:inteiro

funcao Fatorial(i:inteiro):inteiro
inicio
se i=0 entao
   retorne 1
senao
   se i=1 entao
      retorne 1
   senao
      retorne i*Fatorial(i-1)
   fimse
fimse
fimfuncao
inicio
limpatela
escreva("Digite um numero menor que 20 para calcular o n!")
leia (n)
escreva("O Fatorial de ",n," é igual a ",Fatorial(n))
fimalgoritmo

Passagem de parâmetro por referência.

 algoritmo "Passagem de parametros por referencia"
// Função : Mostrar procedimentos com passagem de parametro
// Autor :  Jorgefox
// Data : 20/01/2012
// Seção de Declarações

procedimento Divide(Dividendo,Divisor:real;var dv,rs:real)
inicio
dv<-int(Dividendo/Divisor)
rs<-Dividendo-dv*Divisor
fimprocedimento

var a,b,x,y,v,w:real

inicio
a<-6
b<-3
Divide(a,b,x,y)
escreval(" Valor de x=",x," Valor de y=",y)
Divide(a*b-1,b+1,v,w)
escreval(" Valor de V=",v," Valor de W=",w)
fimalgoritmo

Forte abraço a todos.


quinta-feira, 19 de janeiro de 2012

Solução Exercício 1 de Variáveis Homogêneas Compostas - Pag. 58

Este exercício foi resolvido no dia 19/01/12 as 16:30.
Enjoy


algoritmo "notas das misses"
// Função :
// Autor :
// Data : 19/01/2012
// Seção de Declarações
var
    nome:vetor[0..34] de literal
    notas:vetor[0..34,0..4] de inteiro
    nomenotas:vetor[0..4] de literal
    mn,i,j,ms,pn8:inteiro

inicio
nomenotas[0]<-"Simpatia"
nomenotas[1]<-"Beleza"
nomenotas[2]<-"Carisma"
nomenotas[3]<-"Estetica"
nomenotas[4]<-"Total"
para i de 0 ate 34 faca
  escreva("Nome da miss (",i+1,") : ")
  leia (nome[i])
  para j de 0 ate 3 faca
     escreva(nomenotas[j])
     leia(notas[i,j])
     notas[i,4]<-notas[i,4]+notas[i,j]
  fimpara
fimpara
// letra a do exercicio 1 da apostila.
mn<-0
j<- -1
para i de 0 ate 34 faca
   se mn<notas[i,4] entao
      mn<-notas[i,4]
      j<-i
   fimse
fimpara
se j<> -1 entao
  escreval("A vencedora do concurso é : ", nome[j])
fimse
// letra b do exercicio: calcular a media de simpatia.
ms<-0
para i de 0 ate 34 faca
  ms<-ms+notas[i,0]
fimpara
escreval("A média da Simpatia é : ",ms/35)
pn8<-0
para i de 0 ate 34 faca
  se notas[i,1]>8 entao
     pn8<-pn8+1
  fimse
fimpara
escreval("A porcentagem de beleza acima de 8 foi :",100*pn8/35,"%.")
fimalgoritmo

O que é necessário para saber lógica?


Sempre que estou em sala de aula com meus queridos alunos, alguns sem pestanejarem perguntam: "O que é necessário para aprender lógica?".  É uma pergunta difícil de responder, apesar de que lógica seja algo relacionado com a matemática e que é dita como uma ciência exata. Digo isso pois no meu dia a dia tenho observado que nossos alunos estão formando no ensino médio sem que a leitura seja uma prática muito utilizada por eles.
Uai! Mas todos dizem que matemática é a base para a lógica! Sim de fato a matemática é um dos atributos necessários para saber. Mas uma boa interpretação de texto é fundamental para compreender e extrair do enunciado do desafio os seus objetivos bem como os dados necessários para sua resposta. Quando estamos diante de uma desafio a primeira coisa é entender o que se pede para resolver. Dizemos que todo problema é traz no seu enunciado o caminho para a sua solução. Mas como assim? Ao ler um problema devemos buscar os dados que são fornecidos, mas uma boa dose de intuição, abstração e dedução são importantes para encaminharmos uma solução escrita através de uma algoritmo.
Outro fator importante para resolver problemas é saber como o computador trabalha. Todos leigos acham que o computador tem vontade própria ou que seja inteligente.  Não isso somente é possível nos filmes de ficção cientifica, como exemplo "Jornada nas Estrelas" ainda levaremos muito tempo para atingir esse patamar descrito por Jim Roddenberry escritor da série. Todo computador do nosso tempo não é dotado de pensamento ou deduções tudo que ele executa é ensinado por nos programadores. Desta forma todo comportamento do computador é literalmente uma tradução do pensamento e da organização mental de uma pessoa. Tudo que programamos no computador será executado fielmente sem pular uma virgula ou ponto. Sendo assim não podemos ensinar errado pois se houver erro, este será executado, e a conseqüência serão resultados equivocados e inexatos.
Para entender a lógica é necessário disciplina  mental e também desenvolver a leitura, a matemática e claro a didática, afinal como os gregos já diziam a lógica é a arte da demonstração. Um abraço a todos e até nosso próximo artigo.

quarta-feira, 18 de janeiro de 2012

Exercícios 6 e 7 da lista de variáveis compostas

Pessoal aqui estão os dois algoritmos:


algoritmo " Exercicio 7"
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var
numeros:vetor[0..49] de inteiro
i,np,p:inteiro
inicio
// Seção de Comandos
para i de 0 ate 49 faca
   //numeros[i]<-i*i*3+3*i-2
     leia (numeros[i])
   //escreval(numeros[i])
fimpara
escreval("Digite um numero!")
leia(np)
p<-0
para i de 0 ate 49 faca
   se np=numeros[i] entao
      p<-i
   fimse
fimpara
se p<>0 entao
   escreval("O elemento ",np," encontra-se na posição: ",p)
senao
   escreval("O elemento ",np," não foi encontrado no vetor.")
fimse

fimalgoritmo



algoritmo " Exercicio 6 "
// Função :
// Autor :
// Data : 18/01/2012
// Seção de Declarações
var  resposta: vetor[0..19] de literal
i,rs,rn:inteiro

inicio
// Seção de Comandos
para i de 0 ate 19 faca
   leia (resposta[i])
fimpara
escreval ("A 9ª pessoa respondeu ",resposta[8])
rs<-0
rn<-0
para i de 0 ate 9 faca
   se resposta[i]="sim" entao
      rs<-rs+1
   fimse
fimpara
para i de 10 ate 19 faca
   se resposta[i]="nao" entao
      rn<-rn+1
   fimse
fimpara
escreval("Respostas das 10 primeiras sim= ",rs)
escreval("Respostas das 10 últimas   não= ",rn)
se rs>rn entao
   escreval("A quantidade de respostas sim foi maior")
senao
   se rs<rn entao
     escreval("A quantidade de respostas Não foi maior")
   senao
     escreval("A quantidade de respostas sim e não foram iguais.")
   fimse
fimse
fimalgoritmo

terça-feira, 17 de janeiro de 2012

Solução do Exercicio de logica 2 de arrays


algoritmo "listagem de pessoas"
// Função :
// Autor : JorgeFox
// Data : 17/01/2012
// Seção de Declarações
var
nome,sexo: vetor[0..4] de literal
idade: vetor[0..4] de inteiro
i:inteiro
inicio
// Entrada de Dados
i<-0
para i de 0 ate 4 faca
   escreval("Nome   : ")
   leia (nome[i])
   escreval("Sexo   : ")
   leia (sexo[i])
   escreval("Idade  : ")
   leia(idade[i])
   i<-i+1
fimpara
//processamento e saida
limpatela
escreva("------ idades maior que a primeira -----")
para i de 1 ate 4 faca
   se idade[0]<idade[i] entao
      escreval(nome[i]," - ",sexo[i]," - ",idade[i])
   fimse
fimpara
escreva("------ todos homens menores 21 anos -----")
para i de 1 ate 4 faca
   se (idade[i]<21) e (sexo[i]="M") entao
      escreval(nome[i])
   fimse
fimpara
escreva("------ todas mulheres--")
para i de 1 ate 4 faca
   se ( (sexo[i]="F") entao
      escreval(nome[i]," - ",sexo[i]," - ",idade[i])
   fimpara
fimalgoritmo

domingo, 15 de janeiro de 2012

Orientação a objetos

O termo Orientação a Objetos é um termo que nos últimos 16 ou 17 anos tem se tornado um sonho para uns e  um pesadelo para outros. De fato para mim inicialmente foi um pesadelo, porém não me deixei levar pelos mitos que me tentaram impor. Fui atrás das informações.
Programação orientada a objeto não é um termo muito novo apesar de recentemente ter uma maior procura. Podemos citar como linguagens orientadas a objeto:  C++, C♯, VB.NET, Java, Object Pascal, Objective-C, Python, SuperCollider, Ruby e Smalltalk (fonte wikkipedia).
Mas o que venha a ser um objeto? Abstraia você a respeito de algo do mundo real, por exemplo um Cliente. Deve se descrever todas as ações que um Cliente pode ter ou relacionamento que deva ter com outros seres do mundo real (objetos). A partir dessa descrição é necessário alimentar um programa chamado Classe que poderá ser chamado a qualquer momento, instância ou objeto. 
Abstração? É a forma de pensar em algo ou contexto que sem levar em relevância aspectos mais complexos de existência ou funcionamento.

Paradigma o que é? É o que todos nos estamos acostumados a fazer mas sem perceber usamos no nosso dia a dia, modelos. Todos nos temos um modelo de vida, um modelo de comportamento, um modelo de personalidade, enfim todos temos um modo de fazer as coisas. Em programação temos o paradigma Orientado a Objeto.
Para se programar orientado a objeto é necessário que seja compreendido como se expõe a lógica de programação, use um paradigma anterior chamado de programação estruturada ou Top Down. Porque digo isso? Dentro de cada comportamento que desejamos que um objeto tenha é necessário que escreva procedimentos simples ou que chame outras instâncias de classes(objetos qualificados).
Um programa orientado a objeto tem um programa principal que chamaremos de classe principal que fará a inicialização de outras classes na memoria do computador onde está executando. Toda classe principal tem um método chamado principal (main) que é executado todas as vezes que é inicializado na memória(instanciado). Por sua vez toda vez que uma classe é instanciada um método chamado CONSTRUTOR, é executado com o objetivo de alimentar os atributos da classe com o objetivo de criar o objeto. O seu comportamento depende de quanto a classe está qualificada ou seja, a quantidade e eficiência de comportamentos disponibilizados pela classe.
O método construtor sempre é criado vazio mesmo que o programado não o faça, pois haverá circunstâncias em que devemos criar um objeto vazio. Para a maioria dos FRAMEWORKS é essencial o uso de construtores vazios ou com vários parâmetros.
Porém, o uso desse paradigma depende do amadurecimento de estruturas mentais e de maneiras de programar, portanto, para aprender a programar OO é necessário ABSTRAIR.
Aguardem novos post referentes a programação orientada a objeto. Luzes!

Algoritimizado a Lógica.

Não é pretensão minha ser um exímio conhecedor do português e nem tão pouco um catedrático ao ponto de criar um neologismo. O termo Algoritimizando a Lógica me foi apresentado numa apostila de lógica da professora Vanessa, que hoje uso no Senai para os cursos do F.A.T, por sinal ótima no seu objetivo.
Quando pensamos em algo e sentimos a necessidade de expor nosso raciocínio encontramos dificuldades em expor nosso pensamento. 
Demonstrar é um atributo que poucas pessoas tem, mas que pode ser facilitado, pelo uso de uma ferramenta muito interessante, principalmente para nos programadores. 
Programadores usam uma linguagem própria que as vezes dificultam sua interlocução com o mundo externo, dai o temor nerd, ser aplicado a qualquer programador mais introvertido, risos.
Segundo a wikkipedia lógica é a arte da demonstração, mas demonstrar o funcionamento de um programa de computador não é uma tarefa muito simples. Principalmente para quem esta entrando nessa área agora. 
Sinto em minhas aulas que a dificuldade encontrada por parte dos alunos é o assombro que paira, quando o exercício é pensar. Pensar faz com que as pessoas enfrente desafios no que se refere a abstração sobre o funcionamento dos desafios que lhes são apresentados.  Sem essa prerrogativa fica difícil expor nossos pensamentos no que se refere à lógica.

Usar o algoritmo faz com que possamos expressar o que pensamos em termos de funcionamento de um programa com poucas palavras. As palavras usadas nos algoritmos são chamadas de PALAVRAS CHAVES e o seu conhecimento é fundamental para que o aluno entenda o que se propõe frente a um determinado desafio.
Todo algoritmo deve ser analisado e extraído do problema proposto, toda informação do que se pretende alcançar, ou seja, com os dados de entrada desejamos obter uma nova informação. Além disso devemos pensar em um algoritmo de um velho, mas eficiente, processo de três etapas: Entrada ==> Processamento ==>Saída. Obter os dados de entrada e achar uma formula de processa-los para obter a saída desejada é o único caminho a ser seguido para quem procura aprender a arte da lógica.
Espero ter trazido luzes para o seu conhecimento, te aguardo novamente aqui. Abraço a todos.

sexta-feira, 13 de janeiro de 2012

Algoritmo para Calculo de Imposto - Exercicio 2

Oi pessoal
Aqui esta a correção do algoritmo da nossa aula de algoritmos.

algoritmo "CalculoImpostos"
// Função :
// Autor :JorgeFox
// Data : 13/01/2012
// Seção de Declarações
var
valor:real
inicio
// Seção de Comandos
escreval("Valor da venda ")
leia (valor)
escolha valor
   caso  0 ate 1200.00
      escreval("Isento")
   caso  1200.01 ate 5000.00
      escreval("Valor do imposto 10% R$",valor*0.1)
   caso  5000.01 ate 10000.00
      escreval("Valor do imposto 15% R$",valor*0.15)
   outrocaso
      escreval("Valores acima de R$10.000,00 20% = R$",valor*0.2)
fimescolha
fimalgoritmo

Lembre-se de usar o visualg que permite fazer o teste de mesa.
Até o proximo post.

domingo, 8 de janeiro de 2012

Servlet para logon

Oi pessoal,

Hoje vou mostrar uma classe do tipo Servlet que pode ser usada para validar um usuário em uma aplicação Web usando Java Server Pages(JSP).
Mas para isso vamos inicialmente criar um banco de dados chamado WebSistemaCR em MySql com uma tabela chamada Usuário e em seguida criamos a classe Usuario e UsuarioPU(unidade de persistência) usando Hibernate.
O arquivo login.jsp também será mostrado para que a demonstração fique completa.
Sugiro que você use o Netbeans para acompanhar este exemplo.
O script de criação da tabela no MySql é o seguinte:


Create Database WebSistemaCR;

CREATE TABLE  `usuario` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `senha` varchar(15) NOT NULL,
  `usuario` varchar(20) NOT NULL,
  PRIMARY KEY (`idUsuario`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

Classe Usuário gerada diretamente do NetBeans como uma classe de banco de dados:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Jorgefox
 */
@Entity
@Table(name = "usuario")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"),
    @NamedQuery(name = "Usuario.findByIdUsuario", query = "SELECT u FROM Usuario u WHERE u.idUsuario = :idUsuario"),
    @NamedQuery(name = "Usuario.findBySenha", query = "SELECT u FROM Usuario u WHERE u.senha = :senha"),
    @NamedQuery(name = "Usuario.findByUsuario", query = "SELECT u FROM Usuario u WHERE u.usuario = :usuario")})
public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idUsuario")
    private Integer idUsuario;
    @Basic(optional = false)
    @Column(name = "senha")
    private String senha;
    @Basic(optional = false)
    @Column(name = "usuario")
    private String usuario;

    public Usuario() {
    }

    public Usuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Usuario(Integer idUsuario, String senha, String usuario) {
        this.idUsuario = idUsuario;
        this.senha = senha;
        this.usuario = usuario;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUsuario != null ? idUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Beans.Usuario[ idUsuario=" + idUsuario + " ]";
    }
 
}


Agora vamos listar a classe UsuarioPU.

/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package Persistencia; 
/**
 *
 * @author jorgefox
 */
import JavaBeans.Usuario;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction; 
public class UsuarioPU extends Conexao { 
    Conexao cnx = new Conexao(); 
    public boolean salvar(Usuario us, boolean op) {
        try {
            Session ss = cnx.retornaSessao();
            Transaction ts = ss.beginTransaction();
            if (!op) {
                //significa que é uma inclusão e op=false.
                ss.save(us);
            } else {
                //significa que é uma atualização s op=true.
                ss.update(us);
            }
            ts.commit();
            ss.close();
            return true;
        } catch (HibernateException e) {
            System.out.println("Deu erro de conexão!" +
e.getMessage());
            return false;
        }
    } 
    public List<Usuario> pesquisa(String sql) {
        List<Usuario> lu = null;
        try {
            System.out.println("Dentro da pesquisa : " + sql);
            Session ss = cnx.retornaSessao();
            lu = ss.createQuery(sql).list();
            if (lu.isEmpty()) {
                System.out.println("Não há clientes para esta
consulta.");
            }
            ss.close();
            return lu;
        } catch (HibernateException e) {
            System.out.println("Erro com Hibernate : " +
e.getMessage());
            return lu;
        }
    } 
    public Usuario getUsuario(int id) {
        String sql = "from Usuario where id=" + id;
        List<Usuario> lu = pesquisa(sql);
        if (lu.isEmpty()) {
            return new Usuario();
        } else {
            Iterator ilu = lu.listIterator();
            return (Usuario) ilu.next();
        }
    } 
    public boolean deletar(Usuario us) {
        try {
            Session ss = cnx.retornaSessao();
            Transaction ts = ss.beginTransaction();
            ss.delete(us);
            ts.commit();
            ss.close();
            return true;
        } catch (HibernateException e) {
            System.out.println("Erro provocado por : " +
e.getMessage());
            return false;
        }
    } 

E aqui vai o Servlet

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import JavaBeans.Usuario;
import Persistencia.UsuarioPU;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
/**
 *
 * @author jorgefox
 */
public class ServletValida extends HttpServlet { 
    /**
     * Processes requests for both HTTP <code>GET</code> and
<code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            //TODO output your page here
            String usuario = request.getParameter("usuario");
            String senha = request.getParameter("senha");
            String[] escolha = request.getParameterValues("escolha");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ServletValida</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1> Olá " + usuario + " acabei de chegar do
formulario. </h1>");
            out.println("<h2> Eu sei a sua senha e ela é : " + senha +
" </h2>");
            for (int i = 0; i < escolha.length; i++) {
                out.println("escolha[" + i + "]= " + escolha[i]);
            }
            out.println("</body>");
            out.println("</html>"); 
        } finally {
            out.close();
        }
    } 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet
methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    } 
    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request,
HttpServletResponse response)
            throws ServletException, IOException {
        // processRequest(request, response);
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String usuario = request.getParameter("usuario");
        String senha = request.getParameter("senha");
        String[] escolha = request.getParameterValues("escolha");
        if (usuario.isEmpty() || senha.isEmpty()) {
            out.println("Usuario ou senha vazios.");
        } else {
            Usuario us;
            List<Usuario> lu;
            UsuarioPU uspu = new UsuarioPU();
            lu = uspu.pesquisa("from Usuario where usuario='" +
usuario + "'");
            Iterator ilu = lu.listIterator();
            us = (Usuario) ilu.next();
            if (us.getUsuario().equalsIgnoreCase(usuario) &&
us.getSenha().equalsIgnoreCase(senha)) {
                out.println("Ok pode passar");
            } else {
                out.println("Usuario ou senha invalidos.");
            }
        }
    } 
    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }

Caso você tenha dificuldades com o código entre em contato comigo pelo blog. Agora vou deixar o codigo jsp para fazer o teste.

<%-- 
    Document   : login
    Created on : 26/12/2011, 16:51:27
    Author     : stella
--%>


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form method="post" action="autentica">
            <table align="center">
                <tr>
                    <td>Usuario</td>
                    <td><input type="text" name="usuario"/></td>
                </tr>
                <tr>
                    <td>Senha</td>
                    <td><input type="password" name="senha"/></td>
                </tr>
                <tr>
                    <td><input type="submit" name="acao" value="Logon"/></td>
                    <td></td>
                </tr>
            </table>
        </form>
    </body>
</html>

Espero ter contribuído de alguma forma para seu aprendizado em java.








domingo, 1 de janeiro de 2012

Continuando o código Java para DropdownList

No post anterior eu criei um array que define os elementos do dropdownlist. Neste novo conteúdo vamos escrever o código que serve tanto para inclusão ou alteração.
Supondo que sua página é escrito em JSP fica assim:
arquivo: cadastraCliente.jsp


<%@page import="javabeans.Cliente"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Decide</title>
        <script type="text/javascript" src="scripts/rotinas.js"></script>
    </head>
    <body>
        <%
            Cliente cl = (Cliente) request.getAttribute("Cliente");

        //int id=Integer.parseInt(request.getParameter("id"));
        //Cliente cli=(new Cliente().getCliente(id));
        // array de estados
            String[][] estados = {{"AC", "Acre"},
                {"AL", "Alagoas"},
                {"AP", "Amapá"},
                {"AM", "Amazonas"},
                {"BA", "Bahia"},
                {"CE", "Ceará"},
                {"DF", "Distrito Federal"},
                {"ES", "Espirito Santo"},
                {"GO", "Goiás"},
                {"MA", "Maranhão"},
                {"MT", "Mato Grosso"},
                {"MS", "Mato Grosso do Sul"},
                {"MG", "Minas Gerais"},
                {"PA", "Pará"},
                {"PB", "Paraiba"},
                {"PE", "Pernambuco"},
                {"PI", "Piauí"},
                {"PR", "Paraná"},
                {"RJ", "Rio de Janeiro"},
                {"RN", "Rio Grande do Norte"},
                {"RS", "Rio Grande do Sul"},
                {"RO", "Rondônia"},
                {"RR", "Roraima"},
                {"SC", "Santa Catarina"},
                {"SE", "Sergipe"},
                {"SP", "São Paulo"},
                {"TO", "Tocantins"}};
        %>
        <form method="post" action="gravaCliente.jsp">
            <table align="center">
                <tr>
                    <td>Id</td>
                    <td>

                        <input type="hidden" name="id" value="00"/>
                    </td>
                </tr>
                <tr>
                    <td>Nome</td>
                    <td><input  type="text" name="nome" value="<%=cl.getNome()%>"/></td>                  
                </tr>
                <tr>
                    <td>Endereço</td>
                    <td><input  type="text" name="endereco" value="<%=cl.getEndereco()%>"/></td>                  
                </tr>
                <tr>
                    <td>Telefone</td>
                    <td><input  type="text" name="telefone" value="<%=cl.getTelefone()%>"/></td>                  
                </tr>
                <tr>
                    <td>Cidade</td>
                    <td><input  type="text" name="cidade" value="<%=cl.getCidade()%>"/></td>                  
                </tr>
                <tr>
                    <td>Estado</td>
                    <td><select name="estado" >
                            <%
                                for (int i = 0; i < 27; i++) {
                                    if (cl.getEstado().equalsIgnoreCase(estados[i][0])) {
                            %>
                            <option value="<%=estados[i][0]%>" selected><%=estados[i][1]%></option>
                            <%} else {%>
                            <option value="<%=estados[i][0]%>"><%=estados[i][1]%></option>
                            <%}%>
                            <%}%> </select></td>                  
                </tr>
                <tr>
                    <td>Cep</td>
                    <td><input  type="text" name="cep" value="<%=cl.getCep()%>"/></td>                  
                </tr>
                <tr>
                    <td>C.P.F</td>
                    <td><input  type="text" name="cpf" value="<%=cl.getCpf()%>" /></td>                  
                </tr>
                <tr>
                    <td><a href="ListaClientes.jsp">Lista de Clientes</a></td>
                    <td><input type="Submit" name="salvar" value="Gravar"/></td>
                    <td></td>                  
                </tr>
            </table>

    </body>
</html>

É isso ai pessoal, no próximo post espero contribuir mais para o entendimento das linguagens de programação.
Abraço e até lá.