Desenvolvimento Web...2 Java....2 O Tomcat...2 Instalando o ambiente da aplicação....3 Instalando o jdk JAVA...3 Instalando o Tomcat...3 Criando um novo ambiente de desenvolvimento...4 Definição de Servlet...7 Introdução ao JSP...8 Diretivas...10
Desenvolvimento Web Java. Como já é de conhecimento de todos, a linguagem de programação JAVA vem evoluindo sempre e apresentando grandes inovações tecnológicas, a partir deste ponto estudaremos uma destas tecnologias Web: SERVLET JSP. Para que o Java funcione em aplicações escritas para Web, você precisará de um Container Servlet. Esse container pode ser um servidor, servindo todos os tipos de aplicativos Web, ou a integração de módulos funcionais. Para os nossos estudos faremos a utilização de um servidor dedicado (o Tomcat). Existem vários servidores e containeres disponíveis no mercado, sendo os mais famosos: Apache Tomcat Red Hat JBoss IBM Websphere O Tomcat O Tomcat tem suas origens no início da tecnologia servlet. A Sun criou o primeiro container servlet, o Java Web Server para demonstrar a tecnologia, porém, não era muito robusto. Ao mesmo tempo a Apache Software Foundation (ASF) criou o JServ, um servlet engine que podia ser integrado com o servidor Web Apache. Em 1999, a Sun doou o código do Java Web Server para o ASF, e os dois projetos se fundiram para criar o Tomcat. A versão 3.x foi a primeira da série Tomcat e teve descendência direta do código originário da Sun. Em 2001, o ASF liberou a versão 4.0 do Tomcat, que era uma completa arquitetura redesenhada do Tomcat no qual teve um novo código base. A série Tomcat, versão 4.x é um RI (Reference Implementation) de especificações Servlet 2.3 e JSP 1.2 A versão do Tomcat 5.x é a atual RI de especificações Servlet 2.4 e JSP 2.0. Embora exista a versão 6.x do Tomcat, essa ainda não é totalmente estável para uso. Tecnicamente o Tomcat é um Container Web, ou seja, responde as requisições web vindo de aplicações Servlet e/ou JSP, além disso, o Tomcat tem a capacidade de atuar, também, como um servidor
Web/HTTP ou, então, como um módulo integrado em servidores Web dedicados, como o próprio Apache ou o IIS da Microsoft. Instalando o ambiente da aplicação. Instalando o jdk JAVA Na utilização da matéria, será abordado a versão Java JDK5.x, o pacote de instalação, para o Windows, utilizado será o jdk-1_5_0_10-windows-i586-p.exe, já disponibilizado nos grupos. A instalação do pacote é padrão e não requer prática nem, tão pouco, habilidade, como exemplo deixaremos a instalação feita no diretório C:\jdk1.5.0_10 Configuração do Ambiente Java O mais importante é a correta configuração do ambiente Java para que o servidor Tomcat localize seus arquivos binários para a compilação/execução de duas aplicações Servlet e/ou JSP. Para isso devem ser criadas as seguintes variáveis de ambiente, com as respectivas informações: JAVA_HOME = C:\jdk1.5.0_10 JRE_HOME = C:\jdk1.5.0_10\jre A variável Path deve ser editada e em seu valor a informação C:\jdk1.5.0_10\bin deve ser adicionado. As variáveis de ambiente são criadas clicando, com o botão direito do mouse, em Meu Computador, Propriedades e na aba Avançado, acionando o botão Variáveis de Ambiente. Após essa configuração iremos para a instalação do Tomcat Instalando o Tomcat Pacote de instalação pode ser localizado em http://tomcat.apache.org/download-55.cgi A instalação do Tomcat, do mesmo modo que a instalação do JDK não exige muita experiência, por isso é mais indicado utilizar o pacote de instalação compactado e apenas descompactá-lo no
diretório desejado, também para fins de exemplos o Tomcat terá seu conteúdo descompactado no diretório C:\Tomcat. Configurando o Ambiente Tomcat Através dos mesmos procedimentos apresentados para a criação de variáveis de ambiente, mostrado anteriormente, deve-se criar mais uma variável chamada CATALINA_HOME, onde seu conteúdo será a exata localização da instalação do Tomcat, que no nosso exemple está em C:\Tomcat Com todos esses passos finalizados temos nosso ambiente de desenvolvimento plenamente configurado, para testar devemos iniciar o Tomcat através do arquivo startup.bat presente no diretório, C:\Tomcat\bin e para confirmar se não houve nenhum erro o teste http://localhost:8080 deve ser executado, se a tela do Apache Software Foundation aparecer significa que está tudo certo. Criando um novo ambiente de desenvolvimento Contextualizando um site novo O modelo de contextualização que será apresentado é, como o próprio nome diz, um modelo, não precisa ser exatamente o mesmo, isso variando da experiência do programador, portanto segue um modelo prático e funcional para a contextualização do mesmo. Por exemplo, se o novo site for armazenado na raiz do sistema, a estrutura será: C:\Site WEB-INF classes meupacote Onde, dentro do diretório WEB-INF conterão arquivo web.xml, descritor da aplicação, que será abordado mais adiante e no diretório classes ficarão os arquivos java e class utilizados pelo Tomcat. Após o processo de criação da estrutura de diretórios, deve ser criado um novo arquivo chamado Site.xml, localizado no diretório C:\tomcat\conf\Catalina\localhost contendo a seguinte estrutura mínima: <?xml version="1.0" encoding="utf-8"?> <context docbase="c: \Site" DisplayName="Nome Descritivo do Site">
</context> O arquivo Site.xml é o arquivo responsável por indicar ao servidor Tomcat a localização física dos arquivos que serão visualizados na utilização da aplicação. Escrevendo o primeiro teste MeuPrimeiroServlet.java package meupacote; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class MeuPrimeiroServlet extends javax.servlet.http.httpservlet { public void destroy(){ super.destroy(); public void init() throws ServletException { super.init(); protected void service(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset-iso-8859-1"); String html = "<html>" + "<head><title>exemplo prático de Servlet</title>" + "</head>" + "<body>" + "<h1>meu Primeiro Servlet Oficial</h1><hr>" + "</body>" + "</html>"; PrintWriter out = response.getwriter(); out.print(html); out.close(); Após criar o arquivo MeuPrimeiroServlet.java o mesmo deve ser compilado, para que seja transformado em código de máquina e o containet servlet consiga executá-lo, para isso o seguinte comando deve ser executado. javac classpath C:\tomcat\common\lib\servlet-api.jar Site\MeuPrimeiroServlet.java Se não houver nenhum erro um arquivo chamado MeuPrimeiroServlet.class deverá existir.
Agora, voltando a contextualização do Site devemos criar um arquivo chamado web.xml localizado no diretório C:\Site\WEB-INF com as seguintes informações. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app id="webapp_id"> <description> Descritor do contexto de desenvolvimento. </description> <display-name> Meu Primeiro Servlet </display-name> <servlet> <servlet-name>meuprimeiroservlet</servlet-name> <servlet-class>meupacote.meuprimeiroservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>meuprimeiroservlet</servlet-name> <url-pattern>/meuprimeiroservlet</url-pattern> </servlet-mapping> </web-app> Pronto, nosso ambiente de desenvolvimento/testes está configurado, vamos ativá-lo: O Tomcat possui um sistema de Deploy (ativação de contexto) localizado no endereço http://localhost:8080/manager que é o gerenciador de aplicações do Tomcat. Não possuo nenhum usuário e senha para usar esse sistema o que eu faço? Para solucionar essa situação, um usuário administrador deve ser criado, esse procedimento é executado editando o arquivo tomcat-users.xml localizado no diretório C:\tomcat\conf com as seguintes informações: <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="1234" roles="admin,manager"/> </tomcat-users> Após criar esse usuário Admin, entrar nom endereço do manager e no campo XML Configuration file URL: adicionar o caminho exato do arquivo Site.xml, que no nosso exemplo está em C:\tomcat\conf\Catalina\localhost\Site.xml. Para confirmar a contextualização basta digitar http://localhost:8080/site/meuprimeiroservlet Definição de Servlet Servlets são classes Java, desenvolvidas de acordo com uma estrutura vem definida, e que, quando instaladas junto a um Servidor que implemente um Servlet (no caso o Tomcat) podem tratar requisições recebidas de clientes. No nosso exemplo de servlet foram criados os métodos de inicialização (init), servidor de pedidos (service) e finalização (destroy) como mostrado no quadro abaixo. Inicializando init() Inicializado service() Servindo os Pedidos destroy() Coletando o lixo e Finalizando
Introdução ao JSP Enquanto que ao desenvolver um Servlet, você tem que inserir muitos códigos Java sendo que a parte do Layout (a Perfumaria) ficava a cargo do Web Designer. Graças a esse problema a Sun desenvolveu uma tecnologia baseada em Servlets chamada JavaServer Pages (JSP). JSP são páginas embutidas em HTML, assim, a página dinâmica é gerada pelo código JSP e é carregada pelo container JSP na forma de Servlet: Como? Primeiramente devemos entender a estrutura dos arquivos JSP Em páginas dinâmicas escritas em JSP você tem as tags de abertura <% e de fechamento %> para a inclusão dos comandos desejados na programação. As tags mais comuns são: Comentários <%-- esse é um comentário de uma linha --%> <% /* esse é um comentário de mais de uma linha */ %> Declaração de atributos ou métodos <%! %> Expressão de um resultado <%= %> Tags Personalizadas <%@ taglib %> Um exemplo de arquivo jsp <%@ Page language= java" contenttype= text/html; charset=iso-8859-1 pageencoding= ISO-8859-1 %> <HTML><HEAD><TITLE>Teste de página JSP</TITLE></HEAD> <BODY> <% String s = <h2> Conteúdo de uma variável string em JSP </h2> ; out.write(s); %> </BODY> </HTML>
A diferença básica entre a programação com Servlet e a programação com JSP é que o JSP não precisa ser compilado pelos mesmo procedimentos de compilação do Servlet, sendo isso um procedimento padrão do próprio servidor tomcat. A página JSP é um arquivo de script interpretado inicialmente e depois compilado em um Servlet, para visualizar os arquivos basta verificá-los em: C:\tomcat\work\Catalina\localhost\Site\org\apache\jsp Obs.: está marcado em negrito o nome Site, esse é o nosso site que foi criado pelos procedimentos de Deploy vistos anteriormente. Como o Servlet Container saberá que alterei o arquivo. O servidor container verifica a data de alteração dos arquivos que contem a página JSP e caso essa data se modifique o processo de compilação é executado Configuração do arquivo web.xml No caso da criação de páginas JSP, deve-se adicionais novos elementos ao arquivo web.xml, para que os arquivos iniciais sejam chamados sem a necessidade de escrevê-los diretamente na barra de endereço do browser, pra isso o arquivo web.xml deve ser alterado com as seguintes informações. (... ) <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> (... ) </welcome-file-list> (... )
Diretivas Diretivas são informações especiais ditas ao container sobre as páginas JSP quando compilado em Servlet. Basicamente existem três tipos de diretivas principais, que são: page: permite a importação de classes, customização de super classes servlet entre outras. include: permite que um conteúdo externo seja inserido em um arquivo servlet1 taglib: permite que o ambiente importe uma determinada biblioteca de tags Diretiva page Como o próprio nome já diz a diretiva page serve para definir informações especiais para a página JSP através de diversos atributos, vistos abaixo. Atributos da diretiva page Atributo Valores Possíveis Descrição language "Java" A linguagem de programação usada nos Scriptlets, declarações e expressões da página JSP ou qualquer dos arquivos incluídos a esta. Na versão 2.0, o único valor permitido é "Java". extends "pacote.classe" Define-se a super classe do servlet por herança import "pacote.classe" Pacote que possa ser importado session "true false" Permite ou não variáveis de sessão buffer "nome 10kb" Tamanho do buffer em KB para o JspWriter out. O buffer padrão é definido pelo servidor isthreadsafe "true" ou "false" Define se a segurança de thread é implementada na página JSP. O valor padrão é true, o que significa que o container JSP pode enviar múltiplas requisições simultâneas para a mesma página JSP. Você deverá escrever o código responsável para sincronizar as múltiplas threads clientes. Se o valor do atributo for definido como false, o container JSP enviará uma requisição de cliente de cada vez.
info "mensagem" Uma string que pode ser incorporada no resultado da compilação da página JSP. Mais tarde este valor pode ser obtido usando o método Servlet.getServletInfo(). errorpage "erro.jsp" O caminho para uma página JSP para a qual a página JSP atual enviará exceções (erros). iserrorpage "true false" Define se é uma página de controle de erro contenttype "text/html", "charset", Define o tipo de MIME e a codificação de caracteres que a página JSP usará quando enviar a resposta ao cliente. pageencoding "ISSO-8859-1" Define a codificação de caractere que a página JSP. autoflush "true false" O valor true (padrão) indica se o buffer deve ser esvaziado. Em false, indica que uma exceção deve ser mostrada quando ocorrer overflows. Exemplo de página JSP usando a diretiva page. <%@ page language="java" contenttype="text/html" pageencoding="iso-8859-1" import="java.util.*" import="java.text.simpledateformat" %> <html> <head><title>diretiva Page</title></head> <body> <h1>exemplo usando a diretiva page</h1> <% Date hoje = new Date(); SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yy"); %> A data de hoje é: <b><%= formato.format(hoje)%></b> </body> </html> Nesta página foram utilizados os atributos language, contenttype, pageencoding e import.
Diretiva include A diretiva include permite que possam ser incluídos conteúdos externos de outras páginas dentro da página JSP que solicita o include, para entender esse conceito vamos fazer um exemplo simples. Páginas externas cabeçalho.html rodape.html Página include.jsp <%@ page language="java" contenttype="text/html" pageencoding="iso-8859-1" %> <html> <head><title>diretiva Include</title></head> <body> <h1>exemplo usando a diretiva include</h1> <%@ include file= cabecalho.html %> <h2>este é o conteúdo da página</h2> <%@ include file= rodape.html %> </body> </html>
Diretiva taglib Tags Personalizadas são comuns no desenvolvimento de páginas dinâmicas escritas em Java. Ao longo dos anos dois tipos de tags personalizadas surgiram, as tags Clássicas e Tags Simples. Abaixo veremos um exemplo de criação de uma tag básica que simplesmente irá imprimir na tela a mensagem Desenvolvento com taglib como resultado de uma página html. DesenvolvendoTaglib.java package meupacote; import java.io.ioexception; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.tagsupport; public class DesenvolvendoTaglib extends TagSupport { public int dostartag( ) throws JspException { try { pagecontext.getout( ).print( Desenvolvendo com taglib ); catch (IOException ioe) { Throw new JspTagException( Erro: IOException ); Return SKIP_BODY;