quinta-feira, 29 de abril de 2010

Escrever valor monetário por extenso

package umcastec;

import java.math.BigDecimal;

import java.math.BigInteger;

import java.util.ArrayList;

import java.util.Iterator;

public class Escrver_Extenso{
private ArrayList nro;


private BigInteger num;
private String Qualificadores[][] = {{"centavo", "centavos"},

{"", ""}, {"mil", "mil"},
{"milhão", "milhões"},
{"bilhão", "bilhões"},
{"trilhão", "trilhões"},
{"quatrilhão", "quatrilhões"}, {"quintilhão", "quintilhões"},
{"sextilhão", "sextilhões"}, {"septilhão", "septilhões"}};
private String Numeros[][] = {
{"zero", "um", "dois", "três", "quatro", "cinco", "seis", "sete",
"oito", "nove", "dez", "onze", "doze", "treze", "quatorze",
"quinze", "desesseis", "desessete", "dezoito", "desenove"},
{"vinte", "trinta", "quarenta", "cinquenta", "sessenta",
"setenta", "oitenta", "noventa"},
{"cem", "cento", "duzentos", "trezentos", "quatrocentos",
"quinhentos", "seiscentos", "setecentos", "oitocentos",
"novecentos"}};
/** * Construtor */
public JExtenso() {
nro = new ArrayList();

}
/** * Construtor
*
* @param dec
* valor para colocar por extenso */
public JExtenso(BigDecimal dec) {
this();
setNumber(dec);
}
/**
* Constructor for the JExtenso object
* @param dec
* valor para colocar por extenso */
public JExtenso(double dec) {
this();
setNumber(dec); }
/**
* Sets the Number attribute of the JExtenso object
*
* @param dec
* The new Number value */
public void setNumber(BigDecimal dec) {
// Converte para inteiro arredondando os centavos
num = dec.setScale(2, BigDecimal.ROUND_HALF_UP).multiply(
BigDecimal.valueOf(100)).toBigInteger();
// Adiciona valores
nro.clear();
if (num.equals(BigInteger.ZERO)) {
// Centavos
nro.add(new Integer(0));
// Valor
nro.add(new Integer(0));
} else {
// Adiciona centavos
addRemainder(100);
// Adiciona grupos de 1000
while (!num.equals(BigInteger.ZERO)) {
addRemainder(1000);
}
}
}
public void setNumber(double dec) {
setNumber(new BigDecimal(dec)); }
/** * Description of the Method */
public void show() {
Iterator valores = nro.iterator();
while (valores.hasNext()) {
System.out.println(((Integer) valores.next()).intValue());
}
System.out.println(toString()); }
/**
* Description of the Method *
* @return Description of the Returned Value */
@Override public String toString() {
StringBuffer buf = new StringBuffer();
int numero = ((Integer) nro.get(0)).intValue();
int ct;
for (ct = nro.size() - 1; ct > 0; ct--) {
// Se ja existe texto e o atual n�o � zero
if (buf.length() > 0 && !ehGrupoZero(ct)) {
buf.append(" e "); }
buf.append(numToString(((Integer) nro.get(ct)).intValue(), ct)); }
if (buf.length() > 0) {
if (ehUnicoGrupo()) {
buf.append(" de "); }
while (buf.toString().endsWith(" ")) {
buf.setLength(buf.length() - 1); }
if (ehPrimeiroGrupoUm()) {
buf.insert(0, ""); }
if (nro.size() == 2 && ((Integer) nro.get(1)).intValue() == 1) {
buf.append(" real");
} else {
buf.append(" reais"); }
if (((Integer) nro.get(0)).intValue() != 0) {
buf.append(" e "); } }
if (((Integer) nro.get(0)).intValue() != 0) {
buf.append(numToString(((Integer) nro.get(0)).intValue(), 0)); }
return buf.toString(); }
private boolean ehPrimeiroGrupoUm() {
if (((Integer) nro.get(nro.size() - 1)).intValue() == 1) {
return true; } return false; }
/**
* Adds a feature to the Remainder attribute of the JExtenso object
*
* @param divisor
* The feature to be added to the Remainder attribute */
private void addRemainder(int divisor) {
// Encontra newNum[0] = num modulo divisor, newNum[1] = num dividido
// divisor
BigInteger[] newNum = num.divideAndRemainder(BigInteger.valueOf(divisor));
// Adiciona modulo
nro.add(new Integer(newNum[1].intValue()));
// Altera numero
num = newNum[0]; }
/** * Description of the Method *
* @param ps
* Description of Parameter
* @return Description of the Returned Value */
private boolean temMaisGrupos(int ps) {
for (; ps > 0; ps--) {
if (((Integer) nro.get(ps)).intValue() != 0) {
return true; } }
return false; }
/** * Description of the Method
*
* @param ps
* Description of Parameter
* @return Description of the Returned Value */
private boolean ehUltimoGrupo(int ps) {
return (ps > 0) && ((Integer) nro.get(ps)).intValue() != 0
&& !temMaisGrupos(ps - 1); }
/**
* Description of the Method
*
* @return Description of the Returned Value */
private boolean ehUnicoGrupo() {
if (nro.size() <= 3) {
return false; }
if (!ehGrupoZero(1) && !ehGrupoZero(2)) {
return false; }
boolean hasOne = false;
for (int i = 3; i < hasone =" true;">= nro.size()) {
return true;
} return ((Integer) nro.get(ps)).intValue() == 0; }
/** * Description of the Method
*
* @param numero
* Description of Parameter
* @param escala
*Description of Parameter
* @return Description of the Returned Value */
private String numToString(int numero, int escala) {
int unidade = (numero % 10);
int dezena = (numero % 100); // * nao pode dividir por 10 pois
// verifica de 0..19
int centena = (numero / 100);
StringBuffer buf = new StringBuffer();
if (numero != 0) {
if (centena != 0) {
if (dezena == 0 && centena == 1) {
buf.append(Numeros[2][0]);
} else {
buf.append(Numeros[2][centena]); }
} if ((buf.length() > 0) && (dezena != 0)) {
buf.append(" e "); }
if (dezena > 19) {
dezena /= 10;
buf.append(Numeros[1][dezena - 2]);
if (unidade != 0) {
buf.append(" e ");
buf.append(Numeros[0][unidade]);
}
} else if (centena == 0 || dezena != 0) {
buf.append(Numeros[0][dezena]);
}
buf.append(" ");
if (numero == 1) {
buf.append(Qualificadores[escala][0]);
} else {
buf.append(Qualificadores[escala][1]);
}
}
return buf.toString();
} }


Main.java
package umcastec;
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {

String extenso;

Double totProd = 1000.0;

JExtenso je = new JExtenso(new BigDecimal(totProd));
extenso = je.toString().toUpperCase();

System.out.println(extenso + " - "+ je);

//sída console

//UM MIL REAIS - um mil reais

//

} }
Código enviado por Ciro S. Santos

Criando uma ArrayList do tipo Inteiro

ArrayList suporta arrays dinâmicos, que pode crescer conforme necessário.
Em Java, arrays são padrão de um comprimento fixo. Depois de arrays são criados,
eles não podem crescer ou encolher, o que significa que você deve saber antecipadamente
quantos elementos uma matriz irá realizar. Mas, às vezes, você não pode saber com
precisão o tempo de execução até o tamanho de uma matriz que você precisa. Para lidar com esta situação, a estrutura das coleções define ArrayList.



package umcastec;

import java.util.ArrayList;

public class Principal {

public static void main(String[] args) {
// TODO code application logic here

ArrayList array_list_int = new ArrayList();
//adiciona itens na lista manualmente
array_list_int.add(0);
array_list_int.add(1);
array_list_int.add(2);
array_list_int.add(3);
//imprime de acordo com a posição informada manualmente no array list
System.out.println("Posição 0 :"+array_list_int.get(0));
System.out.println("Posição 1 :"+array_list_int.get(1));
//----------
saída no console
//Posição 0 :0
//Posição 1 :1
//----------

//exibe todos valores da lista
for(int i = 0; i "<" array_list_int.size(); i++){
//dessa for irá imprimir todos os registros do array list
System.out.println(array_list_int.get(i));
//----------saída no console
// 0
// 1
// 2
// 3
//----------
}
}
}

Obs: no for() o sinal "<" esta entre aspas!
Porque o sistema do Blogger interpreta como tag de HTML

sexta-feira, 23 de abril de 2010

Operador ternário

Operador ternário ou operador condicional tem objetivo de atribuir um valor a uma variável
de acordo com o resultado de um teste lógico.

Sintaxe:

Teste lógico (?) valor se for verdadeiro (:) valor se for falso


Teste lógico -> é qualquer expresão que pode ser avaliado como verdadeiro ou falso

Exemplo:

package umcastec;

public class Oper_Tern {

public static void main(String args[]) {
/*
* Operador ternário
*/
int x = 2;

int y = 4;
String verdade = "sim";

String falso = "não";

System.out.println(x ">" y ? verdade : falso);
// saída console não
System.out.println(x "<" y ? verdade : falso);
// saída console sim
System.out.println(x == y ? verdade : falso);
// saída console não
System.out.println(x != y ? verdade : falso);
// saída console sim

}
}

Obs: nos dois primeiros System.out... o sinal "<" e ">" então entre aspas!
Porque o sistema do Blogger interpreta como tag de HTML

sexta-feira, 16 de abril de 2010

Mês atual em Java

Um exemplo simples de saber em que mês estamos usando switch() case():

package umcastec;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex_mes_atual_case {

@SuppressWarnings("deprecation")
public static void main(String args[]){
Date data = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

String dataatual = sdf.format(data);

int h = data.getMonth();
switch(h){
case(0):
System.out.println("Janeiro - " + dataatual);
break;
case(1):
System.out.println("Fevereiro - " + dataatual);
break;
case(2):
System.out.println("Março - " + dataatual);
break;
case(3):
System.out.println("Abril - " + dataatual);
break;
case(4):
System.out.println("Maio - " + dataatual);
break;
case(5):
System.out.println("Junho - " + dataatual);
break;
case(6):
System.out.println("Julho - " + dataatual);
break;
case(7):
System.out.println("Agosto - " + dataatual);
break;
case(8):
System.out.println("Setembro - " + dataatual);
break;
case(9):
System.out.println("Outubro - " + dataatual);
break;
case(10):
System.out.println("Novembro - " + dataatual);
break;
case(11):
System.out.println("Dezembro - " + dataatual);
break;
}
}
}


Um outro exemplo simples de saber em que mês estamos com Array:

package umcastec;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex_mes_atual_Array {

@SuppressWarnings("deprecation")
public static void main(String args[]){
Date data = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

String dataatual = sdf.format(data);

int h = data.getMonth();
String[] mesatual = {
"Janeiro",
"Fevereiro",
"Março",
"Abril",
"Maio",
"Junho",
"Julho",
"Agosto",
"Setembro",
"Outubro",
"Novembro",
"Dezembro",
};
System.out.println(mesatual[h] + " - " + dataatual);
}
}


quinta-feira, 15 de abril de 2010

O Next, é um framework para desenvolvimento de aplicações JEE. Baseado em Spring e Hibernate, tem como foco facilitar o trabalho do programador e dar produtividade ao desenvolvimento de aplicações web. Conta com diversos recursos que irão turbinar o desenvolvimento de suas aplicações.




Criador do Framework: Rógel Garcia

Contar total de letras, vogais e consoantes de uma String


public class contarString {

public static void main(String args[]){


String palavra = "umcastec";

int qnt_vogais = 0;

//Obs: no sinal de "menor que " eu tive que colocar entre aspas "<" por causa do
//Blogger que indentifica como tag HTML

for(int i = 0; i "<" palavra.length(); i++){

if(

palavra.charAt(i) == 'a'
|| palavra.charAt(i) == 'e'
|| palavra.charAt(i) == 'i'
|| palavra.charAt(i) == 'o'
|| palavra.charAt(i) == 'u'
|| palavra.charAt(i) == 'A'
|| palavra.charAt(i) == 'E'
|| palavra.charAt(i) == 'I'
|| palavra.charAt(i) == 'O'
|| palavra.charAt(i) == 'U'

){

qnt_vogais += 1;

}
}

int qnt_palavra = palavra.length();

int qnt_consoante = qnt_palavra - qnt_vogais;


System.out.println("Essa palavra tem: "+ qnt_palavra + " caracteres sendo " + qnt_vogais + " vogais e "+ qnt_consoante +" consoantes");

}
}


/*Saída no console

Essa palavra tem: 8 caracteres sendo 3 vogais e 5 consoantes

*/

Obs: no sinal de "menor que " no FOR eu tive que colocar entre aspas "<" por causa do
Blogger que indentifica como tag HTML

Entendendo a plataforma Java, para leigos

Quando falamos em programação Java, muitas pessoas pensam estamos nos referindo a uma linguagem de programação. Mas Java além de uma linguagem de programação, é também uma máquina virtual, APIs e especificações. Nesse tutorial iremos organizar o pensamento para entender o que é cada parte da plataforma Java e também o que são todas aquelas siglas.

1. Um pouco de história

Voltando um pouco no tempo, no início da programação, nós tinhamos a linguagem Assemby. A linguagem assembly nada mais é do que instruções diretas para o processador. Cada comando nessa linguagem equivale a um comando para o processador executar. Dizemos que esses comandos são instruções de máquina.

Com a evolução da computação começamos a ter linguagens mais robustas de mais alto nível como a linguagem C. Numa linguagem de programação dessas, um comando no código fonte equivale a várias instruções de máquina. A relação não é um para um, como era no assembly. Então um novo componente da programação entrou em questão: o compilador. O compilador é o responsável em traduzir o programa em linguagem C para um programa em linguagem de máquina. Essa linguagem de máquina, serve para um processador específico, ou seja, um programa compilado para um processador não serve para um processador diferente.

Os sistemas operacionais também possuem seu conjunto de instruções e a forma como deve ser montado o executável é diferente. Então, além da compilação ser feita especificamente para determinado processador, ela deve ser feita para determinado sistema operacional também. Por isso um programa compilado para Windows não roda no Linux, e vice versa. Vamos chamar essas instruções para o sistema operacional de código nativo.

2. .java .class e bytecodes

Em Java, as coisas mudam novamente. Um programa Java não é compilado para um código nativo como é feito em um programa C. Quando compilamos um arquivo .java (que é a extensão de um programa Java, assim como .c é a extensão de um programa C) geramos um código intermediário, chamado bytecode que fica em um aquivo .class.

Um arquivo .java contém o código fonte, que depois de compilado vira um arquivo .class. Esse arquivo .classcontém instruções chamadas de bytecodes. Esses bytecodes são um código intermediário e não servem para ser executados por nenhum sistema operacional, não é um código nativo.

3. A máquina virtual

Os bytecodes não servem para ser executados por nenhum sistema operacional. Ao invés de executar os bytecodes diretamente, precisaremos de um programa, que leia cada bytecode e traduza para um código nativo. Assim podemos executar nosso programa Java. Esse programa que faz a tradução dos bytecodes e envia código nativo para o sistema executar é a máquina virtual, conhecida também como JVM (Java Virtual Machine). A máquina virtual é um programa, e vimos que um programa é especifico para determinado sistema operacional. Logo, existe uma máquina virtual para o windows que traduzirá os bytecodes para códigos nativos de windows, outra máquina virtual para linux que traduzirá os bytecodes para código nativo de linux, e assim por diante. No windows o programa da máquina virtual é o java.exe, e ele recebe como parâmetro quais arquivos .class devem ser executados. Lembrando que dentro dos arquivos .class existem os bytecodes.

4. Linguagem Orientada a Objetos

A linguagem Java é orientada a objetos. Cada classe Java está em um arquivo .java (geralmente) e cada arquivo.java é compilado e vira um .class. Para cada classe temos um .class então. Numa aplicação teremos centenas de arquivos .java e .class. Podemos agrupar um conjunto de arquivos .class em um arquivo .jar, um arquivo JAR (Java Archive) nada mais é um arquivo no formato zip com vários arquivos .class dentro (pode ser incluido opcionalmente os arquivos .java se desejar levar o código fonte junto). Os arquivos JAR as vezes podem ser referênciados como bibliotecas.

Um grupo de classes que servem para resolver determinado problema, como leitura e escrita em arquivos, nós chamamos de API (Application Program Interface). Inclusive, a API utilizada para manipulação de arquivos chama-se Java IO. As APIs são distribuidas em arquivos JAR, mas um arquivo JAR pode ter mais de uma API. O conceito de API é apenas para nós humanos, para a máquina virtual isso não faz diferença, o que importa são as classes.

A plataforma Java além da máquina virtual e da linguagem de programação é constituida também de uma série de APIs. Todo programa Java necessita de um conjunto básico de classes para funcionar, esse conjunto básico você consegue quando baixa a plataforma.

5. Ambiente de execução

Vimos que para executar um programa Java, precisamos de uma máquina virtual e as APIs do Java no mínimo. Onde conseguimos isso? A máquina virtual e as APIs são distribuidas num pacote chamado JRE (Java Runtime Environment). Esse pacote pode ser baixado no site da SUN http://java.sun.com/javase/downloads/index.jsp, a SUN é a mantenedora da plataforma Java. Voce já deve ter acessado algum site de banco que necessitou que você tivesse o Java instalado, esse Java a que o site se refere é o JRE. É no JRE que está o java.exe, que é a máquina virtual.

6. Java para desenvolvedores

Se você é um programador, necessitará algo mais do que o JRE. Precisará também do compilador da linguagem e seria interessante ter os códigos fonte das APIs (isso facilita muito o desenvolvimento). Esse conjunto destinado ao programador é o JDK (Java Development Kit). Dentro do JDK está também o JRE, então, não será necessário baixar os dois. O JDK também está disponível no site da Sun. No JDK vem o programa compilador da linguagem Java, no windows seria o javac.exe.

7. As diversas plataformas Java

Existem três conjuntos básicos de APIs em Java, que se diferem pela API utilizada principalmente, são eles:

Java ME (Micro Edition): Java para celulares e palm, tem uma máquina virtual que já vem com os equipamentos e possui uma API mais restrita já que os recursos computacionais desses equipamentos são mais limitados.

Java SE (Standard Edition): Java para desktop, contém a máquina virtual e APIs para programação em Java. Se for aprender Java começe por essa plataforma.

Java EE (Enterprise Edition): Java para web, contém tudo da plataforma SE e mais um pouco. Utiliza a mesma máquina virtual do SE.

Quando você for fazer download, com exceção do Java ME, não existirá distinção entre qual plataforma você precisará. Independente se é SE ou EE, você precisará do JRE ou JDK (que são o Java SE).

As APIs do Java EE geralmente vem em plugins para o ambiente de desenvolvimento ou no servidor de aplicações que for utilizar. Há sim, em JEE você precisará de um servidor de aplicações que roda na JVM.

8. Ambiente de desenvolvimento

Ao invés de ficar programando em bloco de notas e utilizando o javac em linha de comando, é mais interessante utilizar um ambiente de desenvolviemnto, chamdo IDE (Integrated Development Environment). Os ambientes mais comuns em Java são o Eclipse e o NetBeans.

9. Considerações finais

Apesar de muitos conceitos e siglas, a plataforma Java é muito poderosa e está presente em grande parte dos parques de programação do mundo. Agora que você já sabe quem é quem, está apto a começar seus estudos, é recomendável começar com o SE (Java para desktop) e quando tiver mais maturidade, entre no mundo web com o EE. Espero que tenha sido útil a explicação, até mais.


Autor: Rógel Garcia

Fonte: Java Framework (Entendendo a plataforma Java, para leigos)

Formatando campos Data com SimpleDateFormat

Vou mostrar a utilização da Classe SimpleDateFormat para formatar datas !

Exemplo de datas:

15/04/2010
04/15/2010
2010/04/15
15-04-2010

Exemplo em código:

import java.util.Date;

public class Dataemjava {

public static void main(String args[]) {

Date data = new Date();

SimpleDateFormat formatdata = new SimpleDateFormat("dd/MM/yyyy");//15/04/2010
//SimpleDateFormat formatdata = new SimpleDateFormat("MM/dd/yyyy");//04/15/2010
//SimpleDateFormat formatdata = new SimpleDateFormat("yyyy/MM/dd");//2010/04/15
//SimpleDateFormat formatdata = new SimpleDateFormat("dd-MM-yyyy");//15-04-2010

System.out.println(formatdata.format(data));

}

}


quarta-feira, 14 de abril de 2010

Converter uma Palavra para letras maiúsculas e vise versa

Bom, vou mostrar como converter uma String (Palavras ou letra) para maiúscula e vise versa!

Exemplo:

public class ConverterString {

public static void main(String args[]) {

//declaração das variáves
String min = "umcastec";
String mai = "UMCASTEC";

//metódo que converte Minúscula para Minúscula toUpperCase()
min = min.toUpperCase();
//metódo que converte Minúscula para Minúscula toLowerCase()
mai = mai.toLowerCase();

//imprime no console
System.out.println("Minúscula para Minúscula: " + min + " - " + mai);
System.out.println("Minúscula para Minúscula: " + mai + " - " + min);

/*saída no console:

Minúscula para Minúscula: UMCASTEC - umcastec
Minúscula para Minúscula: umcastec - UMCASTEC

*/

}

}

terça-feira, 13 de abril de 2010

Dividir String usando Expressãos Regular com Java


Hoje irei mostrar como dividir uma String usando Expressãos Regular com Java!

Isso é possível ? sim, mas não como você teve esta pensando String ex = "umcastec" / 2!(Brincadeira pessoal, só pra discontrair)

você pegar um valor de uma string e definir como ele será divida!

Exemplo: Quero peque um texto e divida - o a cada ponto "."
Seria assim:
public class DividirString {

public static void main(String args[]) {
String tes = "umcastec.blogspot.com";
String vogaiss[] = tes.split("\\.");


System.out.println("Resultado é \n" + vogaiss[0] + "\n" + vogaiss[1] + "\n" + vogaiss[2]);

/*//Saída no console
Resultado é:
umcastec
blogspot
com
*/

}
}

mais sobre Expressão Regular com Java!
Visite:

segunda-feira, 12 de abril de 2010

Session em JSP

Sobre Session(s) aqui:

Exemplo de Login e Senha com JSP/Servlet usando Session.

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Logar extends HttpServlet {

private static final long serialVersionUID = 1L;
String login;
String senha;

public Logar() {
super();
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//Pega os dados (logi e senha) informados pelo usúario!
setLogin(request.getParameter("login"));
setSenha(request.getParameter("senha"));

Logar(request, response);

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

public void Logar(HttpServletRequest request, HttpServletResponse response) throws IOException {

PrintWriter out = response.getWriter();

//verifica se os campos login e senha estão vazios!
if (login.equals("") && senha.equals("")) {

out.println("");
out.println("Os campos não podem ficar vazios! "<"a href=index.jsp>Voltar");
out.println("");

} else {
//faz a conexão com o Banco de Dados!
PreparedStatement ps = null;

Connection con = null;

try {

Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost/BD", "postgres", "postgres");
String sql = ("SELECT usuarios.nome,usuarios.login,usuarios.senha FROM usuarios where login = ? and senha = ?");

ps = con.prepareStatement(sql);

//passa os dados login e senha para a consulta SQL
ps.setString(1, getLogin());
ps.setString(2, getSenha());

ResultSet rs = ps.executeQuery();

//verifica se login e senha existe!
if (rs.next()) {
//aqui você pode por exemplo recuperar algumas informações do usúario logado!
//"nome" , "tipo"

//Pega um valor da coluna indicada! nesse caso a coluna "nome"
//vai trazer o Nome do Usúario com base no nome e login imformados
String nome = rs.getString("nome");

//Passa o login e senha para Session
request.getSession().setAttribute("loginUsuario", getLogin());
request.getSession().setAttribute("senhaUsuario", getSenha());

//Chama a página de acesso! Nesse caso irá chamar a página Session.jsp
//onde passará os valores de login e senha para a session
out.println("");
out.println(""<"script>document.location.href='sessions.jsp';");
out.println("");

} else {

//login e senha incorretos!
out.println("");
out.println("Login ou senha inválidos."<"a href=index.jsp>Voltar");
out.println("");

}

} catch (Exception e) {

System.out.println("Erro " + e);

}

}

}


//Getters Setters
public String getLogin() {
return login;
}

public void setLogin(String login) {
this.login = login;
}

public String getSenha() {
return senha;
}

public void setSenha(String senha) {
this.senha = senha;
}
}
//Estrutura do Banco de Dados PostgreSQL!
/*CREATE TABLE "public"."usuarios" (
"id" SERIAL,
"nome" VARCHAR(50) NOT NULL,
"login" VARCHAR(50) NOT NULL,
"senha" VARCHAR(50) NOT NULL,
"tipo" VARCHAR(50) NOT NULL,
CONSTRAINT "usuarios_login_key" UNIQUE("login"),
CONSTRAINT "usuarios_pkey" PRIMARY KEY("id")
) WITH OIDS;
*/


index.jsp



"<"form id="form1" name="form1" method="post" action="logar">
"<"table width="200" border="0" align="center">
"<"tr>
"<"td>Login:
"<"td>
"<"input type="text" name="login" id="login" />
"<"/label>
"<"/tr>
"<"tr>
"<"td>Senha:
"<"td>
"<"input type="password" name="senha" id="senha" />
"<"/label>
"<"/tr>
"<"tr>
"<"td>
"<"td>
"<"input type="submit" name="button" id="button" value="logar" />
"<"/label>
"<"/tr>
"<"/table>
"<"/form>"

sessions.jsp


"<"body>
"<"%
String senha = null;
String login = null;
//Pega os valores login e senha passados na Servlet
login = (String) request.getSession().getAttribute("loginUsuario");
senha = (String) request.getSession().getAttribute("senhaUsuario");

//passando os valores de login e senha para a Session!
session.putValue("loginUsuario", login);
session.putValue("senhaUsuario", senha);
//chama a Página Principal do sistema!
out.println(""<"script>document.location.href='Principal.jsp';");

%">"
"<"/body>


Principal.jsp

"<"/body>
"<"%
//Verifica se está logado
if(session.getValue("loginUsuario") != null || session.getValue("senhaUsuario") != null){
//deixando vázio ele mostrarar a página ! Nessa caso o conteúdo da página Principal.jsp.
} else {
//se a session estiver vazias ele irá chamar a página index.jsp o que quer dizer que não existe usúario logado!
out.println(""<"script>document.location.href='index.jsp';");
}
%">"
"<"/body>


sair.jsp



"<"body>
"<"%
//Destroi as sessions
session.invalidate();
out.print("Você saiu do sistema.");
%">"
"<"/body>


Obs: Eu tenho problemas em postar códigos HTML, PHP e JSP etc...
Então eu estou colocando aspas no início de cada tag de HTML "<".