Java para Desenvolvimento Web JSP Antes de iniciarmos a comentar sobre a Tecnologia Java Server Pages, teremos uma breve apresentação do Servidor (Web Contanier) TomCat. Então vamos lá. Servidor TomCat Após Instalar o TomCat e verificar que o mesmo está sendo executado, é sempre bom conhecer o servidor para que possamos contornar possíveis problemas que possam ocorrer no desenvolvimento, como algum serviço da sua máquina usar a porta padrão do TomCat, sendo assim o mesmo não iria conseguir ser iniciado já que sua porta estaria ocupada. Quando descompactamos o servidor podemos visualizar algumas pastas como mostra a figura abaixo. Figura 1 – Descompactação do Servidor TomCat Cada pasta tem uma função específica relacionada ao servidor, vejamos algumas delas: bin = Executáveis, incluindo os aplicativos para iniciar e para encerrar a execução do servidor. O arquivo “startup.bat” (ou “startup.sh” para Linux) iniciará o servidor, “shutdown.bat” terminará o serviço. conf = Arquivos de configuração do Tomcat. O arquivo “server.xml”, em particular, define uma série de parâmetros para a execução do servidor, como por exemplo, a porta onde o servidor irá receber requisições (essa porta é, por default, 8080), devendo ser examinado com cuidado e modificado conforme as necessidades. logs = Arquivos de log do servidor. Além de gerar arquivos de log contendo entradas para cada requisição recebida, como qualquer servidor web, o Tomcat também pode gerar arquivos de log com tudo o que as aplicações desenvolvidas enviam para a saída padrão do sistema. work = Diretório temporário do Tomcat. Esse diretório é utilizado, por exemplo, para realizar a recompilação automática de páginas JSP. webapps = Nesse diretório são instaladas as diversas aplicações web desenvolvidas. Iniciando o Servidor Figura 2 – Inciando o Serviço do TomCat Para iniciar o serviço do TomCat escolha o arquivo “startup.bat”, após isso será aberta uma janela informando que o servidor foi iniciado com Sucesso. Após iniciado abra um browser ( Firefox, Internet Explorer) e acesse o endereço http://localhost:8080. Se a tela abaixo aparecer para você, parabéns, o Tomcat está instalado e funcionando em seu computador. Figura 3 – Manager do TomCat OBS: Caso o servidor não inicie, tente executar o arquivo via prompt de comando no MS-DOS, assim você conseguirá ver o motivo da não inicialização do serviço. Manager do Servidor A ferramenta de gerenciamento do tomcat trás vários recursos que podem ser utilizados no browser como Gerenciamento do Servidor, Status de Aplicativos, Deploy e UnDeploy de Aplicações, Documentação e Exemplos de JSP. Figura 4 – Lista de Aplicativos Como visto na figura anterior, a tela de gerenciamento do tomcat permite que você verifique se a sua aplicação fez o deploy ou não atarvés da coluna Running, o número de sessões ativas existentes no seu aplicativo, permite expirar sessões, recarregar um aplicativo ou fazer UnDeploy do mesmo. Ainda no gerenciamento é possível através de um arquivo .WAR existente fazer deploy no servidor, necessitando apenas que você selecione o arquivo que fará o UpLoad para o Servidor, essa funcionalidade pode ser utilizada quando não há acesso direto ao FTP na qual o servidor se encontra. server.xml O arquivo server.xml é lido pelo servidor para parametrizar configurações como porta na qual o serviço irá executar, contextos de aplicativos, timeout de requisições, deploy automático e etc. É possível configurar a porta através da tag XML <Connector port="8080"/>, nessa mesma tag existe um atributo chamado connectionTimeout=”20000” onde em milisegundos é possível determinar quanto tempo o servidor deve esperar por uma requisição. Outra tag importante é a tag de Contexto, onde é possível configurar um aplicativo sem a necessidade de fazer deploy do mesmo toda vez que ele seja alterado, nessa tag você também define o caminho para que um projeto seja executado através do atributo path. <Context path="/sysjuridico" reloadable="true" docBase="B:\Java\Workspaces\Web\sysjuridico" workDir="B:\Java\Workspaces\Web\sysjuridico\work" /> tomcat-users.xml o arquivo tomcatusers.xml é utilizado para configurar usuários no tomcat, a tag <role rolename="manager"/> especifica o papel a ser executado no servidor. A tag <user username="admin" password="admin" roles="tomcat, manager, admin"/> cria um usuário utilizando o papel criado anteriormente. JSP – Java Server Pages Todo JSP quando compilado se torna uma Servlet, assunto dos próximos capítulos, para que possamos utilizar JSP (Tecnologia Java embutida em páginas) são necessários Scriplets (veja a apostila 1). Através das tags <% //Código Java Aqui %> podemos criar variáveis, classes e utilizar praticamente todos os recursos Java. Um Exemplo de código JSP para exbir uma mensagem de boas vindas seria da seguinte forma: <% out.println("Seja Bem Vindo ao Curso de Java para Web"); %> O código acima faria com que o Scriplet escrevesse na página a mensagemm passada para o método println. Como toda requisição na Web retorna uma resposta HTML, significa dizer que a mensagem retornada para o usuário do navegador é um HTML, não impedindo que pudéssemos fazer o seguinte: <% out.println("<h1>Seja Bem Vindo ao Curso de Java para Web</h1>"); %> Acima foi colocado as tags do HTML <h1>, o que faria com que o texto fosse exibido na página com as características da tag colocada. Dessa forma é possível escrever o texto da forma que deseja-se tendo apenas que colocálo como saída para o HTML. Para simplificar a escrita o texto ainda poderia ser exibido da seguinte maneira, que também serviria para exibir variáveis e etc. <%= "<h1>Seja Bem Vindo ao Curso de Java para Web</h1>" %> Códigos JSP Podemos criar variáveis e exibir os seus resultados como faríamos em uma classe Java comum do JSE. <% int idade = 51; String nome = "João Vieira"; out.println("Olá, meu nome é "+ nome + " e tenho "+ idade + " anos!"); %> Código 1 – Criando variáveis no JSP (minhaPagina.jsp) Criando Classes Para criação de classes a regra é a mesma, o código Java deve estar entre as tags JSP. Então para criarmos uma classe que exibisse uma mensagem de boas vindas, teríamos a seguinte classe: <% class PrimeiroExemplo { public String getMensagem(){ return "Olá, Bem Vindo ao Curso de desenvolvimento para Web com Java"; } } %> Código 2 - Criando Classe no JSP (minhaClasse.jsp) Com a classe PrimeiroExemplo construída dentro da sua página JSP, podemos instanciar a classe e ver o resultado. Para isso após a criação da classe iremos instanciar a mesma e exibir o resultado como HTML. <% PrimeiroExemplo p = new PrimeiroExemplo(); out.println(p.getMensagem()); %> Código 3 - Instanciando a Classe criada (minhaClasse.jsp) Diretivas São códigos que demonstram ao container (que pode ser o Tomcat, Jboss ou qualquer outro), informações especiais de processamento concernentes à página. Traduzindo, ela pode ser usada para importar classes, incluir o conteúdo de uma outra página, especificar a utilização bibliotecas de tags personalizadas, para dizer qual a linguagem de geração de scripts, entre outras coisas. Como vimos anteriormente, criamos classes dentro do próprio JSP, porém, através das diretivas é que podemos criar ou utilizar classes externas aos JSP’s. Para exemplificar, criemos um pacote na pasta WEBINF do seu aplicativo, após isso crie uma classe. O resultado da classe deve ficar parecido com o código abaixo. package br.cd; public class Exemplo1 { public String getMensagem(){ return " Olá, Bem Vindo ao Curso de desenvolvimento para Web com Java "; } } Código 4 – Criando uma classe .java Após criada a classe, podemos instanciá-la em um JSP da seguinte forma: <% Exemplo1 p = new Exemplo1(); out.println(p.getMensagem()); %> Agora teremos que usar a diretiva de importação para que a classe seja reconhecida no JSP, a diretiva será da seguinte forma: <%@page import="br.cd.Exemplo1"%> Assim podemos utilizar qualquer método que esteja na classe Exemplo1. Diretiva de Página (page) A diretiva de página possui diversos atributos com vários propósitos, vejamos eles. Atributo Info Usado para inserir informações sumarizadas da página, não havendo restrições ao seu tamanho. Exemplo: <%@ page info="Estudo sobre Diretivas JSP, Prof. Cristiano Neves, 2006" %> Atributo Language Usado, em geral, para especificar Java como a linguagem de criação de script para a página. Exemplo: <%@ page language="java" %> Atributo ContentType Este atributo indica qual o tipo MIME (Multipurpose Internet Mail Extensions) da resposta está sendo gerada pela JSP. Os tipos mais comuns são: “text/plain”, “text/html”, “text/xml”. Logo abaixo segue o exemplo usado como padrão para as JSPs. <%@ page contentType="text/html" %> Atributo Extends Serve para indicar a super classe que será usada pelo container JSO no momento de tradução da página em um Servlet Java. Exemplo: <%@ page extends="com.taglib.jsp.primeirapagina" %> Atributo Import Com o atribuo import, diferente do extends, é capaz de estender um conjunto de classes Java que poderão ser usadas nas páginas JSPs. Esta forma é mais econômica de se digitar código, sendo mais prático. Exemplo: <%@ page import="java.util.List" %> Atributo Session Session é do tipo boolean, indica se a página está participando do gerenciamento de sessão. Por exemplo, se quisermos dizer que uma página é parte de uma sessão, utiliza-se a seguinte sintaxe: <%@ page session="true" %> Atributo Buffer Responsável por controlar a saída bufferizada para uma página JSP. Se for ajustado para “none” o conteúdo de uma JSP é passado instantaneamente à resposta HTTP. O tamanho do buffer é descrito em kilobytes. Exemplo: <%@ page buffer="12kb" %> ou <%@ page buffer="none" %> Atributo AutoFlush Semelhante ao Buffer, também é responsável por controlar a saída buferizada, mais exatamente o comportamento do container JSP quando já esteja cheio o Buffer de saída. Neste caso é esvaziado automaticamente o Buffer de saída e o conteúd0o enviado para o servidor HTTP que transmite para o Browser responsável pela solicitação. Sendo do tipo boolean, sua sintaxe é dada abaixo: <%@ page autoFlush="true" %> Atributo isThreadSafe Quando uma página JSP é compilada em um Servlet, ela deve ser capaz de atender a múltiplas solicitações. Para isso devemos utilizar o atributo isThreadSafe, caso contrário é necessário defini-lo como “false”. Exemplo: <%@ page isThreadSafe="false" %> Atributo errorPage ErrorPage indica uma página alternativa que será exibida caso aconteça um erro não previsto durante o processamento de uma página JSP no container. Exemplo: <%@ page errorPage="/diretorio/erro.jsp" %> Atributo isErrorPage Responsável por define uma página JSP que servirá como a página de erro padrão para um grupo de páginas JSP. Sendo do tipo boolean, sua sintaxe é descrita abaixo: <%@ page isErrorPage="true"%> Diretiva de Inclusão (include) Coloca o conteúdo de um arquivo em outro. Não há limites para inclusões, podendo ter várias em uma mesma página. A diretiva se substitui pelo conteúdo indicado. Sua sintaxe é: <%@ include file="URLdoArquivo" %> ou <jsp:directive.include file="URLdoArquivo" /> Diretiva de biblioteca (taglib) Se usarmos esta diretiva em uma página, um conjunto de tags personalizadas estará a sua disposição, que poderá ser usadas num sistema de página à página. Podendo ser declaradas, também, de duas formas: <%@ taglib uri="URLdaBibliotecadeTags" prefix="PrefixodaTag" %> ou <jsp:directive.taglib uri="URLdaBibliotecadeTags" prefix="PrefixodaTag" /> Tags em JSP Em JSP existem tags que podem ser utilizadas para efetuar ações, são as Action Tags, basicamente elas permitem fazer 3 ações. Utilização de JavaBeans; Controle de Transferência de Páginas; Suporte independente pelos browsers de applets Java. Java Beans <jsp:useBean Instancia uma classe JavaBean. Exemplo: <jsp:useBean id="aluno" class="br.cd.Aluno"/> <jsp:setProperty Seta valor para uma propriedade de um JavaBean. Exemplo: <jsp:setProperty property="nome" name="aluno" value="Aecio Costa"/> <jsp:getProperty Pega o valor de uma propriedade do JavaBean. Exemplo: <jsp:getProperty property="nome" name="aluno"/> Controle de Transferência de Página <jsp:include Inclui uma página JSP dentro de outra, exemplo: <jsp:include page="pagina.jsp"></jsp:include> <jsp:forward Redireciona para página informada no atributo page. Exemplo: <jsp:forward page=“pagina2.jsp”></jsp:forward> <jsp:param Atributo usado dentro da tag <jsp:forward, serve para passar parâmetros em uma requisição para a página na qual ela está sendo redirecionada. Exemplo: <jsp:forward page="pagina2.jsp"> <jsp:param value="JavaWEB" name="curso"/> </jsp:forward> Applets <jsp:plugin Tag para embutir no html um applet existente. Exemplo: <jsp:plugin type="applet" code="Clock2.class" codebase="applet" jreversion="1.2" width="160" height="150" ></jsp:plugin>