Manual de JSP - Edriely Carrera

Propaganda
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 Tradução de JML
(2 capítulos)
Fernando Arturi
Julio N. Argota Quiroz
http://www.arturi.com.ar
(3 capítulos)
(1 capítulo)
Roberto Canales Mora
http://www.adictosaltrabajo.com
(1 capítulo)
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
1
Manuais e recursos para desenvolvimento web
www.criarweb.com
O que é JSP
JSP é a abreviação de Java Server Pages, que em português seria algo como Páginas de
Servidor Java. É então, uma tecnologia orientada a criar páginas web com programação em
Java.
Bibliografia: Esta descrição de JSP está extraída de um PDF em inglês muito completo que introduz a
tecnologia, que pode ser encontrada na página corporativa de Java de Sun Microsystems, em sua seção
de aprendizado on-line. Por sua vez, tal manual provém do portal Java jGuru.
jGuru: Introduction to JavaServer Pages technology
Com JSP podemos criar aplicações web que se executam em vários servidores web, de
múltiplas plataformas, já que Java é em essência uma linguagem multiplataforma. As páginas
JSP estão compostas de código 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 páginas JSP está baseado nos servlets de Java -programas em Java destinados a
se executar no servidor-, embora o número de desenvolvedores que podem afrontar a
programação de JSP é muito maior, dado que é muito mais simples de aprender que os
servlets.
Em JSP criamos páginas de maneira parecida a como se criam em ASP ou PHP -outras duas
tecnologias de servidor. Geramos arquivos com extensão .jsp que incluem, dentro da estrutura
de etiquetas HTML, as sentenças Java a executar no servidor. Antes que os arquivos sejam
funcionais, o motor JSP realiza uma fase de tradução dessa página em um servlet,
implementado em um arquivo class (Byte codes de Java). Esta fase de tradução se realiza
habitualmente quando se recebe a primeira solicitação da página .jsp, embora exista a opção
de pré-compilar em código para evitar esse tempo de espera na primeira vez que um cliente
solicita a página.
Exemplo de página JSP
Na imagem seguinte pode-se ver um exemplo extremamente simples de uma página JSP e o
esquema de conversão dessa página em um servlet.
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
2
Manuais e recursos para desenvolvimento web
www.criarweb.com
Pré-requisitos
Para aprender JSP, a parte de conhecer HTML, será necessário compreender e ter algo de
experiência na programação em Java, que é uma Linguagem de Programação Orientada a
Objetos por completo. Uma vez conhecida a programação em Java pode-se estudar por alto o
sistema de Servlets, o que nos dará uma melhor idéia do funcionamento interno do motor JSP.
Ademais, necessitaremos baixar e instalar Tomcat, o contêiner de servlets usado na referência
oficial de implementação de JSP. Podemos acessar a um exercício para aprender a realizar esta
instalação, disponível também na referência de aprendizagem da página de Java.
Artigo por Miguel Angel Alvarez - Tradução de JML
Comparando JSP com ASP
JSP e ASP servem para fazer, mais ou menos, o mesmo tipo de aplicações web. Entretanto, no
fundo têm bastantes diferenças. Depois de minha experiência no trabalho com JSP, um dia, um
cliente me perguntou por que não programava a página em ASP no lugar de JSP, já que havia
escutado falar que o sistema de Microsoft tinha umas características muito apropriadas para
seu modelo de negócio. A partir desta sugestão, e para que meu cliente ficasse satisfeito com
a tecnologia JSP -que é a que prefiro utilizar-, preparei uma lista de vantagens de utilizar
páginas dinâmicas Java frente às de Microsoft.
Plataforma e independência do servidor
JSP segue a filosofia da arquitetura JAVA de "escreve uma vez, executa onde quiser". A
implantação 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 têm copyright dos autores. Não reproduzir sem autorização.
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 são 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 contrário a tecnologia ASP
é específica de Microsoft que desenvolve seus processos internamente.
TAGS
Enquanto que tanto JSP como ASP usam uma combinação de tags e scripts para criar páginas
web dinâmicas, a tecnologia JSP permite aos desenvolvedores criar novas tags. Assim os
desenvolvedores podem criar novas tags e não depender tanto dos scripts.
Reusabilidade entre plataformas.
Os componentes JSP são reusáveis 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 páginas JSP são compiladas em Servlets pelo qual atuam como uma porta a todos os
serviços Java de Servidor e livrarias Java para aplicações http. Java faz o trabalho do
desenvolvedor mais fácil p. e. ajuda a proteger o sistema contra as "caídas" enquanto que as
aplicações ASP sobre sistemas NT são mais suscetíveis a sofrê-las, também ajuda no manejo
da memória protegendo contra falhas de memória e o duro trabalho de buscar os falhos de
perda de ponteiros de memória que podem tornar mais lento o funcionamento de uma
aplicação.
Manutenção
As aplicações que usam JSP têm uma manutenção mais fácil que as que usam ASP.
•
•
•
•
As linguagens de Script estão bem para pequenas aplicações, mas não se encaixam
bem para aplicações grandes. Java é uma linguagem estruturada e é mais fácil de
construir e possui manutenções grandes como aplicações modulares.
A tecnologia JSP faz maior ênfase nos componentes do que nos Scripts, isto faz com
que seja mais fácil revisar o conteúdo sem que afete a lógica ou revisar a lógica sem
mudar o conteúdo.
A arquitetura EJB encapsula a lógica de p. e.: acesso a BD, segurança, integridade
transacional e isolamento da aplicação.
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 aplicações baseadas na tecnologia JSP.
Conclusão
As vantagens sobre utilizar a tecnologia Java em relação à proprietária de Microsoft (ASP) são,
como se pode ver, diversas e interessantes. Entretanto, podemos apontar uma vantagem da
programação em ASP, pois é bastante mais fácil de aprender que JSP, pelo menos se não se
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
4
Manuais e recursos para desenvolvimento web
www.criarweb.com
tem uma experiência prévia em programação. 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 rígida.
Artigo por Miguel Angel Alvarez - Tradução de JML
Conexão a um database server com JSP
Neste artigo trataremos o tema da conexão a uma database desde uma página JSP, para isto,
criaremos uma classe (ConnectionCreator) , que será usada por nossa página. Em primeiro
lugar nos conectaremos a um SQL Server, logo poderemos ver como modificando um pouco a
classe também se pode usar para MySql.
Começamos então escrevendo o código da primeira versão da classe, para logo explica-la com
mais detalhes:
Linha 1: definição do package que conterá a classe, necessário para logo importar a classe
dentro da página.
Linhas 3 e 4: Importamos duas classes standard de Tomcat.
Linha 6 : Definição da classe, como pública, com o nome ConnectionCreator.
Linha 8: Definição do único método da classe, getSqlServerConnection, que receberá como
parâmetros 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 têm copyright dos autores. Não reproduzir sem autorização.
5
Manuais e recursos para desenvolvimento web
www.criarweb.com
Os parâmetros que a classe recebe são: database (nome do database), servername (nome ou
ip do database server), port (porta de conexão, no caso de SQL geralmente é 1433), username
e password.
Linha 10: try, é o começo do bloco de código 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 vêem empacotados sob a forma de arquivos JAR.
Linhas 12 a 14: Construímos uma cadeia de caracteres chamada url, que será utilizada logo
para abrir a conexão. A estrutura deste texto é standard, só há que intercalar os parâmetros
recebidos.
Linha 15: Finalmente chegamos ao coração da classe, instanciamos um objeto Connection e,
através do DriverManager, tratamos de nos conectar ao servidor, passando como parâmetro a
url construída anteriormente.
Linhas 16 a 19: Não são estritamente necessárias, porém servem como ajuda ao programador.
Controlamos que a conexão tenha sido bem-sucedida e que esteja aberta (por padrão sempre
está) e mandamos à console de Tomcat a mensagem correspondente. O mesmo no caso de
que o processo tenha falhado.
Linha 21: a função 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 método terminou, e não nos resta mais do que ver como se utiliza dentro da
página 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 , através do método
getSqlServerConnection de nossa classe, nos conectamos ao database.
Ao final da página, fechamos a conexão.
No caso de querer conectar um servidor MySql, convém agregar um segundo método à classe,
específico para este tipo de server. Por suposto que deverão existir também os drivers de
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
6
Manuais e recursos para desenvolvimento web
www.criarweb.com
MySql em nosso site.
Vejamos como seria o método getMySqlConnection
Basicamente a lógica é a mesma, muda obviamente o driver iniciado, e a estrutura da url, já
que neste caso não contém nem usuário e nem password, dados estes que são passados
diretamente ao DriverManager.
Artigo por Fernando Arturi
Construção dinâmica de menus de seleção utilizando JSP
Acontece quando temos que gerar menus de seleção dentro de páginas HTML. Muitas vezes
estes menus são idênticos ou muito parecidos, e pode ocorrer de ocuparem muito lugar dentro
de nossa página web.
A idéia é passar a esta função os parâmetros que nos interessam, e deixar que ela se ocupe do
resto. Vejamos o código da página, com uma breve explicação abaixo de cada bloco de código.
<%@ 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 têm copyright dos autores. Não reproduzir sem autorização.
7
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 função que gera o menu, recebe como parâmetros o valor inicial, o valor final, o valor
atual e o objeto JspWriter, que permite escrever dinamicamente sobre a página.
<%
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 variáveis de página, que nos servirão somente para provar a função.
<html>
<head>
<title>Construção dinâmica de menus de seleção</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 têm copyright dos autores. Não reproduzir sem autorização.
8
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 clássico menu com a lista de países do mundo, poderemos
fazer uma função 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 conexão 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
Instalação de Tomcat para utilizar servlets ou JSP
Este processo é bastante simples, porém consta de uma série de pasos que devem ser
realizados ao pé da letra:
a) Instalar o servidor Tomcat e alguma versão 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
preferência, deixando como porto o 4848 para o acesso do servidor.
b) Posteriormente, procede-se a configurá-lo no computador. Para isto cria-se uma "variável de
ambiente". Se usar Windows 95/98/2000/XP, cria-se modificando o arquivo autoexec.bat
localizado em c:\ (está como arquivo oculto). Sua modificação se faz agregando-lhe a seguinte
linha:
set classpath = "rota"
Onde "rota" é a localização 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 têm copyright dos autores. Não reproduzir sem autorização.
9
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 também se agrega ao claspath o endereço 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 compilação do novo_servlet.java). Além 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>
Porém, 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 é possível (nem conveniente) utilizar o último do último. Se observarem, as
grandes organizações normalmente padronizam uma versão de Java, JSP, EJB, etc... e até que
se não passe um tempo e se consolidam as tecnologias (e aparecem remendos) não se muda
de versão.
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
10
Manuais e recursos para desenvolvimento web
www.criarweb.com
Então, é possível que tenhamos que nos virar para fazer o mesmo ..... com versões anteriores
de JSP.
Vocês verão 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
razão é simples, parece muito intuitivo... embora haja outras opções mais potentes.
Criar o Projeto
Criamos em NetBeans um projeto
Vamos criar alguns documentos XML e XSL com os geradores de código.
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
11
Manuais e recursos para desenvolvimento web
www.criarweb.com
Selecionamos dentro do grupo XML
Atribuímos um nome
Vamos utilizar este documento como base:
<?xml versao="1.0" encoding="UTF-8"?>
<tutoriais>
<tutorial>
<autor>[email protected]</autor>
<nome>JSP 2.0</nome>
<link>jspel</link>
<descricao>Novas caracteristicas de JSPs 2.0</descricao>
</tutorial>
<tutorial>
<autor>[email protected]</autor>
<nome>Struts e Eclipse</nome>
<link>struts</link>
<descricao>Configuração do ambiente Struts em Eclipse</descricao>
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
12
Manuais e recursos para desenvolvimento web
www.criarweb.com
</tutorial>
</tutoriais>
Repetimos, porém 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>Descrição</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="descrição"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Provar a transformação em NetBeans
Vamos usar as características de NetBeans para provar como ficaria....
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
13
Manuais e recursos para desenvolvimento web
www.criarweb.com
Selecionamos, clicando o botão direito sobre o XML ou XSL
Selecionamos os arquivos
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
14
Manuais e recursos para desenvolvimento web
www.criarweb.com
E vemos o resultado
Ativamos nosso diretório como uma WebApp
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
15
Manuais e recursos para desenvolvimento web
www.criarweb.com
Introduzir o código Java
Agora, vamos escrever uma classe Java que seja capaz de fazer uma transformação e retornala como uma cadeia.
Escrever a classe Java de prova
Neste caso, vamos utilizar uma interface para motores de transformação denominado JAXP
(ver documentação em SUN)
Não temos que incluir nada extraordinário pela versão 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 têm copyright dos autores. Não reproduzir sem autorização.
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 código, veremos na tela de saída:
Mensagem: Começamos transformação
Mensagem: <table border="1">
<br>
<tr>
<td><b>Autor</b></td><td><b>Nome</b>
</td><td><b>Link</b></td><td><b>Descrição</b></td>
</tr>
<tr>
<td>[email protected]</td><td>JSP 2.0</td><td>jspel</td><td>Novas
caracteristicas de JSPs 2.0</td>
</tr>
<tr>
<td>[email protected]</td><td>Struts e
Eclipse</td><td>struts</td><td>Configuração 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 têm copyright dos autores. Não reproduzir sem autorização.
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 código da transformação com diferentes técnicas:
•
•
•
•
Scriplet (Código Java no JSP)
Um Java Bean
Um TAG de usuário
Usando JSTL de JSP 2.0
Mostraremos como fazê-lo com um JSP com Scriplet... o resto dos métodos é 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>[email protected]</autor>
<nome>JSP 2.0</nome><link>jspel</link><descricao>Novas características de JSPs 2.0</descricao>
</tutorial><tutorial><autor>[email protected]</autor><nome>Struts e Eclipse</nome>
<link>struts</link><descricao>Configuração do ambiente Structs em Eclipse</descrição>
</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 têm copyright dos autores. Não reproduzir sem autorização.
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 saída é:
Bom, já sabem como fazer ..... e com Struts.... seria também assim de simples!
Artigo por Roberto Canales Mora
Manejo de arquivos com JSP
Os comentários escritos dentro do código, explicam passo a passo que coisa está sendo
executada em cada momento.
•
•
A função readFile, dado um nome de arquivo (com o "caminho" incluído. Ex.
D:\files\prova.txt), devolve um objeto de tipo StringBuffer com o conteúdo do mesmo.
O método saveFile , toma como primeiro parâmetro o nome do arquivo que se deseja
gerar ou modificar, o segundo parâmetro é o conteúdo que se deseja introduzir no tal
arquivo. Por fim, o terceiro parâmetro é uma variável do tipo boolean, que se recebe o
valor "true" , agrega a informação recebida no final do arquivo (si este arquivo existir).
Se, em troca, recebe "false" como parâmetro, apaga o conteúdo atual do arquivo e o
substitui com o segundo parâmetro.
Manual de JSP: http://www.criarweb.com/jsp/
© Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.
19
Manuais e recursos para desenvolvimento web
www.criarweb.com
•
Finalmente a terceira função serve para buscar um ou mais valores dentro de um
arquivo de uma cadeia de texto e substitui-los por uma série 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 código 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 têm copyright dos autores. Não reproduzir sem autorização.
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 têm copyright dos autores. Não reproduzir sem autorização.
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 têm copyright dos autores. Não reproduzir sem autorização.
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 têm copyright dos autores. Não reproduzir sem autorização.
23
Download