Esse artigo faz parte da revista Java Magazine edição 05. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

Criando um fórum com JSP

Mais JSP e JSTL com acesso a dados

Na Edição 4, iniciamos um portal com a construção de um mural, para a postagem de mensagens sobre notícias ou eventos. Neste artigo, vamos nos dedicar à criação de um fórum onde os usuários podem deixar dúvidas para serem respondidas pelos participantes.

Recapitulando

No primeiro artigo instalamos o Tomcat e o banco MySQL. Além disso, criamos a estrutura de diretórios para o nosso portal iniciada em c:\portal, com os seguintes subdiretórios:

 

 

(Você pode fazer o download da primeira parte do portal no site da Java Magazine, ou baixar um pacote completo com as duas partes.)

Para o fórum, vamos criar mais duas pastas, uma chamada forum, para conter os arquivos da nova aplicação do portal, e outra chamada bPortal que abrigará alguns JavaBeans.

Utilizaremos algumas das pastas criadas no primeiro artigo, como a pasta cmpl, que guarda as páginas cabec.jsp e frcAtual.jsp. A primeira é o cabeçalho usado para todas as páginas; a segunda garante a atualização da página no navegador web, para que o usuário não veja uma versão antiga armazenada em cache.

A pasta conecta contém a página varglobal.jsp, que possui o contexto para o acesso ao banco de dados, além de acesso.jsp, que faz a conexão ao banco. Assim o portal pode ser utilizado em outra configuração de servidor (possivelmente utilizando outro banco de dados) apenas com a modificação do arquivo varglobal.jsp.

Por último, a pasta WEB-INF contém o arquivo web.xml, o arquivo de configuração da aplicação e as pastas classes e lib. Nesta última, temos o arquivo dbtags.tld, que permite o acesso aos tags da biblioteca dbtags.jar. Esta biblioteca, por sua vez, pode ser inserida na pasta lib da instalação do Tomcat ou no diretório WEB-INF/lib de nossa aplicação.

Nova tabela

Vamos utilizar um script SQL para a criação de uma tabela para armazenar as perguntas do fórum. Crie um arquivo texto com o seguinte código e salve-o como preparaForum.sql no diretório \portal:

 

use portal;

 

create table tabForum (

 idtForum int not null AUTO_INCREMENT,

 idtForumPai int not null,

 nomUsuario varchar(60),

 desForum text,

 primary key(idtForum)

);

 

Para executar o script, abra uma janela DOS (prompt de comando), mude para o diretório c:\mysql\bin e digite mysql. Isso ativa o prompt do MySQL, para a execução interativa de comandos SQL. Digite o seguinte comando:

 

\. c:\portal\preparaForum.sql

Você pode alterar o script para inicialmente inserir quantos registros desejar (ou digitar comandos insert diretamente no prompt do utilitário mysql). Para sair do ambiente, digite exit;.

Os dois campos que devem ser observados na nova tabela são idtForum, que contém o identificador único de uma mensagem postada, e idtForumPai, que informa se, na hierarquia de mensagens, a mensagem possui ou não um pai (por padrão, uma mensagem com idtForumPai contendo o valor 0 não possui pai, sendo portanto a raiz de uma árvore de mensagens).

Novos usos da JSTL

No primeiro artigo apresentamos a JSTL (JSP Standard Tag Library), uma biblioteca de tags personalizadas criadas para a realização de diversas ações comuns no desenvolvimento JSP. Mais especificamente, utilizamos as tags para conexão e acesso a bancos de dados. Neste segundo artigo utilizaremos mais uma parte desta biblioteca: os tags de controle de condições, como o comando if.

Para fazer o download do JSTL, entre no site jakarta.apache.org/taglibs, na seção "downloads" selecione "Binary" e baixe o arquivo jakarta-taglibs-20021014.zip (ou uma versão mais nova). Após descompactar, é criado um diretório utility (entre outros); nele você encontrará dois arquivos: utility.jar e utility.tld. Copie o arquivo utility.jar para \tomcat\server\lib e, na pasta \portal\WEB-INF, insira o arquivo  utility.tld. Finalmente, crie ou modifique em \portal\WEB-INF, o arquivo web.xml com o código na Listagem 1.

 

Listagem 1. web.xml, descritor de deployment da aplicação web

xml version="1.0" encoding="ISO-8859-1"?>

 

DOCTYPE web-app

   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

   "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

 

<web-app>

 <taglib>

...

Quer ler esse conteúdo completo? Tenha acesso completo