JSP Segundo Semestre – 2008 Professor Glaucio Bianchini Material em http://br.geocities.com/glauciobianchini E-Mail : [email protected] O Ambiente de Desenvolvimento • Conceito Apache/Tomcat O software Tomcat, desenvolvido pela Fundação Apache, permite a execução de aplicações para web. Sua principal característica técnica é estar centrada na linguagem de programação Java, mais especificamente nas tecnologias de Servlets e de Java Server Pages (JSP). Esta abordagem rivaliza, por exemplo, com a usada pela Microsoft com o ASP (baseada na linguagem Visual Basic). A Fundação Apache, mais conhecida pelo seu servidor web de mesmo nome, permite, como no caso do servidor Apache, que o Tomcat seja usado livremente, seja para fins comerciais ou não. O Tomcat está escrito em Java e, por isso, necessita que a versão Java 2 Standard Edition (J2SE) esteja instalada no mesmo computador onde ele será executado. No entanto, não basta ter a versão runtime de Java instalada, pois o Tomcat necessita compilar (e não apenas executar) programas escritos em Java. O projeto Jakarta da Fundação Apache, do qual o subprojeto Tomcat é o representante mais ilustre, tem como objetivo o desenvolvimento de soluções código aberto baseadas na plataforma Java. • O desenvolvimento de uma típica aplicação web a ser executada pelo Tomcat implica no domínio das seguintes linguagens: • • • • Java Todos os algoritmos da aplicação devem ser escritos em Java. HTML A interface da aplicação, isto é, aquilo que o usuário vê em sua tela, é construída na forma de páginas escritas em HTML e visualizadas através do browser do usuário. Esta tarefa normalmente é delegada ao web designer. • XML • Qualquer aspecto relacionado à configuração da aplicação deve ser expresso por meio da linguagem XML em um arquivo chamado web.xml. Os dados de configuração podem ser usados tanto pelo Tomcat como pela aplicação. Instalação do Ambiente e Funcionalidade da JSP • Abaixo segue uma relação dos endereços web onde poderemos encontrar os arquivos que utilizaremos neste semestre: • J2SE = http://java.sun.com/j2se/1.5 • NetBeans = http://www.netbeans.org • J2EE = http://java.sun.com/j2ee/1.4 Funcionamento da JSP • Nasceu para simplificar a criação de páginas WEB Dinâmicas, assim como o PHP visto anteriormente; • Também como no PHP, o cliente faz uma requisição da página através de uma página em JSP que também será processada pelo SERVIDOR. • Se for a primeira vez, esta página JSP é transformada em um programa JAVA (chamado de SERVLET) que será compilado e vai gerar um bytecode (chamado de .class), e só a partir deste será gerada uma página HTML que será enviada ao browser do cliente. A partir da segunda vez que esta página é acessada só será verificado se houveram mudanças ou não. Se não houveram mudanças, o bytecode é chamado para gerar o HTML somente. • A JSP se utiliza da linguagem JAVA como base, tornando-se assim uma linguagem muito mais flexível e robusta que outras plataformas. Passos da Instalação dos programas • Passo 1 – Instalando J2SE 5.0 – é o ambiente JAVA, ele quem irá compilar nossas páginas JSP. Faça o download em http://java.sun.com/j2se/1.5 . Localize nesta página o download do JDK 5.0 e não pegue a versão que tenha o NETBEANS integrado, usaremos um NETBEANS diferente. A instalação não requer nenhum segredo, siga a instalação padrão. • Passo 2 – Instalando a J2EE 1.4 – Para aplicações distribuídas necessitamos do Application Server. Utilizaremos Sun Java System Application Server Platform Edition 8. Pode ser encontrado em http://java.sun.com/j2ee/1.4. Basta seguir a instalação padrão e quando chegar na janela onde se pede usuário e senha, criaremos um usuário e senha padrões para podermos trabalhar. Crie usuário ADMIN e senha ADMINADMIN. • Passo 3 – Um editor gratuíto muito bom – vá até o site http://www.download.com/NetBeansIDE/3000-2212_4-10628055.html?tag=lst0-1 e baixe o netbeans IDE, é a última versão. • Passo 4 – Baixe e instale o TOMCAT, que pode ser encontrado em http://tomcat.apache.org , pegue a versão 5.x, depois clique em Windows Service Installer. Siga a instalação padrão, e quando for criar usuário e senha, também crie como admin (usuário) e adminadmin(senha). • Passo 5 – Testando a Configuração - Reinicie seu computador e execute o NetBeans. Crie uma pasta em seu computador chamada de projetos por exemplo, onde colocaremos todos nossos projetos. • De volta no NetBeans, no menu principal, execute File, New Project, em Categories selecione WEB e do lado de Projects, selecione WEB APPLICATION. Pressione o botão Next em seguida. • Em Project Name, digite testeWeb, clique no botão BROWSE e selecione sua pasta criada de projetos. • Deixe Source Structure como padrão para Java BluePrints, context path será o nome do seu projeto seguido de barra, ex : /testeWeb . Em server, colocaremos o TOMCAT que será o utilizado por nós e por último a versão do J2EE, se queremos a versão 1.4 ou 1.3 • Clique em FINISH e deixe o NetBeans criar a estrutura do projeto. Será montado um arquivo padrão chamado index.jsp • Acesse: http://localhost:8080 ou http://127.0.0.1:8080, aparecerá uma tela de administração do sistema. Exemplo de um SERVLET • package web; • • import java.io.*; import javax.servlet.*; • • • • • • • • • • • • • • • public class PrimeiroServlet extends GenericServlet { public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Meu Primeiro Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("Teste do meu primeiro servlet!"); out.println("</body>"); out.println(“</html>”); } } Compilando o SERVLET • Como podemos ver no código anterior, o nosso PrimeiroServlet nada mais é do que uma classe Java que estende a classejavax.servlet.GenericServlet. GenericServlet é uma classe abstrata básica que implementa a interface javax.servlet.Servlet e define o método abstrato service( ), que deve ser implementado por suas subclasses, para definir o código de execução do serviço do servlet. • Para compilarmos o código, precisamos incluir no classpath o arquivo servlet-api.jar que fica no diretório TOMCAT\common\lib\. Uma vez incluído, agora sim podemos compilar o código. • javac -classpath C:\jakarta-tomcat5.0.16\common\lib\servlet-api.jar web\PrimeiroServlet.java • Um arquivo .class será gerado normalmente, como em qualquer classe java compilada. Configurando o SERVLET • Agora que já temos a classe servlet compilada, podemos colocar o servlet pra funcionar no servidor web. A esta tarefa, damos o nome de deploy. • O deploy se dá da seguinte maneira: primeiro devemos criar um diretório com o nome da nossa aplicação, por exemplo curso. Este diretório deve ficar dentro do diretório TOMCAT\webapps\. • Cada diretório dentro de webapps é um aplicativo web diferente. Um aplicativo pode conter dezenas de Servlets e outros recursos, como JSP, HTML, etc. Os recursos como JSP, HTML, imagens e outros ficam localizados na pasta raiz do aplicativo ou em sub-pastas. Dentro do diretório curso devemos criar outros diretórios, seguindo a estrutura abaixo: O diretório WEB-INF vai conter os arquivos de configuração da sua aplicação e os arquivos de deploy. O diretório classes deve conter as classes do seu aplicativo. No diretório lib vão os jars (libs) da sua aplicação. As suas classes, ao invés de desagrupadas, poderiam estar empacotadas em um jar e ir neste diretório também. Os arquivos como imagens, HTML e outros devem ir no diretório raiz, curso. Tendo colocado o arquivo PrimeiroServlet.class, dentro de curso\classes\web\, agora devemos criar um arquivo de configuração para ele, o chamado deployment descriptor, ou apenas web.xml. O arquivo web.xml é um xml que descreve as configurações de cada aplicação web do Web Container, e contém informações dos Servlets da aplicação e outras configurações. Ele deve ser criado no diretório WEB-INF. O Arquivo web.xml • O arquivo web.xml serve como um descritor das funcionalidades e caracteristicas da sua aplicação. Ele é um arquivo XML descrevendo os Servlets, JSPs (que nada são alem de Servlets), EJBs e outros componentes que fazem parte da sua aplicação. Alem disso, fornece parametros de inicialização e controles de segurança para o container (os quais você deseja que o servidor reforce) e tambem para sua aplicação. Enfim, o web.xml é um documento que define tudo que o servidor precisa conhecer sobre sua aplicação. Exceto, claro, o caminho do contexto (context path) o qual é definido pelo adminstrador do sistema (no arquivo TOMCAT_HOME/conf/server.xml) quando a aplicação for divulgada. • Os arquivos XML também são marcados por tags. Essa tags podem ser definidas por você mesmo, e não apenas usarem tags prédefinidas, como no HTML. As tags definem a estruturação dos dados. O arquivo web.xml dever ser escrito usando as tags já definidas pela especificação dos Servlets da J2EE. • <?xml version="1.0" encoding="ISO-8859-1"?> • • • <!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> <description>Aplicação do Curso de Java</description> <display-name>Curso de Java</display-name> • • • • <servlet> <servlet-name>PrimeiroServlet</servlet-name> <servlet-class>web.PrimeiroServlet</servlet-class> </servlet> • • • • <servlet-mapping> <servlet-name>PrimeiroServlet</servlet-name> <url-pattern>/PrimeiroServlet</url-pattern> </servlet-mapping> • </web-app> Executando o SERVLET • Finalmente podemos executar o nosso Primeiro Servlet, que apenas vai gerar uma simples mensagem na tela do navegador. • Após termos configurado o web.xml e disponibilizado os arquivos corretamente, devemos reiniciar o Tomcat. • Agora, então, podemos chamar, ou solicitar, o nosso Primeiro Servlet. Para isso, abra um navegador e digite a seguinte URL: • http://localhost:8080/curso/PrimeiroServlet Tags de Diretivas • São utilizadas para enviar informações especiais sobre a página JSP quando esta for transformada em um servlet. São divididas em três tipos : • @include = utilizada para incorporar os códigos de um arquivo padrão (HTML,JSP,TXT) na página corrente; • @page = traz informações sobre a página JSP como tipo, as bibliotecas que serão importadas, a linguagem da página e etc.; • @taglib = serve para habilitar uma biblioteca de tags personalizadas. • Sintaxe : <%@ %> Elementos de Criação de Scripts • Tags de Declaração e Tags de Expressão = usadas para definir atributos ou métodos. São úteis quando testamos um código que futuramente se tornará um bean. É uma tag Java pura. • Sintaxe = <%! %> - para Tags Declaração • Sintaxe = <%= %> - para Tags de Expressão • Tags de Scriplets = utilizadas para escrever trechos de código Java dentro da página JSP. Serve para otimizar a linguagem HTML padrão, mesclando os dois ambientes. • Sintaxe = <% %> • Tags de Comentário = utilizadas pelo desenvolvedor para documentar determinados trechos de código, não serão enviadas para o arquivo final. • Sintaxe = <jsp: />