
ss="Subtitulo" style="margin: 0cm 70.75pt 12pt 0cm;">Primeiros passos no desenvolvimento JSP
O
suporte a JSP 2.0 é um dos principais atrativos do novo release do
Tomcat. Aprenda os fundamentos e os novos recursos através de exemplos
O
desenvolvimento de aplicações web em Java pode parecer complicado à
primeira vista. São muitas tecnologias e padrões: Servlets, JSP, JSTL,
Struts, JSF, Taglibs, MVC... Na verdade, esta diversidade de opções
reflete a maturidade da plataforma Java e o simples fato de não existir
uma única solução universal para todos os tipos de aplicações.
O
núcleo de tudo são as especificações de Servlets e JSP (JavaServer
Pages), que foram atualizadas recentemente para as versões 2.4 e 2.0,
respectivamente (veja o artigo sobre Servlets nesta edição). O Tomcat
5.0 é a implementação de referência para estas especificações. Para o
desenvolvedor experiente, as versões novas são uma oportunidade de
experimentar novas maneiras de desenvolver aplicações; para o
desenvolvedor iniciante, é a chance de aprender boas práticas sem
vícios e limitações do passado.
Tradicionalmente,
livros e cursos sobre desenvolvimento web em Java seguem uma ordem
“cronológica”, apresentando as várias tecnologias na ordem em que foram
incorporadas à plataforma. Inicia-se pela API de Servlets e daí
segue-se para páginas JSP e depois bibliotecas de tags. Entretanto,
pode ser mais fácil seguir o caminho inverso, aprendendo primeiro
tecnologias mais novas, como o JSP 2.0 e o JSTL, tornando-se apto a
criar aplicações simples rapidamente – e só mais tarde aprender as
tecnologias de base, como Servlets, adquirindo com isso conhecimento
para criar arquiteturas mais sofisticadas.
Neste
artigo o leitor será apresentado ao Tomcat 5, aprendendo o suficiente
sobre sua instalação e configuração para construir um ambiente de
trabalho, e ao JSP 2.0, aprendendo como construir páginas dinâmicas
simples baseadas na plataforma Java.
Não
esperamos familiaridade prévia com o assunto, mas apenas conhecimentos
básicos de Java e de HTML. Esta é a primeira parte de uma série de três
artigos. A segunda parte irá apresentar o JSTL e a terceira, o modelo
MVC aplicado ao desenvolvimento de aplicações web com Java, tudo com
enfoque muito prático, baseado em exemplos.
Glossário do Java para web
Servlets
são classes Java escritas especialmente para rodar dentro de um
servidor internet (assim como Applets são classes escritas para rodar
dentro de navegadores web). Como tal, não são aplicações autônomas, mas
sim extensões de aplicações para servidores web, servidores SMTP
(e-mail) e outros.
HttpServlets
são Servlets escritos para responder a requisições do protocolo HTTP, o
que na maior parte dos casos significa retornar um documento HTML (mas
poderia ser qualquer tipo de conteúdo reconhecido pelo navegador, por
exemplo imagens PNG, animações Flash, documentos PDF etc). Pode-se
pensar em HttpServlets como CGIs melhorados e específicos para Java.
JSP
– JavaServer Pages, basicamente são páginas HTML que contém marcadores
especiais, dentro dos quais é inserido código Java. O código Java é
executado no servidor web e o resultado é incorporado ao HTML. Assim o
navegador recebe apenas um documento HTML padrão, sem tomar
conhecimento do código Java que estava ali (veja também SSS).
CGI
– Common Gateway Interface é uma especificação que permite a um
programa escrito em uma linguagem de programação qualquer responder a
requisições HTTP encaminhadas por um servidor web. Apesar de ser
independente de linguagem, de servidor web e de sistema operacional, o
CGI tem problemas sérios de performance e escalabilidade.
SSI
– Server-Side Includes é um recurso simples de macro-substituição
presente em alguns servidores web, que permite modificar dinamicamente
uma página HTML pela inclusão de um cabeçalho padronizado, ou fazer a
inserção de texto dinâmico como a data atual.
SSS
– Server-Side Scripting é a evolução do SSI para oferecer recursos mais
completos de programação. Páginas JSP são uma das várias tecnologias de
SSS populares hoje no mercado, assim como PHP, ASP e Cold Fusion.
JSTL
– JSP Standard Tag Library é uma biblioteca padronizada que fornece
tags prontas para loops, decisões, formatação de texto e outras
atividades comuns, de modo que o desenvolvedor não precise criar suas
próprias tags com essa finalidade.
EL
– Expression Language, uma sintaxe simplificada para acesso a objetos
Java e seus atributos dentro de páginas JSP. Originalmente a EL era
reconhecida apenas por atributos de tags JSTL, mas no JSP 2.0, passou a
ser válida em qualquer local da página, mesmo que não seja utilizada a
JSTL.
JSF
– JavaServer Faces, biblioteca de tags e API que facilita a interação
com elementos de formulários HTML e a navegação entre as páginas da
aplicação seguindo o modelo MVC.
Struts
é o mais popular dos frameworks para construção de aplicações web em
Java baseadas no modelo MVC. Fornece um Servlet controlador para a
aplicação e vários taglibs para auxiliar na construção das páginas JSP
que cumprem o papel de Visualização (o "V" do MVC). Os taglibs do
Struts tentem a serem depreciados em favor do JSTL e JSF.
MVC
– Model-View-Controller é um padrão pelo qual os componentes de uma
aplicação são classificados como componentes de Modelo, Visualização e
Controle. Componentes de Modelo cuidam do armazenamento e recuperação
de informações e do processamento de regras de negócios; componentes de
Visualização se limitam a exibir informações segundo um formato ou
layout predefinido; e componentes de Controle cuidam de interpretar
ações do usuário (como cliques) e de chamar os componentes de Modelo ou
Visualização que devem responder a essas ações.
Taglib
– tag library, biblioteca de tags, é uma extensão do JSP pela qual
classes Java podem ser referenciadas como tags dentro de uma página
JSP, efetivamente permitindo ao desenvolvedor criar suas próprias tags.
JSTL é o conjunto de taglibs padrão da plataforma Java. O JSF também
fornece taglibs.
O que é o Tomcat
O
Tomcat é um servidor capaz de suportar o desenvolvimento e a execução,
em ambiente de produção, de aplicações web desenvolvidas segundo os
padrões da plataforma Java. Ele não busca ser um servidor J2EE completo
– não implementa recursos como o suporte a EJBs – mas busca ser um
ambiente completo para aplicações web em Java.
O coração do Tomcat é o componente conhecido como Catalina, que é um container web.
Tem como função fornecer a infra-estrutura para o gerenciamento e
execução de Servlets. O funcionamento de um container web é definido
pela especificação de Servlets, de modo que Servlets que funcionem no
Tomcat devem funcionar com outros servidores que também fornecem
containers web, como o JRun ou o WebLogic.
O segundo componente importante do Tomcat é o Jasper,
um compilador de JSP. Ele transforma páginas JSP em Servlets
equivalentes e compila estes servlets para bytecode Java, resultando em
uma velocidade de execução (para acessos repetidos) bem superior a
outras tecnologias similares, como PHP ou ASP.
O terceiro componente são os conectores. Eles determinam o protocolo cliente/servidor utilizado para acesso ao Tomcat. A configuração padrão ativa o conector Http,
de modo que não há necessidade de configurar um servidor web – o
próprio Tomcat realiza esta função. Outros conectores permitem ao
Tomcat ser um serviço subordinado a um servidor web nativo como o
Apache Httpd ou o IIS, ou então fornecem a funcionalidade de cluster.
Instalando o Tomcat 5
A página de download de binários do projeto Jakarta (jakarta.apache.org/site/binindex.cgi)
oferece várias versões do Tomcat para download. Procure pela versão
mais recente da série 5.0.x (5.0.28 no momento da escrita deste artigo)
e então use o link descrito como (versão).zip (no caso, 5.0.28.zip), que corresponde ao arquivo jakarta-tomcat-(versão).zip. Descompacte o arquivo em um diretório de sua preferência.
Não
baixe, ainda, nenhuma versão da série 5.5.x do Tomcat. Esta série ainda
é considerada instável, em desenvolvimento, e depende de recursos do
Java 1.5 (que também ainda não está disponível para uso em ambiente de
produção). Ela serve aos desenvolvedores do próprio Tomcat, e não aos
desenvolvedores de aplicações web que por acaso pretendem hospedá-las
no servidor livre.
A descompactação do Tomcat 5 cria uma pasta jakarta-tomcat-(versão), que contém os seguintes subdiretórios:
· bin – Scripts para início e término do Tomcat
· common – Classes Java utilizadas pelo servidor e container web, que também são disponibilizadas para as aplicações hospedadas no Tomcat
· conf – Arquivos de configuração
· logs – Arquivos de log de acesso e de erros
· server – Classes Java que formam o servidor Tomcat e seu container web (não disponíveis para as aplicações)
· shared – local onde incluir classes Java que você deseja compartilhar entre várias aplicações web, evitando duplicar classes em cada aplicação
· temp – Arquivos temporários de uso interno do Tomcat
· webapps – Aplicações web são colocadas aqui, como pacotes WAR fechados (arquivos JAR com extensão .war) ou abertos (pastas que contêm um subdiretório WEB-INF e um descritor web.xml).
· work – Arquivos gerados pela transformação de páginas JSP em Servlets