Вы находитесь на странице: 1из 29

Funcionamento de JSP

Introduo ao JSP
JSP o acrnimo para Java Server Pages, uma linguagem criada pela SUN gratuita, JSP uma linguagem de script com especificao aberta que tem como objetivo primrio a gerao de contedo dinmico para pginas da Internet. Podemos ao invs de utilizar HTML para desenvolver pginas Web estticas e sem funcionalidade, utilizar o JSP para criar dinamismo. possvel escrever HTML com cdigos JSP embutidos. Como o HTML uma linguagem esttica, o JSP ser o responsvel por criar dinamismo. Por ser gratuita e possuir especificao aberta possui diversos servidores que suportam a linguagem, entre eles temos: Tomcat, GlassFish, JBoos, entre outros. O JSP necessita de servidor para funcionar por ser uma linguagem Server-side script, o usurio no consegue ver a codificao JSP, pois esta convertida diretamente pelo servidor, sendo apresentado ao usurio apenas codificao HTML. Uma pagina JSP possui extenso.jsp e consiste em uma pgina com codificao HTML e com codificao Java, inserida entre as tags , denominada scriptlets e funcionando da seguinte forma: o servidor recebe uma requisio para uma pgina JSP, interpreta esta pgina gerando a codificao HTML e retorna ao cliente o resultado de sua solicitao. A pgina JSP que foi interpretada pelo servidor no precisa ser compilada como aconteceria com um servlet java por exemplo, esta tarefa realizada em tempo real pelo servidor. necessrio apenas desenvolver as pginas JSP e disponibiliz-las no Servlet Container (Tomcat, por exemplo). O trabalho restante ser realizado pelo servidor que faz a compilao em tempo de uso transformando o jsp em bytecode. Assim, pode-se definir o JSP como uma tecnologia que prov uma maneira simples e prtica de desenvolver aplicaes dinmicas baseadas em web, sendo independente de Plataforma de Sistema Operacional.

Tecnologia Client-side e Server-side


A internet foi concebida de forma a funcionar como cliente X servidor, ou seja, temos um cliente que o navegador web (browser) e o servidor http(web). Existem, na tecnologia disponvel para Web, duas classificaes de tecnologia, uma que funciona do lado do cliente ou Client-side e uma que funciona do lado do servidor ou Server-side.

Universidade Estcio de S|Trabalho de Ambientes para Internet 1

Funcionamento de JSP

Client-side lado do cliente


O cliente-side de uma aplicao o local onde ela processada, ou seja, no caso da web, executa no navegador do cliente que o responsvel por interagir com o Servidor HTTP. Entre as tecnologias cliente-side temos o HTML que executado no navegador, o CSS outra tecnologia cliente que serve para formatar paginas HTML, h ainda o javascript que permite desenvolver ou ampliar o poder ao lado do cliente.

Server-side
Server-side, por sua vez, o termo que representa o conjunto de tecnologias em que os processos so interpretados/processados diretamente no servidor, retornando como resultado a codificao client-side. Quando um cliente web(navegador) acessa uma pgina web, uma solicitao enviada ao servidor atravs do protocolo http para que o servidor envie a resposta. O Servidor alm de rodar os aplicativos, o lado servidor tambm um repositrio de pginas estticas, que sero enviados ao cliente quando solicitado. Supondo que haja uma pgina JSP, esta ser processada pelo servidor e encaminhado uma resposta ao cliente (Navegador).

Benefcios do JSP
O objetivo da linguagem JSP no s o desenvolvimento de pginas dinmicas para Internet. Com ela possvel desenvolver sistemas inteiros para Internet. Alm disso, existem diversos benefcios em se utilizar a linguagem JSP.

Custo
O JSP no tem custo de licena. Isto significa que pode ser utilizado em qualquer mquina, para qualquer numero de usurios sem violar nenhum direito autoral. Claro que isto depende do servidor escolhido, o Tomcat um servidor livre, licenciado sob a licena da Apache Foundation, de alta qualidade e sem custo de licenciamento.

JSP embutido no HTML


O JSP simples de se utilizar, podendo gerar o HTML ou ainda estar embutido dentro do HTML, como no exemplo a seguir:

Universidade Estcio de S|Trabalho de Ambientes para Internet 2

Funcionamento de JSP

Listagem 1: Exemplo de cdigo JSP embutido no HTML


<html> <head> <title> Pagina JSP Ola Mundo</title> </head> <body> <h1> <% out.println("Ola Mundo"); %> </h1> </body> </html>

Outras vantagens da linguagem


Alem do custo e da integrao perfeita com o HTML, possvel ainda, citar os seguintes benefcios da linguagem: Aperfeioamento de recursos utilizando Java em Servlets; Manipulao de arquivos como texto, PDF, DOC etc; Criptografia de dados; Utilizao de cookies e sesses; Manipulao de arquivos XML; Suporte a diversos bancos de dados como: MySQL, SQL Server, Oracle, Informix etc; Suporte a sistemas de relatrios como o JasperReport entre outros.

Tomcat
O JSP por ser uma linguagem Server-Side como visto anteriormente, necessita de um servidor para o seu funcionamento. O Apache Tomcat foi desenvolvido pela Apache Software Foundation, o Tomcat um servlet container de cdigo aberto, ou seja, uma aplicao que interpreta e processa servlets (java servlets) e JSP (Java Server Pages). O servidor esta disponvel livremente na Internet sem a necessidade de pagamento de licenciamento e est disponvel no endereo http://tomcat.apache.org para diversas plataformas, entre elas o Windows, Linux, Solaris etc. Recomenda-se o download da verso 7 do servidor. A instalao simples, basta seguir o seu
Universidade Estcio de S|Trabalho de Ambientes para Internet 3

Funcionamento de JSP

passo-a-passo. O desenvolvedor deve fazer a instalao completa do servidor para seu sistema operacional. Com o Tomcat instalado pode-se iniciar o desenvolvimento JSP. Para iniciar o desenvolvimento deve-se criar um diretrio easyjava em C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps (no Windows) e /usr/java/apache-tomcat-7.0 (no Linux). No diretrio easyjava deve-se criar os diretrios src, web, WEB-INF e WEB-INF/lib. src = diretrio onde fica armazenado o cdigo fonte dos servlets; web = diretrio raiz da aplicao web; WEB-INF = diretrio que armazena o descritor da aplicao web (web.xml), bem como outros arquivos de configurao. Este diretrio invisvel ao usurio; WEB-INF/lib = bibliotecas necessrias para a aplicao. Utilizaremos, inicialmente, apenas o jsp, mas em artigos futuros criaremos servlets para ampliar a capacidade de nossa aplicao web, por isso criamos a estrutura completa de diretrios Tomcat.

Desenvolvimento JSP na pratica


Para iniciar o trabalho com JSP, criaremos o primeiro arquivo de exemplo, do Artigo JSP. Para manter o padro, criaremos um arquivo hello word/ola mundo. No diretrio (pasta) easyjava, com seu editor favorito notepad, vi, emacs etc., o desenvolver deve criar o arquivo ola.jsp com o seguinte contedo:
Listagem 2: Programa Ol Mundo.
<html> <head> <title> Pagina JSP Ola Mundo</title> </head> <body> <h1> <% out.println("Ola Mundo"); %>

Universidade Estcio de S|Trabalho de Ambientes para Internet 4

Funcionamento de JSP

</h1> </body> </html>

Salve o arquivo e abra o navegador de sua preferencia e digite: http://127.0.0.1:8080/easyjava/ola.jsp, conforme a Figura 1.

Figura 1: Resultado da exibio do cdigo alo mundo

O resultado a exibio de uma pgina com o texto Ola Mundo. No cdigo da pagina ser exibido apenas HTML e no JSP. Para o teste, clique com o boto direito na tela e mande exibir o cdigo fonte como na listagem 2.
Listagem 3: Programa Ol Mundo.
<html> <head> <title> Pagina JSP Ola Mundo</title> </head> <body> <h1> Ola Mundo </h1> </body> </html>

Vamos entender o que foi feito na listagem 1, todo script jsp esta entre as tags , a linha out.println("Ola Mundo") responsvel por escrever o texto que esta entre aspas, sendo convertido para a exibio em HTML de Ola Mundo, isto por que o comando out.println responsvel por escrever na tela, ou seja, escreve em HTML um contedo, e neste caso Ola Mundo. Contedos de texto devem estar entre aspas, como visto no exemplo. Observe que a exibio no cliente no h nenhum cdigo JSP, pois foi processado no servidor, outro ponto
Universidade Estcio de S|Trabalho de Ambientes para Internet 5

Funcionamento de JSP

importante que o JSP segue o padro do Java, ou seja, ao final de cada linha temos um (;). Prosseguimos, agora, para os estudos do JSP. Inicialmente, abordaremos o seu funcionamento. O JSP, assim como o PHP, pode ser utilizado dentro do HTML, a pgina JSP, na verdade, uma pagina HTML, mas quando for necessrio utilizar codificao JSP que deve estar entre as tags , o servidor trata de converter para HTML para responder a solicitao do usurio. Na codificao JSP, tm-se algumas diretivas, as quais so utilizadas para informaes especiais dentro de paginas, sendo dividido em trs tipos: @include: utilizado para inserir os cdigos de arquivos pgina corrente; @page: responsvel por trazer informaes sobre a pgina JSP; @taglib: responsvel por habilitar uma biblioteca de tags personalizada (item que ser abordado em outro artigo com mais detalhes). Agora, vamos incrementar um pouco mais nossa aplicao ola mundo, exibindo a data atual.
Listagem 4: Programa Ola Mundo melhorado
<%@page contentType="text/html" import="java.util.Date, java.text.*" pageEncoding="ISO-8859-1"%> <html> <head> <title> Pagina JSP Ola Mundo</title> </head> <body> <h1> <% out.println("Ola Mundo"); %> <br> <%=new Date()%> </h1> </body> </html>

Ao abrir no navegador o resultado ser a exibio do ola mundo e da data e hora atual, conforme a Figura 2.
Universidade Estcio de S|Trabalho de Ambientes para Internet 6

Funcionamento de JSP

Figura 2: Resultado da codificao a listagem 4

Em conjunto com a diretiva @page, temos os atributos listados na tabela 1.

Atributos Language

Descrio Define a linguagem de script que ser utilizado no JSP. A nica linguagem suportada JAVA. Define o nome da classe que essa pgina JSP deve herdar. Geralmente esse atributo no informado, sendo deixado a cargo do Servlet Container se preocupar com isso. Permite a pgina JSp importar pacotes e classes que sero utilizados pela pgina. Define se a pagina far uso de sesso, o valor padro true. Define o tamanho do buffer da pgina em KB, caso no seja definido a sada no ser buferizada. Este atributo, se definido como true, faz com que o buffer da pgina JSP seja finalizado caso atinja o limite. Se o atributo for definido como true, a pagina no implementa a interface SingleThreadeModel. O valor padro true. Retorna o resultado do mtodo getServletInfo(). Define o caminho relativo a uma pgina de erro, caso ocorra uma exceo. Informa o tipo de sada do documento. O valor default text/html. Informa se a pgina uma pgina de erro.

Extends

Import Session Buffer autoFlush isThereadSafe Info errorPage contentType isErrorPage

pageEncoding Define o caracter enconding da pgina.


Tabela 1: Atributos da diretiva @page.
Universidade Estcio de S|Trabalho de Ambientes para Internet 7

Funcionamento de JSP

Veja que no exemplo anterior, foi criado a linha: , indicando que ser importado as bibliotecas java.util.Date e java.text.*, alm disso foi definido o pageEncoding como ISO-8859-1. No exemplo anterior utilizamos a exibio completa da data utilizando . O desenvolvedor deve evitar o uso do out.println, utilizando diretamente o =new Date(). O new Date fez uma chamada direta classe Date, disponvel em java.util.Date. Este motivo da importao. Para dar andamento aplicao aperfeioaremos a codificao conforme a listagem 3.
Listagem 5: Programa Ola Mundo melhorado
<%@page contentType="text/html" import="java.util.*, java.text.*" pageEncoding="ISO-8859-1"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> <% int dia = Integer.parseInt((new SimpleDateFormat("dd")).format(new Date())); out.println("<br>Hoje dia" + dia); %> </body> </html>

O resultado ser exibido conforma a Figura 3.

Figura 3: Resultado da execuo da listagem 3


Universidade Estcio de S|Trabalho de Ambientes para Internet 8

Funcionamento de JSP

Desta vez foi declarada uma varivel do tipo int para armazenar a data. A declarao de variveis no JSP idntica ao Java: tm-se o tipo, o nome e os dados que sero armazenados. O escopo de uma varivel deste tipo o arquivo em que foi declarado, ou seja, os outros arquivos no tm informaes sobre a varivel declarada aqui. Os tipos de dados suportados pelo JSP so: boolean = true/false; byte = -128 a 127; char = caracteres; double = -1.89869313486232E308 a -4.94065645841247E324/1.89869313486232E308 a 4.94065645841247E-324; int = -2.147.483.648 a 2.147.483.647; long = -9.223.372.036.854.775.808 a 9. .223.372.036.854.775.807; shot = -32.768 a 32.767; String = textos Para trabalhar com o tipo String que armazena textos necessrio incluir a java.lang.String. Tambm fizemos uso de converso de tipo Integer.parseInt, para converter o tipo string, vinda do objeto data para Inteiro. Desta forma pode-se armazenar o dia em uma varivel com o tipo inteiro(int).

Outras converses:
Byte.parseByte(objetoString) = converte uma string para o tipo byte; Short.parteShort(objetoString) = converte uma string para o tipo short; Float.parteFloat(objetoString) = converte uma string para o tipo float; Double.parseDouble(objetoString) = converte uma string para o tipo double. Utilizamos anteriormente a sada out.println, este um tipo de objeto implcito. Esses objetos recebem o nome de implcito por no necessitar serem instanciados para a sua utilizao. Eles podem ser acessados diretamente na pgina. Os objetos implcitos que podem ser acessados em pginas JSP so: Objetos Out Descrio Mtodo do tipo Writter, utilizado para exibir dados na
Universidade Estcio de S|Trabalho de Ambientes para Internet 9

Funcionamento de JSP

10

pgina. (exemplo: out.println(Ola Mundo); Request Response Session Objeto permite acesso a parmetros enviados pelo cliente, pelo mtodo HTTP (GET ou POST). Permite acesso resposta que ser enviada ao usurio. Acesso a sesses. Objeto que referencia a classe ServletContext e permite que sejam armazenados valores, ao quais sero compartilhados por toda aplicao, por meio dos mtodos setAttribute e getAttribute. Objeto utilizado para a leitura de parmetros de inicializao. Permite que as pginas JSP sejam definidas como pginas de erros. Objeto que um ponto de acesso a muitos atributos da pgina. Semelhante a referncia this utilizada em classes java.

application

Config exception pageContext Page

Operadores:
Os operadores so utilizados para realizar aes sobre um ou mais valores. Os operadores so classificados em grupos no JSP assim como em quase todas as linguagens de programao. Os operadores tm preferncia devido a prioridade como acontece na matemtica.

Operadores de comparao:
== igualdade != no igual ou diferente > maior >= maior ou igual

Concatenadores
&& representa o and ou e || representa o or ou ou ^ representa o or exclusivo Operadores aritmticos + soma - subtrais
Universidade Estcio de S|Trabalho de Ambientes para Internet 10

Funcionamento de JSP

11

/ divide * multiplica % resto

Operadores de Incremento e decremento


++ incrementa valor -- decrementa valor

Estrutura de programao:
Condicional if O if(se) responsvel pela tomada de deciso dentro da codificao jsp, possuindo o seguinte formato: If(condio){ Codificao se verdadeiro; } else { Codificao se falso; } Podendo ainda ser complementado da com outros ifs, da seguinte forma: If(condio){ Codificao se verdadeiro; } else if(condio) { Condificao se a segunda condio for verdadeira; }else { Codificao se a segunda condio for falsa; } Vamos criar um exemplo utilizando o que j sabemos, complementando ainda mais nosso Ola Mundo.
Listagem 6: Programa Ola Mundo condicional if
<%@page contentType="text/html" import="java.util.*, java.text.*" pageEncoding="ISO-8859-1"%> <html> <head>

Universidade Estcio de S|Trabalho de Ambientes para Internet 11

Funcionamento de JSP

12

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP Page</title> </head> <body> <% out.println("<h1>Hello World!</h1>"); int dia = Integer.parseInt((new SimpleDateFormat("dd")).format(new Date())); int mes = Integer.parseInt((new SimpleDateFormat("M")).format(new Date())); int ano = Integer.parseInt((new SimpleDateFormat("yyyy")).format(new Date())); if(mes==1){ out.println("Hoje " + dia + " de Janeiro de " + ano); }else if(mes==02){ out.println("Hoje " + dia + " de Fevereiro de " + ano); }else if(mes==3){ out.println("Hoje " + dia + " de Maro de " + ano); }else if(mes==4){ out.println("Hoje " + dia + " de Abril de " + ano); }else if(mes==5){ out.println("Hoje " + dia + " de Maio de " + ano); }else if(mes==6){ out.println("Hoje " + dia + " de Junho de " + ano); }else if(mes==7){ out.println("Hoje " + dia + " de Julho de " + ano); }else if(mes==8){ out.println("Hoje " + dia + " de Agosto de " + ano); }else if(mes==9){ out.println("Hoje " + dia + " de Setembro de " + ano); }else if(mes==10){ out.println("Hoje " + dia + " de Outubro de " + ano); }else if(mes==11){ out.println("Hoje " + dia + " de Novembro de " + ano); }else if(mes==12){ out.println("Hoje " + dia + " de Dezembro de " + ano); } %> </body> </html>

Universidade Estcio de S|Trabalho de Ambientes para Internet 12

Funcionamento de JSP

13

Alm da condio if, tm-se a condio switch, a qual semelhante ao if, porm para cada comparao deve existir uma instruo break. switch(atributo/varivel) { case valor: instruo; break; case valorn: instruo; break; default: instruo para valor padro; } A seguir, apresenta-se um exemplo semelhando ao do if, porm utilizando o switch.
Listagem 7: Programa Ola Mundo condicional switch
<%@page contentType="text/html" import="java.util.*, java.text.*" pageEncoding="ISO-8859-1"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP Page</title> </head> <body> <% out.println("<h1>Hello World!</h1>"); int dia = Integer.parseInt((new SimpleDateFormat("dd")).format(new Date())); int mes = Integer.parseInt((new SimpleDateFormat("M")).format(new Date())); int ano = Integer.parseInt((new SimpleDateFormat("yyyy")).format(new Date())); switch(mes){ case 1: out.println("Hoje " + dia + " de Janeiro de " + ano); break; case 2:

Universidade Estcio de S|Trabalho de Ambientes para Internet 13

Funcionamento de JSP

14

out.println("Hoje " + dia + " de Fevereiro de " + ano); break; case 3: out.println("Hoje " + dia + " de Maro de " + ano); break; default: out.println("Ola"); }

%> </body> </html>

Existem, ainda, outras instrues como laos/repeties, as quais sero abordadas em prximo artigo. Agora, para dar andamento, trataremos sobre o funcionamento das funes. A funo/mtodo contm cdigos, que sero executados quando a funo/mtodo for chamada. Acesso tipo nome(parmetro){ Cdigo da funo; } Os tipos de acesso sero tratados em no prximo artigo. Iniciando o desenvolvimento de uma pgina JSP com mais recursos e detalhes, utiliza-se a incluso de pginas e um formulrio como exemplo. Adotando o que j foi aprendido, vamos criar um arquivo topo, que armazenar o contedo a ser exibido no topo do nosso site. Este arquivo ter o nome topo.jsp.
Listagem 8: Programa topo.jsp
<%! public { String retorno =""; switch(mes){ case 1: retorno="Janeiro";break; case 2: retorno="Fevereiro";break; case 3: retorno="Maro";break; case 4: retorno="Abril";break; String fncMES(int mes)

Universidade Estcio de S|Trabalho de Ambientes para Internet 14

Funcionamento de JSP

15

case 5: retorno="Maio";break; case 6: retorno="Junho";break; case 7: retorno="Julho";break; case 8: retorno="Agosto";break; case 9: retorno="Setembro";break; case 10: retorno="Outubro";break; case 11: retorno="Novembro";break; case 12: retorno="Dezembro";break; } return retorno; } %> <h1> Pagina JSP </h1> <h4> <% int mes = Integer.parseInt(new SimpleDateFormat("M").format(new Date())); int dia = Integer.parseInt(new SimpleDateFormat("dd").format(new Date())); int ano = Integer.parseInt(new SimpleDateFormat("yyyy").format(new Date())); out.println("Hoje dia " + dia + " de " + fncMES(mes) + " de " + ano); %></h4>

O topo.jsp utiliza o switch em uma funo chamada fncMES (Funo Ms) para exibir o ms, como j feito com o o if anteriormente. Agora, crie o arquivo rodape.jsp. Este vai ter o contedo do rodap da pgina. Nesta pgina, insira apenas o seguinte texto

Pagina EasyJava
A seguir, criaremos o index.jsp, que vai unir os dois arquivos. Criaremos, ainda, um formulrio e enviar para uma pgina em que vamos tratar os dados recebidos, validando-os.
Listagem 9: Programa index.jsp
<%@page contentType="text/html" import="java.util.*, java.text.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Universidade Estcio de S|Trabalho de Ambientes para Internet 15

Funcionamento de JSP

16

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP Page</title> </head> <body> <%@include file="topo.jsp"%> <form action="trataform.jsp" method="post"> Nome:<input type="text" name="txtnome"/><br> E-Mail:<input type="text" name="txtemail"/><br> Data de Nascimento:<input type="text" name="txtdtnasc"/><br> <input type="submit" value="Enviar"/> </form> <%@include file="rodape.jsp"%> </body> </html>

Aqui temos a utilizao do @include para incluir os arquivos jsp que criamos. Tambm criamos um formulrio para enviar dados para uma pgina que vamos ainda criar. O nome da pagina ser trataform.jsp. Para isso, utilizamos o mtodo de envio de dados post.
Listagem 10: Programa trataform.js
<%@page contentType="text/html" import="java.util.*, java.text.*, java.lang.String" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP Page</title> </head> <body> <%@include file="topo.jsp"%> Dados do formulario<br> <% String nome = request.getParameter("txtnome"); if(nome=="") out.println("Nome no foi digitato");

Universidade Estcio de S|Trabalho de Ambientes para Internet 16

Funcionamento de JSP

17

else out.println("Seu nome " + nome); %> <br>E-Mail: <%=request.getParameter("txtemail")%><br> Data de Nascimento: <%=request.getParameter("txtdtnasc")%><br> <%@include file="rodape.jsp"%> </body> </html>

Aqui foi utilizado o request.getParameter, que o mtodo responsvel por receber os dados do formulrio. Ele recebe pelo nome do campo que foi criado. Neste caso os dados sero armazenados dentro da varivel nome, que um tipo string. Utilizamos o if para verificar se o nome foi digitado.

O Modelo de Componentes JSP


JSP baseado em componentes de software denominados Java Beans.

Arquiteturas de Componentes
Pode-se pensar em um componente como uma caixa preta que executa operaes especficas sem revelar nenhum detalhe de sua implementao. Componentes so stand-alone e no esto conectados a nenhuma aplicao ou uso. Esta caracterstica permite que eles sejam utilizados na construo na construo de vrios projetos, possivelmente sem nenhuma ligao. Os dois princpios bsicos relacionados utilizao de componentes no desenvolvimento de aplicaes so: abstrao e reutilizabilidade. Pense em componentes como elementos de cdigo reutilizveis que podem ser aglutinados para construir uma nova aplicao. Um bom modelo de componentes nos permite eliminar ou reduzir fortemente a quantidade de cdigo cola necessrio para construir as aplicaes.

Benefcios da Abordagem Baseada em Componentes


Geralmente uma aplicao desenvolvida com a abordagem de componentes envolve a combinao de componentes de propsito geral e componente especficos da aplicao. O principal benefcio desta abordagem a reutilizao dos componentes. No apenas pelo compartilhamento de componentes entre diferentes aplicaes, mas tambm atravs da reutilizao de componentes por vrios segmentos da mesma aplicao ou de aplicaes relacionadas.
Universidade Estcio de S|Trabalho de Ambientes para Internet 17

Funcionamento de JSP

18

O Projeto de Componentes para Aplicaes Web


A abordagem baseada em componentes ideal para o projeto de aplicaes para a web. JSP permite que os projetistas de aplicaes para a web empreguem os princpios que outros desenvolvedores de software vm utilizando h vrios anos. Em vez de ter de embutir uma complexa lgica de programao dentro das pginas atravs de cdigo script, eles (projetistas) podem simplesmente empregar cdigo HTML para a determinao de layout, em torno de componentes. Veja a figura abaixo. A habilidade do modelo de componentes de reutilizar componentes comuns provoca a reduo do tempo de desenvolvimento e a reduo da complexidade dos projetos.

Em alguns casos uma nica pessoa pode tratar de ambos os aspectos do projeto, mas a medida que a complexidade aumenta, a separao das tarefas do processo de desenvolvimento pode resultar em uma srie de benefcios

Conexo de Banco de Dados com JDBC


JDBC uma interface baseada em Java para acesso a bancos de dados atravs de SQL. o Pacote Java padro: java.sql o Baseada em ODBC Usando JDBC, pode-se obter acesso direto a bancos de dados atravs de applets e outras aplicaes Java. Este mdulo apresenta uma introduo superficial do JDBC, mas suficiente para integrar aplicaes Java com bancos de dados relacionais que possuam drivers JDBC.
Universidade Estcio de S|Trabalho de Ambientes para Internet 18

Funcionamento de JSP

19

No so abordados Connection Pools nem DataSources JDBC uma interface de nvel de cdigo o Cdigo SQL usado explicitamente dentro do cdigo Java o O pacote java.sql consiste de um conjunto de classes e interfaces que permitem embutir cdigo SQL em mtodos. Com JDBC possvel construir uma aplicao Java para acesso a qualquer banco de dados SQL. o O banco deve ter pelo menos um driver ODBC, se no tiver driver JDBC Para usar JDBC preciso ter um driver JDBC o O J2SE distribui um driver ODBC que permite o acesso a bancos que no suportam JDBC mas suportam ODBC

Tipos de Drivers JDBC


Tipo 1: ponte ODBC-JDBC o Usam uma ponte para ter acesso a um banco de dados. Este tipo de soluo requer a instalao de software do lado do cliente. Tipo 2: soluo com cdigo nativo o Usam uma API nativa. Esses drivers contm mtodos Java implementados em C ou C++. Requer software no cliente.
Universidade Estcio de S|Trabalho de Ambientes para Internet 19

Funcionamento de JSP

20

Tipo 3: soluo 100% Java no cliente o Oferecem uma API de rede via middleware que traduz requisies para API do driver desejado. No requer software no cliente. Tipo 4: soluo 100% Java o Drivers que se comunicam diretamente com o banco de dados usando soquetes de rede. uma soluo puro Java. No requer cdigo adicional do lado do cliente.

Arquitetura JDBC

URL JDBC
Uma aplicao JDBC pode carregar ao mesmo tempo diversos drivers. Para determinar qual driver ser usado usa-se uma URL: o jdbc:<subprotocolo>:<dsn> A aplicao usa o subprotocolo para identificar e selecionar o driver a ser instanciado.
Universidade Estcio de S|Trabalho de Ambientes para Internet 20

Funcionamento de JSP

21

O dsn o nome que o subprotocolo utilizar para localizar um determinado servidor ou base de dados. Sintaxe dependente do fabricante. Veja alguns exemplos: o jdbc:odbc:anuncios o jdbc:oracle:thin:@200.206.192.216:1521:exemplo o jdbc:mysql://alnitak.orion.org/clientes o jdbc:cloudscape:rmi://host:1098/MyDB;create=true

DriverManager e Driver
A interface Driver utilizada apenas pelas implementaes de drivers JDBC o preciso carregar a classe do driver na aplicao que ir utiliz-lo. Isto pode ser feito com Class.forName(): Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); A classe DriverManager manipula objetos do tipo Driver. o Possui mtodos para registrar drivers, remov-los ou listlos. o usado para retornar Connection, que representa uma conexo a um banco de dados, a partir de uma URL JDBC recebida como parmetro Connection com = DriverManager.getConnection ("jdbc:odbc:dados", "nome","senha"); Interfaces que contm mtodos implementados em todos os drivers JDBC.

Connection, ResultSet e Statement


Connection o Representa uma conexo ao banco de dados, que retornada pelo DriverManager na forma de um objeto. Statement o Oferece meios de passar instrues SQL para o sistema de bancos de dados. ResultSet o um cursor para os dados recebidos.
Universidade Estcio de S|Trabalho de Ambientes para Internet 21

Funcionamento de JSP

22

Statement
Obtendo-se um objeto Connection, chama-se sobre ele o mtodo createStatement() para obter um objeto do tipo Statement: o Statement stmt = con.createStatement() que poder usar mtodos como execute(),executeQuery(), executeBatch() e executeUpdate() para enviar instrues SQL ao BD. Subinterfaces: o PreparedStatement e CallableStatement PreparedStatement pstmt = con.prepareStatement(...); CallableStatement cstmt = con.prepareCall(...);

Enviando Instrues
Exemplo de uso de Statement o stmt.execute("CREATE TABLE dinossauros " + "(codigo INT PRIMARY KEY, " + "genero CHAR(20), " + "especie CHAR(20));"); int linhasModificadas = stmt.executeUpdate("INSERT INTO dinossauros " + "(codigo, genero, especie) VALUES " + "(499,'Fernandosaurus','brasiliensis')"); ResultSet cursor = stmt.executeQuery("SELECT genero, especie "+ " FROM dinossauros " + " WHERE codigo = 355");

ResultSet
O mtodo executeQuery(), da interface Statement, retorna um objeto ResultSet. o Cursor para as linhas de uma tabela. o Pode-se navegar pelas linhas da tabela recuperar as informaes armazenadas nas colunas Os mtodos de navegao so: o next(), previous(), absolute(), first() e last()
Universidade Estcio de S|Trabalho de Ambientes para Internet 22

Funcionamento de JSP

23

Mtodos para obteno de dados: o getInt() ,getString(),getDate(),getXXX(), ...

Universidade Estcio de S|Trabalho de Ambientes para Internet 23

Funcionamento de JSP

24

Transaes
Permite a execuo atmica de comandos enviados ao banco. Implementada atravs dos mtodos de Connection o commit() o rollback() o setAutoCommit(boolean autoCommit): default true. Por default, as informaes so processadas a medida em que so recebidas. Para mudar: o con.setAutoCommit(false); Agora vrias instrues podem ser acumuladas. o Para processar: con.commit(); Se houver algum erro e todo o processo necessitar ser desfeito, pode-se emitir um ROLLBACK usando: o con.rollback();

Universidade Estcio de S|Trabalho de Ambientes para Internet 24

Funcionamento de JSP

25

Universidade Estcio de S|Trabalho de Ambientes para Internet 25

Funcionamento de JSP

26

Fechar conexo e Excees


Aps o uso, os objetos Connection, Statement evResultSet devem ser fechados. Isto pode ser feito com o mtodo close(): o con.close(); o stmt.close(); o rs.close(); A exceo SQLException a principal exceo a ser observada em aplicaes JDBC

Metadados
Classe DatabaseMetaData: permite obter informaes relacionadas ao banco de dados

Classe ResultSetMetaData: permite obter informaes sobre o ResultSet, como quantas colunas e quantas linhas existem na tabela de resultados, qual o nome das colunas, etc.

Resources(javax.sql)
O pacote javax.sql, usado em aplicaes J2EE, contm outras classes e pacotes que permitem o uso de conexes JDBC de forma mais eficiente e portvel javax.sql.DataSource: obtm uma conexo a partir de um sistema de nomes JNDI (previamente registrada) o Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB");
Universidade Estcio de S|Trabalho de Ambientes para Internet 26

Funcionamento de JSP

27

Connection con = ds.getConnection(); DataSource uma alternativa mais eficiente que DriverManager: possui pool de conexes embutido javax.sql.RowSet e suas implementaes o Extenso de ResultSet o Permite manipulao customizada de ResultSet

Padres de Projeto implementados em JDBC


Drivers JDBC implementam vrios padres de projeto. Os principais so: o Bridge: define uma soluo para que uma implementao (o driver que permite a persistncia dos objetos) seja independente de sua abstrao (a hierarquia de objetos) o Abstract Factory: permite que hierarquias de classes sejam plugadas e objetos diferentes, de mesma interface, sejam produzidos (uma createStatement() cria um objeto Statement com a implementao do driver instalado.) o Factory Method: a implementao dos mtodos getConnection(), createStatement(), etc. que devolvem um objeto sem que a sua implementao seja conhecida. o Iterator: o ResultSet e seu mtodo next()

Criao de Cadastro
Criando a pgina que contm o formulrio com os campos para o nome de usurio e a senha: <html> <head><title>Cadastro JSP</title></head> <body> <form name="login" method="post" action="login.jsp"> Login: <input type="text" name="login"><br> Senha: <input type="password" name="senha"><br> <input type="submit" value="Cadastrar!"> </form> </body> </html>

Universidade Estcio de S|Trabalho de Ambientes para Internet 27

Funcionamento de JSP

28

Login e a senha informada sero enviados para a pgina login.jsp. Veja o cdigo completo: <html> <head><title>Cadastro JSP</title></head> <body> <% // login e senha correta String login_p = "admin"; String senha_p = "admin1234"; // dados informados no formulrio String login = request.getParameter("login"); String senha = request.getParameter("senha"); // verificar os dados informados est correto if((usuario.equals(login_p)) && (senha.equals(senha_p))){ // login efetuado com sucesso. Agora voc pode gravar uma // sesso, um cookie ou direcionar o usurio para uma nova // pgina out.println("Login efetuado com sucesso!"); } else{ // dados no conferem. Direcione o usurio para a pgina de // login novamente out.println("Dados no conferem. Tente novamente"); } %> </body> </html>

Concluses
O JSP tem como principais atrativos o encapsulamento de funes e classes que traz como consequncia uma grande reutilizao de cdigo. Para se tirar total proveito da linguagem ser necessrio ter conhecimento de muitas classes j construdas o que possibilita uma programao que no quer inventar a roda, mas sim fabricar automveis com os conhecimentos existentes at agora. No entanto para se fizer aplicaes mais simples a utilizao de PHP, por exemplo, ser muito mais simples, verstil e intuitiva por no ser to poderosa de mais fcil implementao. O grande beneficio do PHP que normalmente o uso de aplicaes dinmicas na web para fins pouco complexos como acesso a bases de dados, autenticaes de
Universidade Estcio de S|Trabalho de Ambientes para Internet 28

Funcionamento de JSP

29

utilizadores, sistemas de compras de produtos ou para funes de clculos lgicos, o que torna o PHP um alvo ideal pela sua facilidade de utilizao. O Java neste tipo de implementaes no traz grandes benefcios, e estando o PHP e ASP mais divulgados e mais facilitados no seu uso normalmente sobre estas duas linguagens que as escolhas dos programadores recarem.

Bibliografia
http://pt.scribd.com/doc/65925821/04-Java-JSP http://www.inf.ufrgs.br/~tsrodrigues/utilidades/javaWeb.pdf http://www.oficinadanet.com.br/apostilas/detalhe/255/jsp_-_java_server_pages http://www.devmedia.com.br/introducao-ao-java-server-pages-jsp/25602#ixzz2kjA7ztlA http://www.argonavis.com.br/cursos/java/j100/java_18.pdf

Universidade Estcio de S|Trabalho de Ambientes para Internet 29