Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat
Servidor Tomcat Foi desenvolvido pela Fundação Apache, permite a execução de aplicações para web. O servidor Tomcat foi criado inicialmente como um subprojeto da Apache-Jakarta, no entanto, devido a sua alta popularidade, acabou sendo designado para um projeto separado da Apache, sendo assim mantido por um grupo de voluntários da comunidade de código aberto do Java. O servidor Apache Tomcat é um container* Web de código fonte aberto baseado em Java que foi criado para executar aplicações Web que utilizam tecnologias Servlets e JSPs (Java Server Pages).
Containers Dificilmente uma aplicação gráfica é composta por um único componente, mas sim por vários componentes inter-relacionados. Para este tipo de aplicação, um componente fundamental é a área onde os demais componentes da aplicação estarão dispostos. Um componente que pode conter outros componentes é denominado um container.
Em Java, a classe Container é a classe abstrata que define as funcionalidades básicas associadas a um container, tais como adicionar e remover componentes, o que é possível através dos métodos add() e remove(), respectivamente. É possível também estabelecer qual a estratégia de disposição de componentes no container, ou seja, qual o método de gerência de layout, através do método setlayout().
Window é uma classe derivada de Container cujos objetos estão associadas a janelas. Cada objeto Window é uma janela independente em uma aplicação, embora a essa janela não estejam associadas as funcionalidades usualmente oferecidas por gerenciadores de janela. Raramente um objeto desse é usado diretamente, mas objetos dessa classe são muito utilizados através de suas subclasses, tais como Frame.
Outra classe derivada de Container de extensa aplicação é Panel, que define uma área de composição de componentes contida em alguma janela. A classe Applet é uma extensão de Panel que permite criar applets. Embora a classe JComponent, raiz da hierarquia para todos os componentes do framework para interfaces gráficas de Java, seja derivada da classe Container, não se pode acrescentar diretamente um componente gráfico a qualquer componente Swing. Para as classes de Swing que correspondem a containers no sentido definido em AWT, ou seja, às quais podem ser acrescentados outros componentes, deve-se obter uma referência ao objeto Container através do método getcontentpane().
Resumo Container e Componentes Uma interface gráfica em Java é baseada em dois elementos: Containers: servem para agrupar e exibir outros componentes Componentes: botões, labels, scrollbars, etc. Dessa forma, todo programa que ofereça uma interface vai possuir pelo menos um container, que pode ser: JFrame: janela principal do programa JDialog: janela para diálogos JApplet: janela para Applets Para construirmos uma interface gráfica em JAVA adicionamos componentes (Botões, Menus, Textos, Tabelas,Listas, etc.) sobre a área da janela. Por essa razão a área da janela é um container, ou seja, um elemento capaz de armazenar uma lista de componentes.
A diferença básica entre um objeto JFrame e um objeto Window é que o JFrame representa a janela principal de uma aplicação. Desde que a classe Container é uma sub-classe da classe Component, todo objeto container é também um Componente. Antes de criar um objeto Window, é preciso criar um objeto JFrame. Como a classe JDialog deriva diretamente da classe Window, pode-se criar objetos JDialog somente no contexto de um objeto JFrame.
Container é uma classe abstrata: Ou seja, ele não pode ser instanciado, alguns de seus métodos devem ser implementados por subclasses. Containers são elementos que armazenam componentes gráficos.não é possível usar um componente sem que ele esteja dentro de um container. Containers podem, também, armazenar outros container.
Janelas
Uma janela em Java é representada por um objeto da classe Window JComponent (componentes Swing) Define um componente (botão, scrollbar, etc). Java.awt Define um componente que pode conter outros componentes Define uma janela básica sem barra de título ou borda. Define uma janela com barra de título e borda Java. swing Extende potencialidades do Frame.
Lembram??? JFrame: Um objeto desta classe possui uma barra de título e características para receber menus e outros componentes. JDialog: Usada para definir janelas de diálogo para entrada de dados. Normalmente usada em resposta a uma opção de menu selecionada. Definida em função de um objeto JFrame. JApplet: Classe base para applets Java. É possível desenhar e adicionar menus e outros componentes em um JApplet. JComponent: As subclasses de JComponent definem um conjunto de componentes standard (menus, botões,checkboxes, etc.)
Exemplo
Testar import javax.swing.*; import java.awt.*; public class TestaContainer { public static void main (String args[ ]) { int i; JFrame janela = new JFrame("Título da janela"); janela.setbounds(50, 100, 400, 150); // Seta posição e tamanho janela.setdefaultcloseoperation(windowconstants.dispose_on_close); FlowLayout flow = new FlowLayout(); // Define o layout do container Container caixa = janela.getcontentpane(); // Define o tamanho caixa.setlayout(flow); // Seta layout do container for (i=1; i<=6; i++) caixa.add(new JButton("Aperte " + i)); // Adiciona um botão janela.setvisible(true); // Exibe a janela } }
Atividade 1. Redimensione interativamente a janela da aplicação e observe o comportamento dos botões da interface. 2. Troque o argumento de FlowLayout(), para FlowLayout (FlowLayout.LEFT) e observe. 3. Adicione no programa acima, os seguintes componentes: JLabel label = new JLabel("Exemplo de texto:"); caixa.add(label); JTextField campo = new JTextField(15); caixa.add(campo); janela.pack(); // Redimensiona a janela
Continuação do Slide 3 Apache Tomcat é um servidor bastante estável com todas as características que um container comercial de aplicações web possui. 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 servidor Tomcat tem a habilidade de converter automaticamente qualquer página JSP em um servlet equivalente. Em outras palavras, o Tomcat é capaz de criar código fonte Java a partir de um documento HTML. O servidor inclui ferramentas para configuração e gerenciamento, o que também pode ser feito editando-se manualmente arquivos de configuração formatados em XML.
Do ponto de vista técnico, Tomcat é a implementação referência das especificações das tecnologias de servlets e JSP criadas pela Sun. A versão 4.0.x do Tomcat implementa as especificações Servlet 2.3 e JSP 1.2 (que são as mais recentes). Várias empresas, como Borland, IBM, BEA, etc., também oferecem suas implementações das duas especificações da Sun. Atualmente as versões que ainda recebem suporte são 5.5x, 6.0x e 7.0x. Versões anteriores a 5.5 ainda encontram-se disponíveis para download no site da Apache, porém estão arquivadas e não possuem mais suporte. Por isso, recomenda-se que os usuários adquiram as últimas versões disponíveis.
Em termos práticos, o Tomcat pode ser usado isoladamente, assumindo o papel de um servidor web, ou em conjunto com outro servidor (como o Apache). Neste caso, o Apache atende a requisições de páginas estáticas enquanto que o Tomcat atende a requisições de páginas dinâmicas.
Exercício!!