Anda di halaman 1dari 42

UNIVERSIDADE FEDERAL DO PAR CENTRO DE CINCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMTICA

SEMANA DE INFORMTICA 2003

CURSO: JAVA SERVER PAGE(JSP)

Prof.: Armando Hage

BELM 2003

1. INTRODUO
Muito se fala em novos paradigmas de programao, como a orientao a objetos e a programao utilizando componentes, como tornar o trabalho em informtica mais produtivo e geral possvel sem se preocupar com o tipo de mquina utilizada por um cliente. Em aplicaes comerciais ou cientficas envolvendo banco de dados cada vez mais se aplicam conceitos desta tecnologia com a seguinte filosofia: Compile uma vez e rode em qualquer lugar. A maioria das empresas, de qualquer porte, tm seus clientes cadastrados em algum tipo de banco de dados. Com a popularizao da internet, empresas, escolas universidades, querem dispor uma quantidade de informao pela rede, porm estas informaes devem possuir qualidade e veracidade. Nada melhor do que dispor estar informaes em pginas dinmicas que mostrem o atual estado de cada situao a cada modificao, facilitando a tomada de deciso. Java uma linguagem de programao que possui todos os pr-requisitos para soluo de problemas desta natureza. Por ser robusta, multiplataforma, orientada a objetos, despertam cada vs mais o interesse em desenvolver software de qualidade utilizando banco de dados. Definir formas de utilizao, tecnologias emergentes que podem facilitar o desenvolvimento destas solues foco de interesse.Dentro deste contexto, dispor informaes pela internet, com qualidade e baixo custo o que prope a linguagem Java com Java Server Page-JSP. Padres abertos de tecnologia como XML, Java, HTML fazem com que JSP ganhe especial importncia na integrao, utilizao e reutilizao dentro de um projeto. Assim, este trabalho procura mostrar uma parte da tecnologia Java que pode estar acessvel a todos.

1.1. OBJETIVOS
Mostrar como Java se comunica com banco de dados, suas vantagens e desvantagens. API JDBC Caracterizar uma pgina para internet com Java Server Page. Tipos de servidores e instalaes Mostra a sintaxe bsica de uma pgina dinmica. Mostrar como pginas JSP podem usar JavaBeans. Exemplos de aplicao

1.2. A TECNOLOGIA JAVA


Java uma linguagem de programao orientada a objeto desenvolvida pela Sun Microsystems. Baseada em C++, a linguagem Java foi desenhada para construo de programas pequenos, simples e portveis em vrias plataformas e sistemas operacionais. Desenvolver aplicativos complexos e avanados para aplicao em pequenos dispositivos eletrnicos foi a etapa inicial de projeto da Sun ao desenvolver esta linguagem. Os dispositivos so sistemas portteis, distribudos, confiveis e incorporados em tempo real, dirigidos para um propsito geral. As primeiras aplicaes com estas caractersticas receberam o nome de Portable Data Assistents (PDAs). Todos os aplicativos Java so compilados em bytecodes independente da arquitetura da mquina e a interpretao do cdigo e mquina e passado para uma mquina virtual, chamada de JVM, que carrega e executa o cdigo Java.

Os programas Java so divididos em grupos: Applets, Aplicaes, Servlets e Pginas Java Server Pages. Applet -Programa dinmico e interativo que pode rodar dentro de uma pgina web via um browser compatvel com Java, tais como Netscape e Internet Explorer. Possui restries de segurana para mquina cliente. Aplicaes (Frame)- So programas com interface grfica que so executados na mquina cliente como aplicativos desktop. Para que um Frame possa ser utilizado deve ser totalmente descarregado na memria local do usurio e seu acesso aos recursos de mquina deve ser completo. Servlets -So aplicaes que so executadas no console e que retornam uma pgina como resposta a um cliente, trabalham de forma semelhante a um CGI. Mantm as regras de negcio em uma camada parte, sendo a sua criao um pouco mais complexa que a simples criao de uma aplicao.

Java Server Page(JSP)- uma extenso de Servlets, um melhoramento. A diferena bsica que seu cdigo se integra ao HTML de uma pgina do navegador. Todas as operaes que so realizadas com Servlets podem tambm fazer parte de operaes de pginas JSP, mas o inverso no ocorre. Esta diferena existe devido ao fato de que nem todos os servidores de pginas que suportam Java rodam as TAGs do JSP. Toda aplicao Java sempre executada em um interpretador de comando chamado JVM (Java Virtual Machine), o que garante que a mesma aplicao feita em plataforma Windows possa ser executada da mesma forma em uma plataforma Linux e vice-versa. A figura 1.2 mostra a construo do cdigo binrio feito pelo compilador Java.

(3 T S $3 Q ( P3 E H F ( E B & B @ 4  ( 7 $  4 3 &0 ( & $  ! U%)R%""IG"6)DCA198)%65%21)'%#"     


5

1.3. RELEMBRANDO CONCEITOS BSICOS


Boa parte de nosso entendimento com o mundo real se d atravs do conceito de objetos. Ao observamos coisas e seres vivos ao nosso redor, existe a natural tendncia de tentarmos identificar as diferenas entre eles que os caracteriza. Cada item identificado vai possuir uma caracterstica prpria, um estado em um momento, classificado segundo suas caractersticas, e etc. Genericamente caracterizamos com este ato as principais caractersticas da programao orientada a objetos, tais como: identidade-Todo objeto do mundo real tem algo que o identifica entre os demais,; classificao-Organizao de objetos em classes de objetos ; polimorfismo-Capacidade de reconhecer em um objeto particular um outro mais geral herana-Mecanismo de criao de novas objetos a partir de outros j existentes; encapsulamento- Indica que podemos usar objetos conhecendo apenas sua interface. Classes So estruturas das linguagens de programao OO que contem, para determinado modelo, os dados que devem ser representados e as operaes que devem ser efetuadas com estes dados. A classe envolve, associa, funes e dados, controlando o acesso a estes.Defini-l implica em especificar os seus atributos (dados) e seus mtodos (funes). Ex:Interface controladora de um motor eltrico. Classe:motor Atributos: temperatura, velocidade, tenso aplicada. Objeto ou instncia Representa uma materializao da classe. um pacote de software contendo dados e procedimentos(cdigo)relacionado. A parte superior do diagrama representa o nome da classe, e a inferior, sua interface .Possui estado, identidade nica e comportamento.
La mpad a
e sta d o a ce n de () a p a g a () m o str a _e sta do ( )

Variveis - So os dados dos objetos. Atributos Dados contidos em uma classe, cada qual tendo um tipo. Mtodos - Operaes realizadas. Agregao(ou composio)- a idia de que o estado de um objeto formado por outros objetos. A relao de agregao chamada de tem um, como em um carro tem um motor. Mtodos As operaes contidas em uma classe, so chamadas mtodos de uma classe. Argumentos mtodos podem opcionalmente receber argumentos. Retorno de valores mtodos podem retornar valores ou instancias de classes. Encapsulamento-Capacidade de um objeto possui uma parte privada, acessvel somente atravs dos mtodos definidos na sua classe. Herana- o mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe, adquirindo imediatamente toda a funcionalidade de uma classe existente. Uma classe que herda de outra classe chamada de subclasse e a classe que fornece a herana chamada de superclasse.

Comparaes entre linguagens imperativas e OO -Paradigma Procedural: Varivel, Funo/Procedimento, Chamada de funo. -Paradigma Orientao a Objetos: Classes, Objeto / Instncia, Operao / Mtodo, Envio de Mensagem.

2. JAVA SERVER PAGE-JSP


a tecnologia baseada na linguagem Java que permite a criao de pginas dinmicas para internet.Foi desenvolvida pela Sun Microsystems para permitir o desenvolvimento do lado do servidor. JSP so como pginas HTML, s que possuem Tags especiais contendo o cdigo Java. Foi lanada aps a tecnologia de Servlets como um das melhores tecnologias disponveis. A forma de acesso atravs da internet, servidor. fornecido a por pgina um

Quando

requisitada pelo cliente, atravs de um navegador, esta pgina

executada pelo servidor, e ento gerada uma pgina HTML que ser enviada de volta ao navegador do cliente. Permite ao desenvolvedor de sites produzir aplicaes que permitam o acesso a banco de dados, o acesso a arquivos-texto, a captao de informaes a partir de formulrios, a captao de informaes sobre o visitante e sobre o servidor, o uso de variveis e loops entre outras coisas. Quem conhece Servlets ver que o JSP no oferece nada que voc no possa conseguir com os Servlets puros. O JSP, entretanto, oferece a vantagem de ser facilmente codificado, facilitando a elaborao e manuteno de uma aplicao. Alm disso, essa tecnologia permite separar a programao lgica (parte dinmica) da programao visual (parte esttica), facilitando o desenvolvimento de aplicaes mais robustas, onde programador e designer podem trabalhar no mesmo projeto, mas de forma independente. Outra caracterstica do JSP produzir contedos dinmicos que possam ser reutilizados. Como a lgica JSP envolve Java Beans, para tirar um bom proveito de JSP preciso entender a linguagem Java. bom que se tenha tambm algum conhecimento de HTML e criao de formulrios para web.

2.1. JSP VERSUS ASP


JSP e ASP so muito parecidos em suas funcionalidades. Ambos so voltados para web, comunicam-se com banco de dados. Possuem componentes que podem ser reutilizados, JSP pode reutilizar Java Beans e EJBs enquanto ASP pode reutilizar componente COM e ActiveX. Porm a tecnologia ASP s permite ser utilizada em uma nica plataforma, enquanto JSP pode facilmente ser integrada a qualquer uma a qualquer tempo. ASP uma tecnologia proprietria, ou seja, para usar tem que pagar a empresa fornecedora. JSP utiliza padres abertos de tecnologia como Java, XML, HTML.

2.2. JAVA VERSUS PHP


PHP(Personal Home Page) um padro aberto de tecnologia para web que possui quase todas as funcionalidades de JSP, pode-se utilizar orientao a objetos, gratuito, e mantido por uma forte comunidade de desenvolvedores. Porm, hoje seu uso ainda est limitada apenas aplicaes web, a integrao outras aplicaes no to fcil quanto com JSP. No possui um API universal para comunicao com banco de dados, se mudar o tipo de SGBD os impactos no projeto so muito grandes, um maior nmero de classes deve ser manipulada para atendera as necessidades.

2.3. SERVIDORES WEB


Para colocar sua aplicao no ar, necessria a instalao de um servidor web apropriado que as pginas possam funcionar perfeitamente. Em sua maior parte so gratuitos, onde podemos destacar os dois bastante utilizados como:

Tomcat(http://jakarta.apache.org) e Resin(http://www.caucho.com). A instalao do Resin bem simples, basta descompactar os arquivos e uma pasta, e executar o arquivo httpd.exe que encontra-se em sua pasta bin. J as configuraes do Tomcat, alm da instalao de seus arquivos em um diretrio, deve-se adicionar uma configurao a mais no classpath. Da seguinte forma: SET CATALINA_HOME= C:\tomcat Para iniciar o servidor, no diretrio bin escreve-se startup. Para visualizar suas pginas a chamada dever ser da seguinte forma: http://localhost:8080. 9

Todas as pastas web ficam em webapps, logo, se for criar um diretrio de testes e quiser visualizar seus arquivos JSP, a chamada ser da seguinte forma: http://localhost:8080/teste/teste.jsp A figura 2.3 mostra a estrutura de diretrios para um servidor web de pginas JSP.

Figura 2.3.-Estrutura de diretrios para o aplicativo teste. Para que possa correr tudo bem necessrio verificar se sua instalao do compilador est perfeitamente indicada nas variveis de ambiente. A tabela abaixo apresenta um exemplo de configurao em ambiente Windows e Linux. S.O. Local e arquivo Configurao SET JAVA_HOME=C:\java2 SET JDK_HOME=%JAVA_HOME% SET PATH=%JAVA_HOME%\bin;%JAVA_HOME% \jre\bin SET CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\l ib;C:\drives\meudriver.jar Linux /etc/profile JAVA_HOME=/usr/java/j2sdk1.4.1_01 JDK_HOME=$JAVA_HOME PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_ HOME/jre/lib:.:/drives export JAVA_HOME JDK_HOME PATH CLASSPATH Tabela 2.3-Exemplo de configurao de varivel de ambiente

Windows C:\autoexec.bat

10

Arquivo teste.jsp <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <html> <head> <title>Pgina de teste JSP</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <% String msg="Teste de aplicao JSP"; out.print(msg); %> ou <%=msg %> </body> </html>

2.4. Estruturas condicionais


As estruturas condicionais so as mesmas presente em Java. Comando condicional if If(condio){ ..... }else{ .... } Operadores:+ , - , * , / , ==, %, != , < , > , < =, >= (a==b)-Igualdade (a!=b)-No igual (a>b)-Maior que (a<b)-Menor que (a>=)-Maior ou igual a (a<=b)-Menor ou igual a Operadores lgicos &&-AND ||-OR ^ - XOR

11

Comando Switch Pode-se utilizar este comando para substituir o comando if. switch(atributo){ case valor1: comando_para_valor1; break; case valor2: comando_para_valor2; break; ... case valorn: comandos_para_valorn; break; default: comando_para_valor1; } Comandos de repetio Todos os comandos sero repetidos de acordo com uma condio. o nico que termina com (;). do{ comandos_a_repetir }while(condio);

O comando de repetio while difere do anterior pela posio em que a condio testada. while(condio){ comandos_a_repetir; }

O comando for difere dos demais pelo controle mais direto do numero ocorrncia. O tipo pode ser definido no corpo de lao. for(atibuto_inicial ;condio; incremento){ comandos_a_repetir; }

12

2.5 A API JSP


A tecnologia JSP baseada na API JSP, que consiste em dois pacotes: javax.servlet.jsp e javax.servlet.jsp.tagext. Tambm so necessrios pacotes adicionais de servlets como: javax.servlet e javax.servlet.http. O pacote javax.servlet.jsp tem duas interfaces e quatro classes. Interface: JspPage, HttpJspPage Classes: JspEngeneInfo, JspFactory, JspWriter, PageContext, JspException e JspError. Porm, no existe uma obrigatoriedade em utilizar todos. possvel ter um conjunto menor de interfaces e classes a ainda assim ter um projeto eficiente.

3- SINTAXE JSP
3.1 OBJETOS IMPLCITOS Podemos criar novas instncias de uma classe Java dentro de scriptlets de pgina JSP para a produo de um contedo dinmico. Podemos, por exemplo, criar uma classe que realiza uma consulta em uma base de dados, e atravs de uma pginas JSP acessar seus mtodos que realizam a conexo ou consulta. Desta forma, os objetos gerados ficam todos sob controle do programador. Quando o servidor recebe uma solicitao de uma pgina JSP, gerado um Servlet, e durante esta transformao alguns objetos so gerados automaticamente sem a interveno do programador. Esses objetos so chamados de objetos implcitos. A tabela 5.3.9 mostra alguns objetos implcitos e suas APIs. Objeto Page Config Request Classe ou Interface javax.servlet..jsp.HttpJspPage javax.servlet.ServletConfig javax.servlet.http.HttpServletRequest Descrio Instncia de um servlet da pgina Dados de configurao de um servlet Dados de solicitao, podendo possuir parametros Dados de resposta Fluxo de sada para o contedo da pgina 13

response out

javax.servlet.http.HttpServletResposnse javax.servlet.jsp.JspWriter

session

application

exception pageContext

contedo da pgina javax.servlet.http.HttpSession Dados de sesso especficos de cada usurio javax.servlet.ServletContext Dados compartilhados por todas as pginas de aplicao javax.lang.Throwable Excees ou erros desconhecidos javax.servlet.Jsp.PageContext Dados de contexto para execuo da pgina Tabela 5.3.9-Objetos implcitos JSP

Cada um possui um conjunto de mtodos para tratar, validar ou mostrar algo atravs de uma pgina JSP. Sendo que para objetos relacionados ao servlet da pgina temos page e config. Objetos relacionadas a entrada e sada de dados de uma pgina temos request, response e out. Os objetos contextuais so applictaion, session, request e pageContext. Os objetos resultantes de erros podem ser encontrados em exception para o tratamento e identificao de erros na pgina. Desta forma se fosse necessrio construir uma pgina de validao usurios, onde os dados de nome e senha fossem passados como parmetros para uma consulta em um banco de dados teramos: No exemplo, por meio de uma pgina inicial e enviado a requisio da pgina com o mtodo POST, especificando a pgina de autenticao e passando como parmetros os valores de duas caixas de texto. Da mesma forma poderamos redirecionar para uma outra pgina com response.sendRedirect(http://sig.ufpa.br).
9. 10. 11. 12. 13. 14. 1. 2. 3. 4. 5. 6. 7. 8. <%@page language="java"%> <html> <head> <title>Autenticao</title> </head> <body> <% String nome=request.getParameter(nome); String senha=request.getParameter(senha); %> <p>Nome = <%=nome%></p> <p>Senha =<%=senha%></p> </body> </html>

14

3.2- DIRETIVAS BSICAS Uma diretiva da informaes especiais sobre pgina que ser gerada. A tabela 3.2 mostra as diretivas e seu comportamento em JSP. Atributo language extends import Tipo de valor Nome da linguagem de script Nome de classe Serve para importar uma classe ou pacote d classes. Permite que a pgina JSP faa uso de outras classes Booleano Tamanho do buffer. Se no for declarado o padro ser de 8kb Booleano Booleano, gera mltiplos servlets Usado para colocar delcarao de informao da pgina, como autor, empresa. do tipo String Endereo de uma pagina de erro. Boolenao Tipo MIME, conjuto de caracteres Valor padro <%@ page laguage=java%> Nenhum <%@ page import=java.util.*% <%@page import =teste.*%>

session buffer autoFlush isThreadSafe info

true <%@ page buffer=none%> <%@ page autoFlush=true%> true <%@page info=ufpa.br pgina de testes 2003%> Nenhum false text/hml;chatset=ISO8859-1

errorPage isErrorPage contentType

A diretiva page tem a seguinte sintaxe: <%@ page attribute1=valor1 attribute2=valor2 attribute3=... %> Abaixo relacionamos os atributos mais utilizados nas diretivas page: Atributo import import="package.class" ou import="package.class1,...,package.classN". Permite que seja especificado qual o pacote a ser importado. Por exemplo: <%@ page import="java.util.*" %> O atributo import o nico que pode aparecer vrias vezes. Atributo isThreadSafe isThreadSafe="true|false". O valor de true (default) indica o processamento normal do servlet quando mltiplas requisies podem ser acessadas simultaneamente na mesma instncia de servlet. O valor false indica que o servlet deve implementar SingleThreadModel, como requisio para cada requisio sinalizada ou com requisies simultneas sendo uma em cada instncia.

15

Atributo session session="true|false". O valor de true (default) indica que a varivel predefinida session (do tipo HttpSession) deve estar ligada a sesso existente, caso no exista uma sesso, uma nova sesso deve ser criada para lig-la. O valor false indica que sesses no devem ser usadas. Atributo buffer buffer="sizekb|none" Especifica o tamanho do buffer para o JspWriter out. O buffer padro definido pelo servidor.

Atributo autoFlush autoflush="true|false" O valor de true (default) indica se o buffer deve ser esvaziado quando estive cheio. O valor false, indica que uma exceo deve ser mostrada quando ocorrer overflows.

Atributo extends extends="package.class" Define se a super classe do servlet deve ser gerada. Atributo info info="message" Define uma string que pode ser recuperada pelo mtodo getServletInfo. Com esse atributo o autor pode adicionar uma cadeia de documentao pgina que sumariza sua funcionalidade. O valor padro para o atributo info a cadeia vazia.

Atributo errorPage errorPage="url" Especifica que a pgina JSP deve processar algum Throwables, mas no carreg-lo na pgina corrente.

16

Atributo isErrorPage isErrorPage="true|false" Define se uma pgina pode atuar como uma pgina de erro para uma outra pgina JSP. O default false.

Atributo language language="java" Especifica a linguagem que est sendo usada. Por enquanto o JSP suporta somente Java. include A diretiva include permite que sejam includos arquivos na hora em que a pgina JSP traduzida no servlet. Exemplo: <%@ include file="menu.jsp" %>

TIPOS DE TAGS <%! %> -Utilizadas por definir atributos e mtodos, podendo depois ser transformado em um Bean. <% JSP @taglib-Utilizada para habilitar uma biblioteca de Tags personalizadas. <%= %>-Utilizada impresso de dados em uma pgina dinmica.Equivale a out.print(variavel). <%<jsp: -%>- Utilizado para documentar trechos de cdigo. />-Tags utilizadas dentro do HTML que modificam o comportamento %>-Usadas para escrever trechos de cdigo Java dentro de pginas

de um pgina JSP.

17

CONTROLE DE FORMULRIOS (TAG FORM) O mais importante sobre HTML a tag form presente em todos os formulrios de cadastro.Basicamente podemos destacar: <input type=text> - Caixa de texto padro para entrada de dados <input type=hidden> - Objetos de tipos de texto ficam ocultos <input type=password> - Caixa de texto padro para campos com senha < input type=radio> - Objetos de escolha ,apenas um pode ser escolhido. < input type=checkbox> - Objeto de escolha, apenas um pode ser escolhido < input type=button> - Botes de ao < input type=submit>- Boto utilizado para submeter o formulrio. < input type=reset>- Boto para apagar os dados de um formulrio. < textarea rows=n cols=n></textarea>- Caixa de texto com vrias linhas(rows) e colunas(cols). <select><option></option></select>- So as listas de seleo. value- Armazena o valor digitado pelo usurio. name- Nome de uma tag.

Exemplo de utilizao da sintaxe: <form action="index.jsp" method="post" name="frmCad" target="_self" id="frmCad"> </form>

18

PASSAGEM DE PARAMETROS A passagem de dados de um formulrio se da com o comando

rquest.getParameter(nome_do_campo). Podem tambm ser feita atravs de coockies e sesses. 1. Atravs de cookies-So pequenos arquivos de texto que ficam armazenados na mquina cliente, podendo ser guardado valores de variveis para posterior recuperao. Deve ser feito com a declarao de uma varivel do tipo Cookie. Exemplo:Cookie c = new Cookie(nome_do_campo,valor_do_campo); Podem ser utilizados os respectivos mtodos: a. setValue()-Atribui um novo valor b. setDomain()-Define o servidor ou domnio onde o cookie pode ser acessado c. setMaxAge(int)-Tempo de vida do cookie(em segundos) d. response.addCookie(nome)-Envia um objeto para a mquina cliente a grava como um cookie. Exemplo: Cookie1.jsp <HTML> <BODY> <FORM action="Cookie2.jsp" method="post"> Informe seu nome: <INPUT name=edNome> <BR><BR> <INPUT type="submit" value=" Enviar "> </FORM> </BODY> </HTML>

19

Cookie2.jsp <HTML> <BODY> <% Cookie nomeCok = new Cookie("nome", request.getParameter("edNome")); response.addCookie(nomeCok); %> Cookie Gravado <INPUT type=button onClick="JavaScript:window.location.href='Cookie3.jsp'" value=" Prxima "> </BODY> </HTML>

Cookie3.jsp <HTML> <BODY> <% Cookie acheiCookie = null; Cookie[] meusCookies = request.getCookies(); for (int i = 0; i < meusCookies.length; i++) if (meusCookies[i].getName().equals("nome")) acheiCookie = meusCookies[i]; if (acheiCookie == null) out.println("Cookie no localizado"); else out.println("Cookie encontrado. Seu nome " + acheiCookie.getValue()); %> </BODY> </HTML>

2. Atravs de sesses- mais fcil de trabalhar porque nada gravado no cliente, porm levam mais tempo. O comando bsico o seguinte: session.putValue(nome_Sessao,valor_Sessao);

20

Exemplo:

Session1.jsp <HTML> <BODY> <FORM action="Sessao2.jsp" method="post"> Informe seu nome: <INPUT name=edNome> <BR><BR> <INPUT type="submit" value=" Enviar "> </FORM> </BODY> </HTML> Session2.jsp <HTML> <BODY> <% session.putValue("nome",request.getParameter("e dNome")); %> Sesso Gravada <INPUT type=button onClick="JavaScript:window.location.href='Sessa o3.jsp'" value=" Prxima "> </BODY> </HTML> Session3.jsp <HTML> <BODY> <% String acheiSessao = (String)session.getValue("nome"); if (acheiSessao == null) out.println("Sesso no localizada"); else out.println("Sesso encontrada. Seu nome " + acheiSessao); %> </BODY> </HTML>

21

4- USANDO BEANS EM PGINAS JSP


JavaBeans um tipo especial de classe contendo um nmero de mtodos. So componentes de software que so projetados para serem unidades reutilizveis, que uma vez criados podem ser reusados sem modificao de cdigo, e em qualquer propsito de aplicao, seja um applet, um servlet ou qualquer outra. Por exemplo, se em um outro projeto j foi definido uma classe que realiza a conexo com um banco de dados e efetua um conjunto de consultas no necessrio reprograma-la, a mesma classe pode ser reutilizada em outro projeto. Um modelo de componente definido como um conjunto de classes e interfaces na forma de pacotes Java que deve ser usado em uma forma particular para isolar e encapsular um conjunto de funcionalidades. Portanto, qualquer classe ou pacote de classes pode ser facilmente integrada ao seu projeto JSP. O respectivo JavaBean faz uma nica coisa, retorna o valor ao quadrado de um varivel X. package teste; public class Dobro{ public Dobro(){ } public int dobrar (int numero){ return 2*numero; } } Aps a compilao deste arquivo, ser gerado um diretrio teste contendo o arquivo teste.class. uma classe que possui uma funcionalidade e desejamos dispor seu recurso para uma pgina JSP. O primeiro passo construir um diretrio dentro da estrutura do servidor, em sua aplicao, com o mesmo nome do pacote de classes. L deveram estar todas as classes que fazem parte deste pacote.

22

Assim, o trabalho com JavaBeans pode ser realizado com qualquer tipo de classe fazendo uso de suas propriedades e disponibilizando em um segmento. Desta forma, a estrutura de seu projeto ficaria segundo a figura 4.

J a pgina JSP, que faria acesso aos seus mtodos, faria a construo de um novo objeto Dobro, passando como parmetro para numero um valor definido com corpo da pgina.

<jsp:useBean id="d" class="teste.Dobro"> <html> <body> <% int x = 10; int y = d.dobrar(x); %> <p>O valor de <%=x %> vezes 2 <%=y %> </p> </body> </html>

ACESSO A PROPRIEDADES As propriedades de um JavaBean podem ser acessadas atravs de instrues JSP, chamadas de elementos de ao: jsp:getProperty e jsp:setProperty. Usados

respectivamente para obter ou modificar a propriedade de u Bean. A sintaxe pode ser: <jsp:getProperty name=nome do Bean property= mtodo /> <jsp:setProperty name=nome do Bean property=mtodo />

23

Em ambas as formas sempre referencia-se que objeto deseja manipular e que propriedade ser chamada. O exemplo a seguir demonstra as propriedades jsp:getProperty e jsp:setProperty para uma classe chamada Soma.java. package teste; public class Soma{ int num1=0,num2=0; public void setNum1(int valor){ this.num1=valor; } public int getNum1(){ return this.num1; } public void setNum2(int valor){ this.num2=valor; } public int getNum2(){ return this.num2; } public int getResultado(){ if(num1==0 || num2==0) return 0; return num1+num2; } }

A classe foi definida para receber dois valores num1 e num2. Os valores de num1 e num2 sero modificado em um segmento JSP da seguinte forma: <html><head><title>Soma dois numeros</title></head> <body> <jsp:useBean id="sm" class="teste.Soma"/> <jsp:setProperty name="sm" property="*"/> <form><input type=text name="num1" size="5" value="<jsp:getProperty name="sm" property="num1"/>" > + <input type=text name="num2" size="5" value="<jsp:getProperty name="sm" property="num2"/>" > = <jsp:getProperty name="sm" property="resultado"/> <input type=submit value="Calcular" name="btn_calc"> </form></body></html>

24

5-ACESSANDO BANCO DE DADOS COM JAVA


5.1-JDBC A Sun Microsystems desenvolveu uma

interface de acesso a Banco de Dados padro SQL, o JDBC API que vem a ser Java Database Conectivity. Esta API fornece uma interface uniforme acesso a de Banco de Dados Relacionais. De maneira geral as principais tarefas realizadas so: estabelecer uma conexo com um banco de dados, enviar instrues SQL e processar os resultados recebidos. A idia do JDBC : O cliente com o seu browser chama uma pgina web, que permite entrada de dados, o qual carregado junto com a pgina a partir do Servidor Web e executado a conexo com o banco desejado. Este aplicao tem uma chamada interface JDBC Driver que permite a conversa com o Banco de Dados Relacional em um Servidor Remoto, permitindo a troca de dados entre o Cliente e o Servidor. A vantagem que estamos usando um padro aberto, no precisamos nos preocupar com distribuio de verses, a manuteno se d apenas no Servidor Web e principalmente, independente de plataforma.

Figura 5.1-Tipos e Arquiteturas de drivers JDBC

tipo 1-JDBC-ODBC funciona como um ponte entre o JDBC e um driver ODBC.

25

tipo 2-JDBC-Java Partial Driver, converte chamadas feitas a API JDBC e chamadas internas a API do banco de dados. Tambm necessitam instalao na mquina em que a aplicao faz parte. tipo 3-Pure-Java JDBC Driver, a comunicao da API feita com uma aplicao intermediria com a finalidade de traduzir as chamadas JDBC e envia-las ao banco. Pode utilizado na internet e intranets. tipo Pure Java JDBC Driver, converte diretamente as chamadas JDBC para protocolos nativos do banco de dados, tornando-se um acesso nativo aos dados.
O pacote java.sql oferece a API para acessar e processar dados e uma base de dados. Todo o trabalho que ser realizado co as classes em seu projeto iro utilizar os seguintes elementos: A classe DriverManager A interface Driver A interface Connetcion A iterface Statement A interface ResultSet A interface PreparedStatement A interface ResultSetMetaData A tabela 5.1 mostra um resumo das principais classes da Interface da API JDBC. API JDBC java.sql.DriverManager Exemplo try{ Class.forName("org.firebirdsql. jdbc.FBDriver"); Descrio DriverManager uma classe. Sua principal funo manter uma lista de drivers de diferentes

}catch(ClassNotFoudException fornecedores e associar uma e ){ } aplicao-cliente com um driver que corresponda ao URL requerido. java.sql.Connection Connection A classe Connection representa

conexao=DriverManager.getCo uma nica transao da base nnection("jdbc:fabricante:porta: dados. Usa-se Connection para caminho, "usuario", "senha"); enviar uma serie de statements SQL base de dados e gerenciar a realizao completa da transao. 26

SQL base de dados e gerenciar a realizao completa da transao. java.sql.Statement Statement st = conexao.createStatement(); Executa a consulta SQL e retorna o ResultSet com o resultado da consulta. java.sql.ResultSet ResultSet rs=st.executeQuery(sql); while(rs.next()) rs.getString(1) ou rs.getString(campo) java.sql.SQLExeception catch(SQLException e){ } A classe SQLException herda da classe geral java.lang.Exception, que prov informao extra sobre erros nos acessos base de dados. Especfica o tipo de um campo de uma tabela. Retorna o valor do campo com ndice igual ao ndice da coluna ou o nome da coluna.

Para demonstrar a utilizao de consultas em pginas JSP, ser criado uma pgina contendo apenas as configuraes de comunicao com o banco de dados.Esta pgina atravs das diretivas descritas ser includa em ouras pginas para diferentes operaes de SELECT, INSERT, UPDATE e DELETE.

27

5.2-INSTALAO DE DRIVER JDBC


Os passos que devem ser seguidos para a instalao de um driver JDBC depende de cada fabricante, logo, para um uso correto importante observar a documentao fornecida. Para os drivers do tipo 4 a instalao normalmente feita colocando-se o(s) arquivo(s) com a extenso jar em um diretrio pertencente a um diretrio que esteja no classpath. Desta forma a sua aplicao Java poder utilizar a API JDBC vinculada ao seu banco de dados. A tabela abaixo mostra um exemplo para windows e linux.

S.O. Local e arquivo Windows C:\autoexec.bat

Linux

/etc/profile

Configurao SET JAVA_HOME=C:\java2 SET PATH=%JAVA_HOME%\bin;%JAVA_HOME% \jre\bin SET CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_H OME%\jre\lib;C:\drives\meudriver.jar JAVA_HOME=/usr/java/j2sdk1.4.1_01 JDK_HOME=$JAVA_HOME PATH=$PATH:$JAVA_HOME/bin:$JAVA_HO ME/jre/bin CLASSPATH=.:$CLASSPATH:$JAVA_HOME/li b:$JAVA_HOME/jre/lib:.:/drives export JAVA_HOME JDK_HOME PATH CLASSPATH

28

5.2-CRIANDO UMA PGINA DE CADASTRO DE USURIOS


Para melhor exemplificar o uso da tecnologia Java para web com JSP,ser mostrado um exemplo simples de cadastro de usurios. Os atributos da tabela seguem o seguinte modelo.

Para este modelo ser utilizado apenas scripts jsp, portanto no haver maiores dificuldades na reproduo deste modelo. A estrutura das janelas ser dividida em quatro etapas: gerenciadorUsuarios.jsp- Tela inicial da aplicao contendo instrues de include das demais. relusuarios.jsp Tela apresentao de resultados contendo a instruo select do banco de dados. rscadusuario.jsp Apresenta a resposta realizada por um cadastro de um novo usurios editausuario.jsp Apresnta a resposta para atualizao de registro rsexcluiusuario.jsp efetua a operao de excluso de um registro erro.jsp- Pgina padro de erro, contendo a instruo exception. topo.html Pgina padro que ser utilizada no topo das pginas.Mostra como devem ser construdas pginas HTML para posterior operao da diretiva include.

Tela Inicial do cadastro de usurios.

29

topo.html <table width="86%" height="104" border="0" align="center"> <tr valign="top"> <td width="18%" height="100"> <div align="right"><img src="../../imagens/logoufpa.gif" alt="http://www.ufpa.br" name="ufpa" width="82" height="97" align="texttop" id="ufpa"></div></td> <td width="56%"> <div align="left"> <p><strong>UNIVERSIDADE FEDERAL DO PAR&Aacute;<br> CENTRO DE CI&Ecirc;NCIAS EXATAS E NATURAIS<br> SEMINF-2003<br> Curso:Java Server Page &nbsp;&nbsp; Prof.Armando Hage</strong></p> </div></td> <td width="26%"><div align="left"><img src="../../imagens/JavaJSPBD.jpg" width="99" height="86"></div></td> </tr> </table> relusuarios.jsp
<% //Nada ser gravado no cache do cliente response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); if (request.getProtocol().equals( "HTTP/1.1" )) { response.setHeader("Cache-Control","no-cache"); } %> <% String cor="";//Ser utilizado para manipular as cores das celulas int contador=0; ResultSet rs = stm.executeQuery("select * from usuario order by LOGIN"); %> <blockquote><blockquote> <p><strong>.: Usu&aacute;rios cadastrados :.</strong></p></blockquote></blockquote><table width="87%" border="0" align="center"> <tr><td width="48%" bgcolor="#66CCFF"><strong>Nome</strong></td> <td width="23%" bgcolor="#66CCFF"><strong>Login</strong></td> <td colspan="2" bgcolor="#66CCFF"> <div align="center"><strong>Manuten&ccedil;&atilde;o</strong></div></td> </tr> <% while(rs.next()){ contador++; if(contador%2==0) cor="#FFFFCC"; else cor=""; %> <tr bgcolor="<%=cor%>"> <td><%=rs.getString("NOME")%></td> <td><%=rs.getString("LOGIN")%></td> <td width="10%"><div align="center"><a href="editausuario.jsp?codigo=<%=rs.getString("LOGIN")%>"><img src="../../imagens/alterar.gif" width="24" height="24" border="0"></a></div></td> <td width="19%"> <div align="center"><a href="rsexcluiusuario.jsp?codigo=<%=rs.getString("LOGIN")%>"><img rc="../../imagens/excluir.gif" width="24" height="24" border="0" onClick='javaScript:exclui("codigo");'></a></div></td> </tr> <%}%> </table><blockquote> <blockquote> <p><a href="cadastrousuario.jsp" target="_self">Adicionar su&aacute;iro</a> </p> </blockquote> </blockquote> 30

gerenciadorUsuarios.jsp Esta a tela inicial do formada pela incluso da tela padro erro, e a pgina que contm as configuraes de conexo. A chamada a operao de excluso feita por um JavaScript que repassa o cdigo para rsexcluiusuario.jsp que realiza a operao de excluo. <%@page errorPage="erro.jsp" %> <%@ include file="conexao.jsp"%> <html> <head> <title>Gerenciador de usu&aacute;rios</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript"> function exclui(codigo){ if(confirm("Deseja realmente excluir o usuairo ?")) document.location.href="rsexcluiusuario.jsp?codigo="+codigo; } </script> </head> <body><div align="center"> <%@ include file="topo.html"%> <strong><font size="5">.:: Gerenciador de Usu&aacute;rios ::.</font></strong> <%@ include file="relusuarios.jsp"%> </div></body></html>

conexao.jsp Contm dados de configurao com o banco de dados,classe JDBC do fabricante e a importao do pacote adequado sql.*. <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*"%> <% Class.forName("org.firebirdsql.jdbc.FBDriver"); Connection con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\resin2.1.10\\webapps\\hage\\WEB-INF\\dados\\Banco.GDB","SYSDBA","masterkey"); Statement stm = con.createStatement(); %>

31

erro.jsp
<%@ page isErrorPage="true"%> <%@ page import="java.util.*"%> <html><head><title>Erro na p&aacute;gina</title><base target="_self"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> <body bgcolor="#FFFFFF"><table border="0" width="98%"> <tr> <td width="100%" height="74" colspan="2"> <h1 align="center"><b><font color="#000000">Ocorreu um erro durante a execu&ccedil;&atilde;o o de um servi&ccedil;o !</font></b></h1> </td> </tr> <tr> <td width="32%" height="105"><span style="z-index: -1"><img src="../../imagens/policia.gif" name="erro" width="171" height="103" border="0" align="right" id="erro"></span></td> <td width="68%" valign="top" align="left"> <div align="left"> <dt id="textSection1" style="font-style: normal; font-variant: normal; font-weight: normal; line-height: 15pt; font-size: 13pt; font-family: verdana; color: black"><span id="errorText"><font face="Times New Roman, Times, serif">A p&aacute;gina n&atilde;o pode ser exibida</font></span><font face="Times New Roman, Times, serif">.</font></dt> </div> <div align="left"> <dt id="textSection1" style="font-style: normal; font-variant: normal; font-weight: normal; line-height: 15pt; fontsize: 13pt; font-family: verdana; color: black"><font face="Times New Roman, Times, serif">Verifique sua permiss&atilde;o de acesso ou informe o seguinte erro ao analista.<br> Erro:<font color="#FF0000"><strong><%=exception.getMessage()%></strong></font></font></dt> <font face="Times New Roman, Times, serif"><br> <a target="_self" href="javaScript:history.go(-1);">Voltar</a> </font></div> </td> </tr> </table> </body> </html>

32

cadastrousuario.jsp <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*"%> <%@include file="conexao.jsp" %> <html><head><title>Cadastro de Usu&aacute;rios</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head><body> <form action="rscadusuario.jsp" method="post" name="frmCadastro" target="_self" id="frmCadastro"> <strong>Nome:</strong><input name="nome" type="text" id="nome"> <br><strong>Login: </strong><input name="login" type="text" id="login"> <br><strong>Senha:<input name="senha" type="password" id="nome3"> <br><input name="Eviar" type="submit" id="Eviar" value="Enviar"> <input name="limpar" type="submit" id="limpar" value="Limpar"> </strong> </form> <p><a href="gerenciadorUsuarios.jsp">Votar para a tela inicial</a></p> </body> </html> rscadusuario.jsp <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="erro.jsp" %> <%@include file="conexao.jsp" %> <% //Nada ser gravado no cache do cliente response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); if (request.getProtocol().equals( "HTTP/1.1" )) { response.setHeader("Cache-Control","no-cache"); } %> <% out.println("<SCRIPT language='JavaScript'>"); try{ stm.executeUpdate("insert into usuario(nome,login,senha) values('"+ request.getParameter("nome") + "','"+ request.getParameter("login") + "','"+ request.getParameter("senha")+ "');"); out.println("alert('O usuario "+ request.getParameter("nome")+" foi includo no sistema !.Pressione F5 para atualizar a pgina de relatrio.');"); }catch(Exception e ){ out.println("alert('Registro no includo');"); }finally{ out.println("history.go(-2);");out.println("</SCRIPT>"); } %>

33

rseditausuario.jsp <% String nome=request.getParameter("nome"); String login=request.getParameter("login"); String senha=request.getParameter("senha"); out.println("<SCRIPT language='JavaScript'>"); try{ stm.executeUpdate("update usuario set nome='" + nome + "', login='"+ login + "',senha='" + senha + "' where login='" + login + "'"); out.println("alert('Dados alterados com xito !. Pressione F5 para atualizar a pgina de relatrio.');"); }catch(Exception e ){ out.println("alert('Registro no atualizado !');"); }finally{ out.println("history.go(-2);"); out.println("</SCRIPT>"); } %> rsexcluiusuario.jsp <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="erro.jsp" %> <%@include file="conexao.jsp" %> <% //Nada ser gravado no cache do cliente response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); if (request.getProtocol().equals( "HTTP/1.1" )) { response.setHeader("Cache-Control","no-cache"); } %> <% String login=request.getParameter("codigo"); out.println("<SCRIPT language='JavaScript'>"); try{ stm.executeUpdate("delete from usuario where login='"+login+ "'"); out.println("alert('O usuario "+ login +" foi excludo do sistema.Pressione F5 para atualizar.');"); }catch(Exception e ){ out.println("alert('Registro no excluido');"); }finally{ out.println("history.go(-1);"); out.println("</SCRIPT>"); } %>

34

6-Construindo um site em Java


6.1-Definindo um projeto Para qualquer projeto deve-se reservar um espao na estrutura de diretrios do servidor web. A chamada do sistema ser a partir do nome que voc criou o diretrio. Antes de comear a desenvolver alguns critrios devem ser estabelecidos como, por exemplo, a utilizao de um padro de projeto.O uso de um padro de projeto melhora a comunicao dos entre o projetista e o desenvolvedor sobre o problema que esta sendo resolvido, utilizando-se um modelo de resoluo j experimentado e testado. A definio ou no de padro influenciar diretamente na estrutura de sua aplicao, definindo um projeto com Beans ou somente com scripts JSP. Para est etapa vamos desenvolver apenas um mdulo que pode ser reutilizado em vrios projetos pela presena em vrios sites. Desenvolveremos um modulo de notcia de um site. O site dever conter uma tela inicial a apresentao, contendo as notcias mais recentes. Dever haver um mdulo de administrao visvel somente para usurios cadastrados.

Tela de login de usurios cadastrados

35

Tela de cadastro de administradores As notcias que sero apresentadas sero capturadas do banco de dados e mostradas apenas as que forem liberadas pelo administrador com o status de A(ativas) Toda notcia ser cadastrada pelo administrador, ter o status de ativa e posteriormente poder ser excluda. A estrutura de diretrios ser a seguinte:

36

Tela de cadastro de notcias DEFININDO O PADRO DE PROJETO COM JAVABEANS FACADE- A inteno do padro facade prover uma interface nica para um conjunto de interfaces de um subsistema. Torna a aplicao mais fcil j que toda a comunicao entre as classes ser a partir de uma nica interface.

Faade

Projeto sem um padro definido

Projeto utilizando o padro FACADE

37

O padro deve ser utilizado quando se deseja construir um interface mais simples de acesso as classes.Tornar o sistema mais reutilizvel. Para encapsular o acesso aos dados de SGBD. Auxiliam os clientes que necessitam de maior customizao disponibilizando o acesso atravs de uma nica interface de comunicao entre as classes.

Arquitetura proposta para projeto com JavaBeans Com a utilizao desta arquitetura pretende-se obter: Reduo do acoplamento do cliente-subsistema. o Ocorre tornando o Faade uma classe abstrata com subclasses concretas. Classe de subsistemas: pblicas ou privadas ? o A classe Faade deve ser naturalmente pblica. As classes envolvidas no processo podem ser privadas, mas por conveno de padronizao independente de linguagem de programao devem ser pblicas.

Abaixo segue o cdigo proposto, para um Banco de dados que tenha suporte a Stored Procedures, para a classe Usurio.

38

Conexao.java package teste; /** * * @author Armando Hage */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; /** Classe que realiza conexo com o banco de dados */ public class Conexao{ /** Para Windows.*/ String jdbc="jdbc:firebirdsql:localhost/3050:C:\\resin2.1.10\\webapps\\teste\\WEB-INF\\dados\\teste.GDB"; /** Para Linux.*/ // String jdbc="jdbc:firebirdsql:localhost/3050:/Bancos/teste.GDB"; String usuario = "SYSDBA"; String senha = "masterkey"; Statement st=null; Connection conexao=null; String msg=""; String sql=null; ResultSet rs=null; ResultSetMetaData rsmd=null; /** Construtor default */ public Conexao() { try{ Class.forName("org.firebirdsql.jdbc.FBDriver"); conexao = DriverManager.getConnection(jdbc,usuario,senha); st = conexao.createStatement(); } catch(ClassNotFoundException e) { msg="Driver JDBC-ODBC no encontrado!"; getmsg(); } catch(SQLException e) { this.msg="Problemas na conexao com a fonte de dados"; getmsg(); }} public void getmsg(){ System.out.println("Ateno Administrador o seguinte erro:" + this.msg+"\n"); } public void fecharConexao()throws SQLException{ try{ this.st.close(); this.rs.close(); this.conexao.close(); }catch(SQLException e){ this.msg="No foi possvel fechar a conexao"; getmsg(); e.printStackTrace();} } } 39

Usurio.Java /**@author Armando Hage */ package teste; /** Classe que gera novos objetos Usurio */ public class Usuario { private String login; private String senha; private String nome; /**Construtor default padro*/ public Usuario() { } public Usuario(String login,String senha,String nome){ this.login=login; this.senha=senha; this.nome=nome; } /**Mtodo para retornar o login de usurio * @return login*/ public String getLogin(){ return this.login; } /** Mtodo para modificar o valor de login de usurio * @param login Entra uma varivel do tipo login */ public void setLogin(String login){ this.login = login; } /**Mtodo para retornara senha de usurio * @return senha*/ public String getSenha(){ return this.senha; } /** Mtodo para modificar a senha de usurio * @param senha Entra com uma senha */ public void setSenha(String senha){ this.senha = senha; } /** Mtodo para retornar o nome de usurio * @return Nome do usurio */ public String getNome(){ return this.nome; } /** Mtodo para modificar o nome de usurio * @param nome Entra com o nome */ public void setNome(String nome){ this.nome = nome; } }

40

UsuarioBD.Java package teste; import java.sql.*; import java.util.Vector; public class UsuarioBD { private String sql=null; private String msg=null; private Conexao c; private Usuario u=null; Vector vetUsuario; /** Cria uma nova instancia de UsuarioBD */ public UsuarioBD() { this.c=new Conexao(); } public boolean autenticaUsuario(String login,String senha)throws SQLException{ this.sql="SELECT * FROM USUARIO WHERE LOGIN='" + login + "' AND SENHA='" + senha +"'"; try{ this.c.rs=c.st.executeQuery(this.sql); if(this.c.rs.next()) return true; else return false; }catch(SQLException e){ this.msg="Nao foi possivel recuperar o usurio " + login + ".\nErro:"+e.getMessage(); return false; }finally{ this.c.fecharConexao(); } } public boolean setUsuario(String operacao,Usuario u)throws SQLException{ String login=u.getLogin(); String senha=u.getSenha(); String nome=u.getNome(); this.sql="EXECUTE PROCEDURE SP_USUARIO('" +operacao+ "','" + login + "','" + senha +"','"+ nome +"');"; try{ this.c.st.executeUpdate(this.sql); return true; }catch(Exception e){ this.msg="No foi possvel executar a procedure no usurio " + login; return false; }finally{this.c.fecharConexao(); }} public Usuario getUsuario(String login,String senha)throws SQLException{ this.sql="SELECT * FROM USUARIO WHERE LOGIN='" + login + "' AND SENHA='" + senha +"'"; try{ this.c.rs=this.c.st.executeQuery(this.sql); while(this.c.rs.next()){ this.u = new Usuario(this.c.rs.getString(1),this.c.rs.getString(2),this.c.rs.getString(3)); } }catch(SQLException e){ this.msg="Nao foi possivel recuperar o usuario " + login + ".\nErro:"+e.getMessage(); getMsg(); }finally{this.c.fecharConexao(); } return this.u; } .....

41

Fachada.Java package teste; import java.sql.*;import java.util.Vector; public class Fachada { private String msg=null; private ResultSet rs=null; private UsuarioBD ubd; private NoticiaBD ntbd; public Fachada() { } //--------------Trabalho com a classe Usuario------------------------------public boolean autenticaUsuario(String login,String senha)throws SQLException{ this.ubd=new UsuarioBD(); if(this.ubd.autenticaUsuario(login, senha)) return true; else return false; } public boolean setUsuario(String operacao,Usuario u)throws SQLException{ this.ubd=new UsuarioBD(); if(this.ubd.setUsuario(operacao, u)) return true; else return false; } public Usuario getUsuario(String login)throws SQLException{ this.ubd=new UsuarioBD(); Usuario u= new Usuario(); u=this.ubd.getUsuario(login); return u; } public Vector getUsuario()throws SQLException{ this.ubd=new UsuarioBD(); Vector vetUsuario=this.ubd.getUsuario(); return vetUsuario; } public Vector getUsuarioINI(String inicial)throws SQLException{ this.ubd=new UsuarioBD(); Vector vetUsuario=new Vector(); vetUsuario=this.ubd.getUsuarioINI(inicial); return vetUsuario; } .....

42

Anda mungkin juga menyukai