Beruflich Dokumente
Kultur Dokumente
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.
Funcionamento de JSP
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.
Funcionamento de JSP
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.
Funcionamento de JSP
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.
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
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
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>
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
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
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>
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>
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:
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"); }
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)
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">
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");
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.
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.
Funcionamento de JSP
18
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
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
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.
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
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();
Funcionamento de JSP
25
Funcionamento de JSP
26
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
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>
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