segunda-feira, 12 de abril de 2010

Session(s)

O que são session(s)?

Session(s) são arquivos temporários que guardam informações no servidor.

Para que servem?

Tem a mesma funcionalidade do famoso COOKIE, mas a vantagem é que o computador do cliente não precisa estar habilitado para usá-la.
Ao mesmo tempo, sessions também não permitem os famosos “Lembrar minha senha”, “Lembrar meu login”, "Lembrar isso e aquilo outro...", "Não exibir novamente", etc.


Uma session(s) sempre permanecerá ativa enquanto o usuário estiver navegando.
Ela é automaticamente destruída quando o mesmo fecha o browser.

Mas há um jeito de eu mesmo destruir a session?

Há sim! Usando um sistema de autenticação, seria uma espécie de LOGOFF.
Para isso, use a função session.invalidate() para JSP e session_destroy(), que deve estar depois de session_start() em PHP.

(Fonte: codigofonte com algumas modificações!)


sábado, 10 de abril de 2010

Usando as funções SCANF() e PRINTF()

As funções scanf() e printf() da Linguagem C que pode ser usado também em C++,
pertencem a biblioteca
"stdio.h"
.

scanf() -> é uma das funções de entrada de dados.
Com essa função é possível efetuar a leitura dos seguintes tipos de dados:

Código

Significado

%c

Lê um único caractere

%d

Lê um decimal inteiro

%i

Lê um decimal inteiro (não pode ser octal ou hexadecimal)

%u

Lê um decimal sem sinal

%e

Lê um número em ponto flutuante com sinal opcional

%f

Lê um número em ponto flutuante com ponto opcional

%g

Lê um número em ponto flutuante com expoente opcional (double)

%o

Lê um número em base octal

%s

Lê uma string

%x

Lê um número em base hexadecimal

%p

Lê um ponteiro


Exemplo prático do uso da função scanf():

Lendo um número inteiro:

#include "stdio.h"
#include "fstream"

int main(int argc, char *argv[])
{
int x;
scanf("%d",&x);
system("PAUSE");
return EXIT_SUCCESS;
}


printf() -> é uma das funções de saída de dados onde é imprimido um valor.
Com essa função é possível imprimir os seguintes tipos de dados:

Código

Significado

%c

Exibe um caractere

%d

Exibe um inteiro em formato decimal

%i

Exibe um inteiro

%e

Exibe um número em notação científica (com e minúsculo)

%E

Exibe um número em notação científica (com E maiúsculo)

%f

Exibe um ponto flutuante em formato decimal

%g

Usa %e ou %f, o que for menor

%G

O mesmo que %g, só que um E maiúsculo é usado se o formato %e for escolhido

%o

Exibe um número em notação octal

%s

Exibe uma string

%u

Exibe um decimal sem sinal

%x

Exibe um número em hexadecimal com letras minúsculas

%X

Exibe um número em hexadecimal com letras maiúsculas

%%

Exibe um sinal de %

%p

Exibe um ponteiro


Exemplo prático do uso da função printf():

Escrevendo um número inteiro:

#include "stdio.h"
#include "fstream"

int main(int argc, char *argv[])
{
int y = 10;
//a saída no console será o valor 10
printf(" %d" , y);
system("PAUSE");
return EXIT_SUCCESS;
}


Agora vamos a um exemplo utilizando as duas funções.

#include "stdio.h"
#include "fstream"

int main(int argc, char *argv[])
{
//declaração das variavéis
int x;
int y;
int z;

//escreve e lê um número inteiro
printf("Digite um numero inteiro: \n");
scanf("%d",&x);
//escreve e lê um número inteiro
printf("Digite outro numero inteiro: \n");
scanf("%d",&y);
//efetua a soma dos dois valores lidos
z = x + y;

//escreve o resultado da soma
printf("Resultado é : %d\n" , z);

system("PAUSE");
return EXIT_SUCCESS;
}

Obs: As duas tabelas foram retiradas deste site :

Escrevendo em um arquivo usando Ofstream

#include "cstdlib"
#include "iostream"
#include "fstream"

int main(int argc, char *argv[])
{

ofstream txt;
//aqui você define o diretório onde o arquivo vai ser gerado
txt.open ("meuTXTgerado.txt");
//escreve no arquivo gerado
txt << "Consegir escrever!.\n";
//fecha a saida
txt.close();


system("PAUSE");
return EXIT_SUCCESS;
}

sexta-feira, 9 de abril de 2010

Gerar Relatório .PDF em uma Servlet

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;



public class GerarPDF extends HttpServlet {

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

}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

//Você pode chamar esse método no DoGet ou DoPost!
public void GerarPDF(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

try{

RelConexao rc = new RelConexao();
rc.conexaorel();
String pathJasper = getServletContext().getRealPath("/relatorios") + "/";

String path = getServletContext().getRealPath("/");

Map parametros = new HashMap();

parametros.put("", pathJasper + "Relatorio.jasper");
try {
// Aqui ele cria o relatório
JasperPrint impressao = JasperFillManager.fillReport(
pathJasper + "Relatorio.jasper", parametros, rc.con);
// Grava o relatório em disco em pdf
JasperManager.printReportToPdfFile(impressao, path + "Relatorio.pdf");
// Redireciona para o pdf gerado
response.sendRedirect("Relatorio.pdf");
} catch (Exception e) {
response.getWriter().println("Erro ao gerar o relatório :"+ e);
}

}catch(Exception e){
System.out.println("Erro: "+ e);
}

}

}



Classe de Conexão com o banco de dados!


import java.sql.*;


public class RelConexao {

public void conexaorel() {
try {
if (con == null || con.isClosed()) {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Nome_do_Banco","login_bd","senha_bd");
}
} catch (Exception e) {

System.out.println("Erro ao conectar com o Banco de dados! " +e);
}
}


}


Obs: É precisso usar algumas bibliotecas para poder gerar em PDF!

While em C++

#include "cstdlib"
#include "iostream"


int main(int argc, char *argv[])
{
int x = 0;
//vai imprimir de 0 até 10.
while(x <= 10){
printf("Contador: %d\n" , x);
x++;
}
system("PAUSE");
return EXIT_SUCCESS;
}


Obs: para todos exemplos de C/C++ será usado a IDE DevC++ onde você pode baixar indo em Downloads

terça-feira, 6 de abril de 2010

Fazendo uma conexão com Banco de Dados PostgreSQL

import java.sql.*;

public class ConexaoBancodeDadosPSQL(){

public static void main(String args[]) {
//variavés login e senha
String login = "123";
String senha = "123";

try {
//pega o Drive de conexão do PostgreSQL
Class.forName("org.postgresql.Driver");

//conecta com o banco de dados PostgreSQL
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/Ex", "postgres", "postgres");

//String sql onde você irá passar a linha de código do SQL podendo ser Iserte,Select etc...
String sql = "SELECT u.nome,u.login,u.senha FROM usuarios u WHERE login=? AND senha=?";

//esse método pega a conexão do banco e executa o SQL
PreparedStatement ps = con.prepareStatement(sql);

//passa os parametros que no SQL estão repesentados com uma "?" perceba que esta na ordem
//ex: WHERE login=? isso indica que "login"´será o primeiro parametro!
ps.setString(1, login);

ps.setString(2, senha);

//ResultSet pega o resultado do SQL executado pelo PreparedStatement
ResultSet rs = ps.executeQuery();

//rs.next() verifica se existe algum registro de acordo com os dados imformados pelo usúario
if (rs.next()) {

//existindo o registro imformado ele vai trazer do banco de dados o valor do campo "nome"
String nome = rs.getString("nome");

//vai imprimir o nome do usúario
System.out.println("Nome " + nome);

} else {

//se os dados não existirem no Bamco de Dados ele exibibe a mensagem de erro!
System.out.println("Dados incorretos!");
}


} catch (Exception e) {

//caso não consiga fazer a conexão, ele irá imprimir a messagem de erro com o nome do erro!
System.out.println("Erro na conexão " + e);

}

}
}
//essa foi a estrutura do Banco de Dados PostgreSQL que usei para fazer o Exemplo!
/*
CREATE TABLE "public"."usuarios" (
"id" SERIAL,
"nome" VARCHAR(50) NOT NULL,
"login" VARCHAR(50) NOT NULL,
"senha" VARCHAR(50) NOT NULL,
CONSTRAINT "usuarios_login_key" UNIQUE("login"),
CONSTRAINT "usuarios_pkey" PRIMARY KEY("id")
) WITH OIDS;
*/

//Obs: O Banco de dados utilizado no exmplo foi o PostgreSQL 8.3!
//Lembre-se: Se você quiser usar outro banco de dados é so você mudar o caminho do Drive de acordo com o Drive de conexão do Novo Banco de dados "Class.forName("org.postgresql.Driver");"
//e o caminho,porta,usuario e senha do Banco de Bados " Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/Ex", "postgres", "postgres");"