You are on page 1of 23

Manuais e recursos para desenvolvimento web www.criarweb.

com

Manual de JSP

Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Traduo de JML
(2 captulos)

Fernando Arturi
http://www.arturi.com.ar (3 captulos)

Julio N. Argota Quiroz


(1 captulo)

Roberto Canales Mora


http://www.adictosaltrabajo.com (1 captulo)

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

O que JSP
JSP a abreviao de Java Server Pages, que em portugus seria algo como Pginas de Servidor Java. ento, uma tecnologia orientada a criar pginas web com programao em Java.
Bibliografia: Esta descrio de JSP est extrada de um PDF em ingls muito completo que introduz a tecnologia, que pode ser encontrada na pgina corporativa de Java de Sun Microsystems, em sua seo de aprendizado on-line. Por sua vez, tal manual provm do portal Java jGuru. jGuru: Introduction to JavaServer Pages technology

Com JSP podemos criar aplicaes web que se executam em vrios servidores web, de mltiplas plataformas, j que Java em essncia uma linguagem multiplataforma. As pginas JSP esto compostas de cdigo HTML/XML misturado com etiquetas especiais para programar scripts de servidor em sintaxe Java. Portanto, poderemos escrever as JSP com nosso editor HTML/XML habitual. Motor JSP O motor das pginas JSP est baseado nos servlets de Java -programas em Java destinados a se executar no servidor-, embora o nmero de desenvolvedores que podem afrontar a programao de JSP muito maior, dado que muito mais simples de aprender que os servlets. Em JSP criamos pginas de maneira parecida a como se criam em ASP ou PHP -outras duas tecnologias de servidor. Geramos arquivos com extenso .jsp que incluem, dentro da estrutura de etiquetas HTML, as sentenas Java a executar no servidor. Antes que os arquivos sejam funcionais, o motor JSP realiza uma fase de traduo dessa pgina em um servlet, implementado em um arquivo class (Byte codes de Java). Esta fase de traduo se realiza habitualmente quando se recebe a primeira solicitao da pgina .jsp, embora exista a opo de pr-compilar em cdigo para evitar esse tempo de espera na primeira vez que um cliente solicita a pgina. Exemplo de pgina JSP Na imagem seguinte pode-se ver um exemplo extremamente simples de uma pgina JSP e o esquema de converso dessa pgina em um servlet.

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Pr-requisitos Para aprender JSP, a parte de conhecer HTML, ser necessrio compreender e ter algo de experincia na programao em Java, que uma Linguagem de Programao Orientada a Objetos por completo. Uma vez conhecida a programao em Java pode-se estudar por alto o sistema de Servlets, o que nos dar uma melhor idia do funcionamento interno do motor JSP. Ademais, necessitaremos baixar e instalar Tomcat, o continer de servlets usado na referncia oficial de implementao de JSP. Podemos acessar a um exerccio para aprender a realizar esta instalao, disponvel tambm na referncia de aprendizagem da pgina de Java. Artigo por Miguel Angel Alvarez - Traduo de JML

Comparando JSP com ASP


JSP e ASP servem para fazer, mais ou menos, o mesmo tipo de aplicaes web. Entretanto, no fundo tm bastantes diferenas. Depois de minha experincia no trabalho com JSP, um dia, um cliente me perguntou por que no programava a pgina em ASP no lugar de JSP, j que havia escutado falar que o sistema de Microsoft tinha umas caractersticas muito apropriadas para seu modelo de negcio. A partir desta sugesto, e para que meu cliente ficasse satisfeito com a tecnologia JSP -que a que prefiro utilizar-, preparei uma lista de vantagens de utilizar pginas dinmicas Java frente s de Microsoft. Plataforma e independncia do servidor JSP segue a filosofia da arquitetura JAVA de "escreve uma vez, executa onde quiser". A implantao de ASP est limitada para arquiteturas baseadas em tecnologia Microsoft. Assim, JSP pode ser executado nos sistemas operativos e servidores web mais populares,
Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 3

Manuais e recursos para desenvolvimento web www.criarweb.com

como por exemplo, Apache, Netscape ou Microsoft IIS. Enquanto que ASP s tem suporte nativo para os servidores IIS e Personal Web Server, que so os dois servidores web para sistemas Microsoft, o primeiro com tecnologia NT e o segundo para sistemas Windows 98 e similares. Processo de desenvolvimento aberto (open source) O API JSP se beneficia da extensa comunidade JAVA existente, pelo contrrio a tecnologia ASP especfica de Microsoft que desenvolve seus processos internamente. TAGS Enquanto que tanto JSP como ASP usam uma combinao de tags e scripts para criar pginas web dinmicas, a tecnologia JSP permite aos desenvolvedores criar novas tags. Assim os desenvolvedores podem criar novas tags e no depender tanto dos scripts. Reusabilidade entre plataformas. Os componentes JSP so reusveis em distintas plataformas (UNIX, Windows). A vantagem Java A tecnologia JSP usa Java como linguagem de Script enquanto que ASP usa VBScript ou Jscript. Java uma linguagem mais potente e com mais escalas que as linguagens de Script. As pginas JSP so compiladas em Servlets pelo qual atuam como uma porta a todos os servios Java de Servidor e livrarias Java para aplicaes http. Java faz o trabalho do desenvolvedor mais fcil p. e. ajuda a proteger o sistema contra as "cadas" enquanto que as aplicaes ASP sobre sistemas NT so mais suscetveis a sofr-las, tambm ajuda no manejo da memria protegendo contra falhas de memria e o duro trabalho de buscar os falhos de perda de ponteiros de memria que podem tornar mais lento o funcionamento de uma aplicao. Manuteno As aplicaes que usam JSP tm uma manuteno mais fcil que as que usam ASP. As linguagens de Script esto bem para pequenas aplicaes, mas no se encaixam bem para aplicaes grandes. Java uma linguagem estruturada e mais fcil de construir e possui manutenes grandes como aplicaes modulares. A tecnologia JSP faz maior nfase nos componentes do que nos Scripts, isto faz com que seja mais fcil revisar o contedo sem que afete a lgica ou revisar a lgica sem mudar o contedo. A arquitetura EJB encapsula a lgica de p. e.: acesso a BD, segurana, integridade transacional e isolamento da aplicao. Devido a que a tecnologia JSP aberta e multiplataforma, os servidores web, plataformas e outros componentes podem ser facilmente atualizados ou mudados sem que afete s aplicaes baseadas na tecnologia JSP.

Concluso As vantagens sobre utilizar a tecnologia Java em relao proprietria de Microsoft (ASP) so, como se pode ver, diversas e interessantes. Entretanto, podemos apontar uma vantagem da programao em ASP, pois bastante mais fcil de aprender que JSP, pelo menos se no se

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

tem uma experincia prvia em programao. Isto devido a que Java uma linguagem muito potente, mas um pouco mais complicada de usar porque orientada a objetos e a maneira de escrever os programas mais rgida. Artigo por Miguel Angel Alvarez - Traduo de JML

Conexo a um database server com JSP


Neste artigo trataremos o tema da conexo a uma database desde uma pgina JSP, para isto, criaremos uma classe (ConnectionCreator) , que ser usada por nossa pgina. Em primeiro lugar nos conectaremos a um SQL Server, logo poderemos ver como modificando um pouco a classe tambm se pode usar para MySql. Comeamos ento escrevendo o cdigo da primeira verso da classe, para logo explica-la com mais detalhes:

Linha 1: definio do package que conter a classe, necessrio para logo importar a classe dentro da pgina. Linhas 3 e 4: Importamos duas classes standard de Tomcat. Linha 6 : Definio da classe, como pblica, com o nome ConnectionCreator. Linha 8: Definio do nico mtodo da classe, getSqlServerConnection, que receber como parmetros uma lista de valores, para devolver logo, um objeto java.sql.Connection.
Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 5

Manuais e recursos para desenvolvimento web www.criarweb.com

Os parmetros que a classe recebe so: database (nome do database), servername (nome ou ip do database server), port (porta de conexo, no caso de SQL geralmente 1433), username e password. Linha 10: try, o comeo do bloco de cdigo que executaremos Linha11: Instancia-se o driver de SQL, que obviamente deve estar presente j seja nas bibliotecas de Tomcat ou nas de nosso site (pasta \WEB-INF\lib). Estes drivers se baixam gratuitamente da Internet e vem empacotados sob a forma de arquivos JAR. Linhas 12 a 14: Construmos uma cadeia de caracteres chamada url, que ser utilizada logo para abrir a conexo. A estrutura deste texto standard, s h que intercalar os parmetros recebidos. Linha 15: Finalmente chegamos ao corao da classe, instanciamos um objeto Connection e, atravs do DriverManager, tratamos de nos conectar ao servidor, passando como parmetro a url construda anteriormente. Linhas 16 a 19: No so estritamente necessrias, porm servem como ajuda ao programador. Controlamos que a conexo tenha sido bem-sucedida e que esteja aberta (por padro sempre est) e mandamos console de Tomcat a mensagem correspondente. O mesmo no caso de que o processo tenha falhado. Linha 21: a funo devolve o objeto. Linhas 23 a 26: No caso de que se produza um erro dentro da estrutura try, o mesmo processado pela estrutura catch, que imprime a mensagem de erro produzido. A esta altura o mtodo terminou, e no nos resta mais do que ver como se utiliza dentro da pgina JSP. Vejamos:
<%@ page language="java" %> <%@ page import = "notas.ConnectionCreator"%> <%@ page import = "java.sql.Connection"%> <% Connection minhaConexao = ConnectionCreator.getSqlServerConnection("Orders", "127.0.0.1",1433,"sa", ""); if (minhaConexao.isClosed()) out.print("FUNCIONA !"); /* CORPO DA PAGINA */ miConexion.close(); /* nao se esquecer de fechar as conexoes. */ %>

Aqui simplesmente criamos um objeto Connection e , atravs do mtodo getSqlServerConnection de nossa classe, nos conectamos ao database. Ao final da pgina, fechamos a conexo. No caso de querer conectar um servidor MySql, convm agregar um segundo mtodo classe, especfico para este tipo de server. Por suposto que devero existir tambm os drivers de

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

MySql em nosso site. Vejamos como seria o mtodo getMySqlConnection

Basicamente a lgica a mesma, muda obviamente o driver iniciado, e a estrutura da url, j que neste caso no contm nem usurio e nem password, dados estes que so passados diretamente ao DriverManager. Artigo por Fernando Arturi

Construo dinmica de menus de seleo utilizando JSP


Acontece quando temos que gerar menus de seleo dentro de pginas HTML. Muitas vezes estes menus so idnticos ou muito parecidos, e pode ocorrer de ocuparem muito lugar dentro de nossa pgina web. A idia passar a esta funo os parmetros que nos interessam, e deixar que ela se ocupe do resto. Vejamos o cdigo da pgina, com uma breve explicao abaixo de cada bloco de cdigo.
<%@ page language="java"%> <%! private void writeMenu(javax.servlet.jsp.JspWriter out, int startValue, int endValue, int selectedValue){ try{ // esta linha eh opcional... out.println("<option value=\"-1\" selected> Selecione uma opcao</option>"); // comeco o ciclo com a classe de valores dado. for (int i=startValue; i<(endValue+1); i++){ // se o valor atual corresponde ao valor do ciclo, //faco aparecer como selecionado if (i == selectedValue){

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

} %>

out.println("<option value=\""+i+"\" selected>"+i+"</option>"); } else{ out.println("<option value=\""+i+"\">"+i+"</option>"); } } }catch(java.io.IOException e1){ System.out.println(e1); }

Esta a funo que gera o menu, recebe como parmetros o valor inicial, o valor final, o valor atual e o objeto JspWriter, que permite escrever dinamicamente sobre a pgina.
<% java.util.GregorianCalendar cal = new java.util.GregorianCalendar(); int day = cal.get(cal.DAY_OF_MONTH); int month = (cal.get(cal.MONTH)) + 1; int year = cal.get(cal.YEAR); %>

Criamos variveis de pgina, que nos serviro somente para provar a funo.
<html> <head> <title>Construo dinmica de menus de seleo</title> </head> <body> <table> <h1>construcao dinamica de menus de selecao</h1> <tr> <td>Dia: <select> <% writeMenu(out,1,31,day); %> </select> </td> <td>Mes: <select> <% writeMenu(out,1,12,month); %> </select> </td> <td>Ano: <select> <% writeMenu(out,2000,2010,year); %> </select> </td> </tr> </table> </body> </html>

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Finalmente o html, muito simples, que mostra como se usa a funcao. Uma variante deste procedimento seria, por exemplo, ler dados de uma database. Por exemplo, se quisermos gerar um clssico menu com a lista de pases do mundo, poderemos fazer uma funo deste tipo:
public void writeCountryMenu(Connection connection, javax.servlet.jsp.JspWriter out, int currentValue){ try{ String sqlString = " SELECT id,Name from T_Countries order by orderview "; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(sqlString); while (rs.next()){ String selected = ""; int countryId = rs.getInt("id"); if (countryId==currentValue) selected = "SELECTED"; out.print("<option value=\""+countryId+"\" "+selected+">"+rs.getString("Name")+"</option>"); } rs.close(); stmt.close(); }catch(Exception e){ System.out.println(e); } }

Neste caso obviamente temos que passar uma conexo a um database (pode ser MsSQL, MySql, etc.) no qual temos a tabela T_countries, com os campos id, name e orderview. Artigo por Fernando Arturi

Instalao de Tomcat para utilizar servlets ou JSP


Este processo bastante simples, porm consta de uma srie de pasos que devem ser realizados ao p da letra: a) Instalar o servidor Tomcat e alguma verso do J2SDK (recomenda-se 1.4.01 ou a Enterprise Edition), indicando o lugar onde se encontra instalada a JVM (Java Virtual Machine), e de preferncia, deixando como porto o 4848 para o acesso do servidor. b) Posteriormente, procede-se a configur-lo no computador. Para isto cria-se uma "varivel de ambiente". Se usar Windows 95/98/2000/XP, cria-se modificando o arquivo autoexec.bat localizado em c:\ (est como arquivo oculto). Sua modificao se faz agregando-lhe a seguinte linha:
set classpath = "rota"

Onde "rota" a localizao dos arquivos jsp-api.jar e servlet-api.jar que se encontram na pasta: rota_de_instalacao_do_servidor_tomcat/common/lib. A seguir um exemplo de linha para agregar ao autoexec.bat, supondo que o servidor tomcat se instalou em c:\arquivos de programa:

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

SET CLASSPATH= C:\Arquivos de programa\Apache Software Foundation\Tomcat 5.0\common\lib\jspapi.jar;C:\Arquivos de programa\Apache Software Foundation\Tomcat 5.0\common\lib\jsp-api.jar

Lembrando que tambm se agrega ao claspath o endereo da rota onde se encontra a pasta \bin do j2sdk (compilador de java). c) Uma vez feito o anterior, para agregar o primeiro servlet ao site, busca-se o arquivo web.xml, o qual se encontra em rota_de_instalacao_do_servidor_tomcat\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\WEB-INF\ e se agrega pasta webapps o novo_servlet.class (que o resultado da compilao do novo_servlet.java). Alm disso, h que acrescentar estas linhas ao arquivo web.xml:
<servlet> <servlet-name>novo_servlet</servlet-name> <servlet-class>novo_servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>novo_servlet</servlet-name> <url-pattern>novo_servlet</url-pattern> </servlet-mapping>

Porm, como o arquivo j tem escrito, acomoda-se de tal maneira que ficar assim:
<servlet> <servlet-name>org.apache.jsp.index_jsp</servlet-name> <servlet-class>org.apache.jsp.index_jsp</servlet-class> </servlet> <servlet> <servlet-name>novo_servlet</servlet-name> <servlet-class>novo_servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>org.apache.jsp.index_jsp</servlet-name> <url-pattern>/index.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>novo_servlet</servlet-name> <url-pattern>novo_servlet</url-pattern> </servlet-mapping>

d) Por ltimo prova-se o servlet escrevendo no explorador http:\\localhost:484\novo_servlet e pronto! Com isso voc dever ver o resultado. Artigo por Julio N. Argota Quiroz

Uso de XML e XSL em JSPs


Utilizando JSP 2.0, podemos combinar JSP e XSL para formatar documentos XML no servidor. Nem sempre possvel (nem conveniente) utilizar o ltimo do ltimo. Se observarem, as grandes organizaes normalmente padronizam uma verso de Java, JSP, EJB, etc... e at que se no passe um tempo e se consolidam as tecnologias (e aparecem remendos) no se muda de verso.

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

10

Manuais e recursos para desenvolvimento web www.criarweb.com

Ento, possvel que tenhamos que nos virar para fazer o mesmo ..... com verses anteriores de JSP. Vocs vero que bastante simples e lhes mostraremos como se faz passo a passo.... utilizando o patrono MVC. Colocaremos os exemplos com NetBeans. Muita gente me pergunta por que o utilizo..... A razo simples, parece muito intuitivo... embora haja outras opes mais potentes. Criar o Projeto Criamos em NetBeans um projeto

Vamos criar alguns documentos XML e XSL com os geradores de cdigo.

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

11

Manuais e recursos para desenvolvimento web www.criarweb.com

Selecionamos dentro do grupo XML

Atribumos um nome

Vamos utilizar este documento como base:


<?xml versao="1.0" encoding="UTF-8"?> <tutoriais> <tutorial> <autor>rcanales@autentia.com</autor> <nome>JSP 2.0</nome> <link>jspel</link> <descricao>Novas caracteristicas de JSPs 2.0</descricao> </tutorial> <tutorial> <autor>alejandropg@autentia.com</autor> <nome>Struts e Eclipse</nome> <link>struts</link> <descricao>Configurao do ambiente Struts em Eclipse</descricao>

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

12

Manuais e recursos para desenvolvimento web www.criarweb.com

</tutorial> </tutoriais>

Repetimos, porm agora selecionamos um documento XSL

Escrevemos nosso XSL


<?xml versao="1.0" encoding="UTF-8" ?> <xsl:stylesheet versao="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <table border="1"> <tr> <td><b>Autor</b></td> <td><b>Nome</b></td> <td><b>Link</b></td> <td><b>Descrio</b></td> </tr> <xsl:for-each select="//tutorial"> <tr> <td><xsl:value-of select="autor"/></td> <td><xsl:value-of select="nome"/></td> <td><xsl:value-of select="link"/></td> <td><xsl:value-of select="descrio"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>

Provar a transformao em NetBeans Vamos usar as caractersticas de NetBeans para provar como ficaria....

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

13

Manuais e recursos para desenvolvimento web www.criarweb.com

Selecionamos, clicando o boto direito sobre o XML ou XSL

Selecionamos os arquivos

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

14

Manuais e recursos para desenvolvimento web www.criarweb.com

E vemos o resultado

Ativamos nosso diretrio como uma WebApp

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

15

Manuais e recursos para desenvolvimento web www.criarweb.com

Introduzir o cdigo Java Agora, vamos escrever uma classe Java que seja capaz de fazer uma transformao e retornala como uma cadeia.

Escrever a classe Java de prova Neste caso, vamos utilizar uma interface para motores de transformao denominado JAXP (ver documentao em SUN) No temos que incluir nada extraordinrio pela verso de Java que estamos usando.
import java.io.*; import javax.xml.transform.*; import javax.xml.transform.sax.*; import javax.xml.transform.stream.*; import org.xml.sax.*; /** * * @author Roberto Canales */ public class transformador { void depura (String pCadeia) { System.out.println("Mensagem: " + pCadeia); } public static void main(String [] args) { transformador p = new transformador(); try { p.depura("Comecamos transformacao"); p.depura(p.transformar()); p.depura("Terminamos");

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

16

Manuais e recursos para desenvolvimento web www.criarweb.com

} catch(Exception e) { p.depura("Erros em aplicacao"); e.printStackTrace(); } } public String transformar() throws Exception { String xmlOrigem = "C:\\exemplos\\jaxpjsp\\xmlbase.xml"; String xslOrigem = "C:\\exemplos\\jaxpjsp\\xslbase.xsl"; Source xmlSource = new StreamSource(new File(xmlOrigem)); Source xsltSource = new StreamSource(new File(xslOrigem)); StringWriter cadeiaSaida = new StringWriter(); Result bufferResultado = new StreamResult(cadeiaSaida); TransformerFactory fabricaTrans = TransformerFactory.newInstance(); Transformer transformador = fabricaTrans.newTransformer(xsltSource); transformador.transform(xmlSource, bufferResultado); } } return cadeiaSaida.toString();

Se executamos este cdigo, veremos na tela de sada: Mensagem: Comeamos transformao Mensagem: <table border="1"> <br> <tr> <td><b>Autor</b></td><td><b>Nome</b> </td><td><b>Link</b></td><td><b>Descrio</b></td> </tr> <tr> <td>rcanales@autentia.com</td><td>JSP 2.0</td><td>jspel</td><td>Novas caracteristicas de JSPs 2.0</td> </tr> <tr> <td>alejandropg@autentia.com</td><td>Struts e Eclipse</td><td>struts</td><td>Configurao do ambiente Structs em Eclipse</td> </tr> </table> Mensagem: Terminamos Ou seja, funciona...... Criar o MVC Agora, vamos criar um servlet, que gerar um XML e o passar (em MVC) a um JSP. Vamos introduzir diretamente o XML em uma cadeia de caracteres.... dando por suposto que se
Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 17

Manuais e recursos para desenvolvimento web www.criarweb.com

obteria de outro modo (por exemplo, usando um Banco de Dados XML) Este JSP, pode executar o cdigo da transformao com diferentes tcnicas: Scriplet (Cdigo Java no JSP) Um Java Bean Um TAG de usurio Usando JSTL de JSP 2.0

Mostraremos como faz-lo com um JSP com Scriplet... o resto dos mtodos muito simples. O servlet
import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class controlador extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String elXML = "<tutoriais><tutorial><autor>rcanales@autentia.com</autor> <nome>JSP 2.0</nome><link>jspel</link><descricao>Novas caractersticas de JSPs 2.0</descricao> </tutorial><tutorial><autor>alejandropg@autentia.com</autor><nome>Struts e Eclipse</nome> <link>struts</link><descricao>Configurao do ambiente Structs em Eclipse</descrio> </tutorial></tutoriais>"; request.setAttribute ("xml",elXML); getServletConfig().getServletContext().getRequestDispatcher("/apresentacao.jsp").forward(request, response); } catch (Exception ex) { ex.printStackTrace (); } } }

O JSP
<%@page contentType="text/html" import="java.io.*,javax.xml.transform.*,javax.xml.transform.sax.*, javax.xml.transform.stream.*,org.xml.sax.*"%> <html> <head><title>JSP Page</title></head> <body> <center> <H1>JSP, transformando XML com XSL</h1> <br> <% String xmlOrigem = (String)request.getAttribute("xml"); String xslOrigem = "C:\\exemplos\\jaxpjsp\\xslbase.xsl";

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

18

Manuais e recursos para desenvolvimento web www.criarweb.com

Source xmlSource = new StreamSource(new StringBufferInputStream(xmlOrigem)); Source xsltSource = new StreamSource(new File(xslOrigem)); StringWriter cadeiaSaiida = new StringWriter(); Result bufferResultado = new StreamResult(cadeiaSaida); TransformerFactory fabricaTrans = TransformerFabrica.newInstance(); Transformer transformador = fabricaTrans.newTransformer(xsltSource); transformador.transform(xmlSource, bufferResultado); out.print(cadeiaSaida.toString()); %> </center> </body> </html>

A sada :

Bom, j sabem como fazer ..... e com Struts.... seria tambm assim de simples! Artigo por Roberto Canales Mora

Manejo de arquivos com JSP


Os comentrios escritos dentro do cdigo, explicam passo a passo que coisa est sendo executada em cada momento. A funo readFile, dado um nome de arquivo (com o "caminho" includo. Ex. D:\files\prova.txt), devolve um objeto de tipo StringBuffer com o contedo do mesmo. O mtodo saveFile , toma como primeiro parmetro o nome do arquivo que se deseja gerar ou modificar, o segundo parmetro o contedo que se deseja introduzir no tal arquivo. Por fim, o terceiro parmetro uma varivel do tipo boolean, que se recebe o valor "true" , agrega a informao recebida no final do arquivo (si este arquivo existir). Se, em troca, recebe "false" como parmetro, apaga o contedo atual do arquivo e o substitui com o segundo parmetro.
19

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

Finalmente a terceira funo serve para buscar um ou mais valores dentro de um arquivo de uma cadeia de texto e substitui-los por uma srie de valores dados. Por exemplo, poderia ser usado deste modo:
String[] busca = {"NOME","SOBRENOME"}; String[] substituo = {"FERNANDO","ARTURI"}; FileManager fm = new FileManager(); String resultado = fm.replaceValues("D:\myFiles\prova.txt", busca, substituo);

A seguir o cdigo da classe:


package notas; import import import import import import import java.io.File; java.io.FileReader; java.io.FileWriter; java.io.BufferedReader; java.io.BufferedWriter; java.io.IOException; java.io.FileNotFoundException;

/** * <p>Title: FileManager</p> * * <p>Description: Manejo de arquivos de texto</p> * * <p>Copyright: Copyright (c) 2006</p> * * @author Fernando Arturi * @version 1.0 */ public class FileManager { public void FileManager(){} /** * O metodo readFile le um arquivo de texto e retorna seu conteudo em * formato de StringBuffer * @param filename String * @return StringBuffer */ public StringBuffer readFile(String filename){ StringBuffer sb = new StringBuffer(); try{ /** * Aqui criamos um objeto File que representa o arquivo de texto que * queremos ler */ File file = new File(filename); /** * Variavel temporaria que usaremos para ler cada uma das linhas do * arquivo de texto */ String line = null; /** * BufferReader - Eh o encarregado de ler o arquivo de texto. * O construtor recebe como parametro um objeto FileReader, que * a s vez recebe o objeto File criado precedentemente. Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 20

Manuais e recursos para desenvolvimento web www.criarweb.com

*/ BufferedReader br = new BufferedReader(new FileReader(file)); /** * Atraves deste ciclo o BufferReader le todo o arquivo, e vai acumulando (sb.append) em um StringBuffer */ while ((line = br.readLine()) != null) { sb.append(line); } /** * No final da leitura fechamos o objeto */ br.close(); } catch (FileNotFoundException fnfe){ /** * Se damos um nome de arquivo que nao existe o sistema gera automaticamente um erro. */ System.out.println("Nao foi possivel encontrar o arquivo "+ filename); } catch (IOException ioe){ /** * Foi produzido um erro durante a leitura do arquivo */ System.out.println("Foi produzido um erro durante a leitura do arquivo "+ filename); } return sb; } /** * Este metodo permite, dada uma cadeia de caracteres determinada, * salvar a mesma como um arquivo de texto, ou agrega-la a um arquivo ja existente * * @param filename String * @param dataToWrite String * @param append boolean */ public void saveFile(String filename, String dataToWrite, boolean append) { try { /** * Criacao do objeto FileWriter dado um nome de arquivo determinado * O segundo parametro (append) contem um valor booleano que * indica se a informacao recebida deve ser agregada no final do * arquivo ou, caso contrario, substituir a informacao ja * existente. */ FileWriter fw = new FileWriter(filename, append); /** * Escritura da informacao no arquivo */ fw.write(dataToWrite); /** * fecha-se o arquivo */ fw.close(); } catch (IOException ioe) { /** * Foi produzido um erro durante a leitura/escritura do arquivo */ System.out.println( "Foi produzido um erro durante a leitura do arquivo " + filename);

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

21

Manuais e recursos para desenvolvimento web www.criarweb.com

} } /** * Esta funcao permite, dado um arquivo em particular, buscar dentro o mesmo * determinados valores e muda-los por uma serie de novos valores dados, * gerando um objeto de tipo String com o resultado * * @param path String * @param valuesToSearch String[] Ejemplo {"NOME", "SOBRENOME"} * @param valuesToReplace String[] Ejemplo {"Fernando Augusto", "Arturi"} * @return String */ public String replaceValues (String path, String [] valuesToSearch, String [] valuesToReplace){ String line; StringBuffer textComplete = new StringBuffer(); String tempText = ""; /** * Leitura do arquivo de texto dado */ try { BufferedReader br = new BufferedReader(new FileReader(path)); while ((line = br.readLine()) != null){ textComplete.append(line); } br.close(); } catch (FileNotFoundException fnfe){ /** * Se damos um nome de arquivo que nao existe o sistema * gera automaticamente um erro. */ System.out.println("Nao foi possivel encontrar o arquivo "+ filename); } catch (IOException ioe) { /** * foi produzido um erro durante a leitura/escritura do arquivo */ System.out.println( "Foi produzido um erro durante a leitura do arquivo " + filename); } /** * Uma vez completada a fase de leitura do arquivo, passamos a * busca e substituicao dos valores dados. * Para isto geramos um ciclo que percorremos tantas vezes como valores * que tivermos que processar. */ for (int i=0; i<valuesToSearch.length; i++){ int position = textComplete.indexOf(valuesToSearch[i]); if (position>0 ){ tempText = textComplete.substring(0,position); /** * busca e substituicao da cadeia. */ tempText = tempText + valuesToReplace[i] + textComplete.substring(position+valuesToSearch[i].length(),textComplete.length()); textComplete = new StringBuffer(tempText); } } return tempText; }

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

22

Manuais e recursos para desenvolvimento web www.criarweb.com

Artigo por Fernando Arturi

Manual de JSP: http://www.criarweb.com/jsp/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

23

You might also like