Este documento apresenta um plano de ensino sobre JSP e Servlets. O documento discute o que são JSP e Servlets, apresenta o objetivo, público-alvo e pré-requisitos do curso, além de detalhar o cronograma e programa do curso. O documento também fornece instruções sobre instalação e configuração do ambiente de desenvolvimento, e aborda conceitos importantes como orientação a objetos, tags JSP, JSTL, ciclo de vida de servlets e tratamento de erros.
O documento apresenta informações sobre um curso introdutório sobre Java Applet, incluindo seu objetivo, público-alvo, pré-requisitos, programa, avaliação e bibliografia. Também discute conceitos básicos sobre applets e fornece um exemplo inicial de applet.
O documento discute o Java Database Connectivity (JDBC), incluindo sua instalação e conceitos básicos e avançados. Ele fornece detalhes sobre como conectar e interagir com bancos de dados relacionais usando JDBC, incluindo a criação e manipulação de tabelas, inserção, atualização e recuperação de dados, e o uso de transações.
Este documento fornece informações sobre um curso de Java Swing. Ele descreve o objetivo, público-alvo, pré-requisitos, metodologia, cronograma e avaliação do curso. Além disso, apresenta os tópicos a serem ensinados, incluindo uma visão geral do Java Swing, containers, componentes e gerenciadores de layout.
Esta apostila sobre Java básico discute: 1) Uma introdução sobre o que é Java, sua história e aplicações; 2) Informações gerais sobre como instalar o Java Development Kit e configurar o ambiente de desenvolvimento; 3) Uma licença que permite a redistribuição e modificação da documentação.
Este documento presenta una introducción a J2ME, incluyendo una sección sobre información básica y la licencia GNU. Luego, explica que J2ME es una plataforma para desarrollar aplicaciones móviles para teléfonos celulares y otros dispositivos pequeños, y proporciona un plan de estudios para aprender sobre J2ME.
Este documento fornece informações sobre Java AWT, incluindo o que é Java AWT, sua hierarquia de classes e como criar containers e componentes. Também discute como criar um primeiro frame Java e manipular eventos.
O documento apresenta uma introdução sobre a apostila "De Java para Python", discutindo sua licença, autores e garantias. Também fornece informações sobre o CDTC, como seu objetivo de promover o software livre, e orientações para alunos sobre participação em fóruns e wikis.
O documento discute o protocolo XDMCP (X Display Manager Control Protocol), incluindo sua história, instalação e configuração. Fornece detalhes sobre como usar o XDMCP via GDM para gerenciar displays remotos.
O documento apresenta informações sobre um curso introdutório sobre Java Applet, incluindo seu objetivo, público-alvo, pré-requisitos, programa, avaliação e bibliografia. Também discute conceitos básicos sobre applets e fornece um exemplo inicial de applet.
O documento discute o Java Database Connectivity (JDBC), incluindo sua instalação e conceitos básicos e avançados. Ele fornece detalhes sobre como conectar e interagir com bancos de dados relacionais usando JDBC, incluindo a criação e manipulação de tabelas, inserção, atualização e recuperação de dados, e o uso de transações.
Este documento fornece informações sobre um curso de Java Swing. Ele descreve o objetivo, público-alvo, pré-requisitos, metodologia, cronograma e avaliação do curso. Além disso, apresenta os tópicos a serem ensinados, incluindo uma visão geral do Java Swing, containers, componentes e gerenciadores de layout.
Esta apostila sobre Java básico discute: 1) Uma introdução sobre o que é Java, sua história e aplicações; 2) Informações gerais sobre como instalar o Java Development Kit e configurar o ambiente de desenvolvimento; 3) Uma licença que permite a redistribuição e modificação da documentação.
Este documento presenta una introducción a J2ME, incluyendo una sección sobre información básica y la licencia GNU. Luego, explica que J2ME es una plataforma para desarrollar aplicaciones móviles para teléfonos celulares y otros dispositivos pequeños, y proporciona un plan de estudios para aprender sobre J2ME.
Este documento fornece informações sobre Java AWT, incluindo o que é Java AWT, sua hierarquia de classes e como criar containers e componentes. Também discute como criar um primeiro frame Java e manipular eventos.
O documento apresenta uma introdução sobre a apostila "De Java para Python", discutindo sua licença, autores e garantias. Também fornece informações sobre o CDTC, como seu objetivo de promover o software livre, e orientações para alunos sobre participação em fóruns e wikis.
O documento discute o protocolo XDMCP (X Display Manager Control Protocol), incluindo sua história, instalação e configuração. Fornece detalhes sobre como usar o XDMCP via GDM para gerenciar displays remotos.
Este documento fornece uma introdução ao SELinux, discutindo seu objetivo, plano de ensino e módulos introdutórios. Inclui informações sobre pré-requisitos, instalação e configuração do SELinux, além de abordar contas de usuários e regras de segurança.
O documento descreve um plano de ensino para Tcl/Tk, incluindo objetivo, público-alvo, pré-requisitos, cronograma e avaliação. Também fornece instruções básicas sobre a instalação e uso de Tcl/Tk.
O documento descreve um plano de ensino para um curso sobre servidores de email seguros. O plano inclui objetivos, público-alvo, pré-requisitos, cronograma e avaliação do curso. Além disso, aborda tópicos como instalação, configuração e integração de ferramentas de email seguro como AMaViSd-new, ClamAV e SpamAssassin.
Este documento apresenta um plano de ensino para um curso sobre o programa Screen. Inclui informações sobre objetivos, público-alvo, pré-requisitos, cronograma e avaliação. Também contém instruções sobre instalação, configuração e uso do Screen, incluindo acesso a múltiplas sessões e aplicações em segundo plano.
Este documento apresenta um plano de ensino sobre o SAMBA. Ele contém nove lições que cobrem tópicos como introdução ao SAMBA, instalação, configuração, compartilhamentos, uso do SAMBA como servidor PDC e ferramentas de administração. O documento fornece instruções passo-a-passo para configurar e administrar um servidor SAMBA.
Este documento fornece informações sobre o curso XDialog, incluindo seu objetivo, público-alvo, pré-requisitos, programa e avaliação. Além disso, discute detalhes sobre a instalação e uso do XDialog, um programa para criação de diálogos gráficos no Linux.
Este documento fornece informações sobre tunelamento, incluindo um plano de ensino, ferramentas de tunelamento como Netcat e OpenSSH, e exemplos práticos de como configurar túneis usando essas ferramentas. O documento também discute como tunelamento pode ser usado para contornar firewalls e criptografar conexões.
Este documento fornece informações sobre o wxPython, um framework para desenvolvimento de interfaces gráficas para usuários em Python. Ele discute o objetivo, público-alvo e metodologia de um curso sobre wxPython, além de introduzir os principais conceitos como janelas, menus e layouts.
Este documento fornece uma introdução ao Zope, um framework web open source escrito em Python. Ele discute o que é Zope, seu objetivo de ensinar os principais conceitos e funcionalidades, incluindo como ele é um sistema de gerenciamento de conteúdo que permite a publicação e gerenciamento de sites dinâmicos.
Este documento fornece uma introdução à linguagem SQL, incluindo seu objetivo de ensinar os principais conceitos da linguagem, como seleção, inserção, atualização e exclusão de dados em bancos de dados relacionais.
Este documento fornece informações sobre o SquidGuard, um programa de filtragem de conteúdo para o proxy Squid. Ele discute o que é o SquidGuard, como instalá-lo e configurá-lo, e explica como ele funciona junto com o Squid para fornecer controle de acesso à Internet baseado em lista negra/branca.
Este documento fornece uma introdução ao Unified Modeling Language (UML) e inclui informações sobre o plano de ensino, conceitos iniciais, diagramas estruturais e comportamentais de UML.
Este documento fornece informações sobre o Qemu, um software livre que permite a emulação de hardware. Ele discute o que é o Qemu, como instalá-lo e usá-lo para rodar sistemas operacionais em ambientes virtuais. Além disso, fornece detalhes sobre o Qemu-Launcher, uma interface gráfica para facilitar o uso do Qemu.
Este documento fornece uma introdução ao programa de computação Pascal, incluindo seu objetivo, público-alvo, pré-requisitos, descrição do curso, metodologia e avaliação. Também contém informações sobre licenças de uso e atribuição de autoria.
O documento discute o DotProject, um software de gerenciamento de projetos livre e de código aberto. Ele fornece detalhes sobre a instalação e uso básico do DotProject, incluindo a criação de empresas, projetos, tarefas e outros itens.
Este documento fornece uma introdução ao editor de texto Vim, descrevendo seu objetivo educacional, público-alvo, pré-requisitos, metodologia e cronograma do curso. Ele também inclui guias introdutórios sobre comandos do Vim e lições sobre interagindo com o editor, movendo texto e cursor, buscando texto e editando arquivos.
Inkscape é um software livre de desenho vetorial. Esta apostila fornece uma introdução básica ao Inkscape, incluindo o que é, seu plano de ensino e informações sobre a licença GNU Free Documentation.
O documento apresenta um plano de ensino para um curso sobre Ruby on Rails. Apresenta tópicos como objetivo, público-alvo, pré-requisitos, cronograma e programação do curso. Também inclui informações sobre licença do conteúdo e instalação do framework Ruby on Rails.
A apostila introduz a linguagem Ruby, incluindo o que é Ruby, seu plano de ensino e detalhes sobre a licença GNU Free Documentation. Ela fornece informações básicas sobre a linguagem e como aprender Ruby.
Este documento fornece informações sobre o Drupal, um sistema de gerenciamento de conteúdo open source. Ele discute o que é Drupal, requisitos e instalação, configurações, conceitos básicos e como começar a administrar um site com Drupal. O documento também inclui uma seção sobre gerenciamento de usuários e conteúdo.
Este documento fornece uma introdução ao Javascript, incluindo seu objetivo, público-alvo, pré-requisitos, descrição, metodologia e cronograma de ensino. Ele também discute tópicos-chave como sintaxe, variáveis, strings, objetos, arrays, operadores, funções e classes.
Este documento fornece informações sobre o Zope, incluindo o que é Zope, como instalá-lo e usar sua interface de gerenciamento, trabalhar com objetos, DTML, modelos de páginas, aplicações básicas, segurança de usuários, catálogos de pesquisa e bancos de dados, e extensões do Zope.
Este documento fornece uma introdução ao SELinux, discutindo seu objetivo, plano de ensino e módulos introdutórios. Inclui informações sobre pré-requisitos, instalação e configuração do SELinux, além de abordar contas de usuários e regras de segurança.
O documento descreve um plano de ensino para Tcl/Tk, incluindo objetivo, público-alvo, pré-requisitos, cronograma e avaliação. Também fornece instruções básicas sobre a instalação e uso de Tcl/Tk.
O documento descreve um plano de ensino para um curso sobre servidores de email seguros. O plano inclui objetivos, público-alvo, pré-requisitos, cronograma e avaliação do curso. Além disso, aborda tópicos como instalação, configuração e integração de ferramentas de email seguro como AMaViSd-new, ClamAV e SpamAssassin.
Este documento apresenta um plano de ensino para um curso sobre o programa Screen. Inclui informações sobre objetivos, público-alvo, pré-requisitos, cronograma e avaliação. Também contém instruções sobre instalação, configuração e uso do Screen, incluindo acesso a múltiplas sessões e aplicações em segundo plano.
Este documento apresenta um plano de ensino sobre o SAMBA. Ele contém nove lições que cobrem tópicos como introdução ao SAMBA, instalação, configuração, compartilhamentos, uso do SAMBA como servidor PDC e ferramentas de administração. O documento fornece instruções passo-a-passo para configurar e administrar um servidor SAMBA.
Este documento fornece informações sobre o curso XDialog, incluindo seu objetivo, público-alvo, pré-requisitos, programa e avaliação. Além disso, discute detalhes sobre a instalação e uso do XDialog, um programa para criação de diálogos gráficos no Linux.
Este documento fornece informações sobre tunelamento, incluindo um plano de ensino, ferramentas de tunelamento como Netcat e OpenSSH, e exemplos práticos de como configurar túneis usando essas ferramentas. O documento também discute como tunelamento pode ser usado para contornar firewalls e criptografar conexões.
Este documento fornece informações sobre o wxPython, um framework para desenvolvimento de interfaces gráficas para usuários em Python. Ele discute o objetivo, público-alvo e metodologia de um curso sobre wxPython, além de introduzir os principais conceitos como janelas, menus e layouts.
Este documento fornece uma introdução ao Zope, um framework web open source escrito em Python. Ele discute o que é Zope, seu objetivo de ensinar os principais conceitos e funcionalidades, incluindo como ele é um sistema de gerenciamento de conteúdo que permite a publicação e gerenciamento de sites dinâmicos.
Este documento fornece uma introdução à linguagem SQL, incluindo seu objetivo de ensinar os principais conceitos da linguagem, como seleção, inserção, atualização e exclusão de dados em bancos de dados relacionais.
Este documento fornece informações sobre o SquidGuard, um programa de filtragem de conteúdo para o proxy Squid. Ele discute o que é o SquidGuard, como instalá-lo e configurá-lo, e explica como ele funciona junto com o Squid para fornecer controle de acesso à Internet baseado em lista negra/branca.
Este documento fornece uma introdução ao Unified Modeling Language (UML) e inclui informações sobre o plano de ensino, conceitos iniciais, diagramas estruturais e comportamentais de UML.
Este documento fornece informações sobre o Qemu, um software livre que permite a emulação de hardware. Ele discute o que é o Qemu, como instalá-lo e usá-lo para rodar sistemas operacionais em ambientes virtuais. Além disso, fornece detalhes sobre o Qemu-Launcher, uma interface gráfica para facilitar o uso do Qemu.
Este documento fornece uma introdução ao programa de computação Pascal, incluindo seu objetivo, público-alvo, pré-requisitos, descrição do curso, metodologia e avaliação. Também contém informações sobre licenças de uso e atribuição de autoria.
O documento discute o DotProject, um software de gerenciamento de projetos livre e de código aberto. Ele fornece detalhes sobre a instalação e uso básico do DotProject, incluindo a criação de empresas, projetos, tarefas e outros itens.
Este documento fornece uma introdução ao editor de texto Vim, descrevendo seu objetivo educacional, público-alvo, pré-requisitos, metodologia e cronograma do curso. Ele também inclui guias introdutórios sobre comandos do Vim e lições sobre interagindo com o editor, movendo texto e cursor, buscando texto e editando arquivos.
Inkscape é um software livre de desenho vetorial. Esta apostila fornece uma introdução básica ao Inkscape, incluindo o que é, seu plano de ensino e informações sobre a licença GNU Free Documentation.
O documento apresenta um plano de ensino para um curso sobre Ruby on Rails. Apresenta tópicos como objetivo, público-alvo, pré-requisitos, cronograma e programação do curso. Também inclui informações sobre licença do conteúdo e instalação do framework Ruby on Rails.
A apostila introduz a linguagem Ruby, incluindo o que é Ruby, seu plano de ensino e detalhes sobre a licença GNU Free Documentation. Ela fornece informações básicas sobre a linguagem e como aprender Ruby.
Este documento fornece informações sobre o Drupal, um sistema de gerenciamento de conteúdo open source. Ele discute o que é Drupal, requisitos e instalação, configurações, conceitos básicos e como começar a administrar um site com Drupal. O documento também inclui uma seção sobre gerenciamento de usuários e conteúdo.
Este documento fornece uma introdução ao Javascript, incluindo seu objetivo, público-alvo, pré-requisitos, descrição, metodologia e cronograma de ensino. Ele também discute tópicos-chave como sintaxe, variáveis, strings, objetos, arrays, operadores, funções e classes.
Este documento fornece informações sobre o Zope, incluindo o que é Zope, como instalá-lo e usar sua interface de gerenciamento, trabalhar com objetos, DTML, modelos de páginas, aplicações básicas, segurança de usuários, catálogos de pesquisa e bancos de dados, e extensões do Zope.
O documento discute o programa Squid, um proxy cache para a Internet. Ele descreve o que é o Squid, seu plano de ensino, instalação, configuração básica e avançada, incluindo autenticação de usuários e limitação de banda. O documento fornece instruções detalhadas para configurar e usar o Squid em redes.
Este documento fornece informações sobre o iptables, incluindo seu objetivo, público-alvo, pré-requisitos e programa. Ele explica o que é o iptables e sua função como firewall no Linux, além de descrever suas tabelas principais e sintaxe de uso.
Este documento apresenta um curso sobre Python-GTK. Ele descreve o objetivo, público-alvo, pré-requisitos, programação, avaliação e bibliografia do curso. Além disso, apresenta o conteúdo de 8 lições sobre desenvolvimento de interfaces gráficas com Python e GTK.
Este documento fornece instruções sobre como instalar e configurar o sistema de gerenciamento de conteúdo Horde no Linux. Ele discute os pré-requisitos do sistema, como Apache, MySQL e PHP, e orienta o leitor passo a passo pelo processo de instalação e configuração do Horde e de seus aplicativos.
Este documento fornece informações sobre o LTSP (Linux Terminal Server Project), incluindo como instalar e configurar um servidor e estações de trabalho LTSP. Ele explica o que é o LTSP, como funciona, e como resolver problemas comuns.
O documento discute vários métodos e ferramentas para monitoramento de sistemas, incluindo TCPDUMP para captura de pacotes de rede, Nagios para monitoramento ativo de serviços, e MRTG e Cacti para monitoramento gráfico de tráfego de rede. Ele também aborda logs de sistema e arquivos para rastreamento de eventos.
Este documento fornece instruções sobre a instalação e configuração do servidor de email Postfix, incluindo informações sobre o que é o Postfix, como instalá-lo e configurá-lo, e como configurar domínios virtuais e serviços POP3/IMAP.
Este documento fornece informações sobre o programa Quanta Plus, incluindo como instalá-lo e usá-lo. Também discute configurações, menus, trabalhos com projetos e criação de modelos.
Este documento apresenta um plano de ensino sobre drivers de dispositivos no Linux, abordando tópicos como introdução a drivers, estruturas de dados, desenvolvimento de um driver simples e interface com o sistema operacional.
Este documento apresenta um curso básico sobre Java. Ele inclui seções sobre o que é Java, conceitos básicos como classes, objetos e métodos, estruturas de controle e entrada/saída, e conceitos avançados como herança e polimorfismo. O documento também fornece informações sobre licenças e créditos.
Este documento apresenta um plano de ensino para programação GTK+ com as seguintes seções: introdução à GTK+, pré-requisitos, lições iniciais sobre janelas e botões, empacotamento de widgets, hierarquia de classes de widgets e exemplos de botões e outros widgets como rótulos e caixas de diálogo.
Este documento fornece informações sobre gerenciadores de boot (carregadores de inicialização) como LILO e GRUB. Ele discute o que são gerenciadores de boot, como instalá-los e configurá-los, e como lidar com mensagens de erro. O documento também aborda personalização de boot loaders.
O documento discute planejamento em desenvolvimento de sistemas, incluindo planejamento de software, modelos de processo, ciclos de vida e disciplinas de projeto. Ele fornece uma visão geral de práticas recomendadas de planejamento e aborda tópicos como arquitetura, coleta e análise de requisitos, projeto, implementação e testes.
Este documento apresenta um plano de ensino para programação C++, cobrindo tópicos como introdução à linguagem, tipos de dados, operadores, estruturas de controle, vetores, ponteiros, programação orientada a objetos, templates e namespaces.
Este documento apresenta uma apostila sobre a linguagem de programação Ruby. Ele inclui informações sobre o objetivo, público-alvo, pré-requisitos, cronograma e avaliação do curso. Também contém detalhes sobre a instalação da linguagem, variáveis, tipos de dados, estruturas de controle e classes.
Este documento fornece instruções sobre como instalar o software livre Xoops, um sistema de gerenciamento de conteúdo. Ele discute os pré-requisitos, download, instalação do Xoops e de temas e módulos adicionais. Inclui informações sobre configuração de módulos como xcgallery e xtconteudo.
Este documento apresenta um plano de ensino para um curso sobre o scanner de vulnerabilidades Nessus. Ele discute a introdução ao Nessus, seu funcionamento, instalação e configuração, uso do cliente Nessus e realização de testes.
Este documento fornece instruções sobre como instalar e configurar o sistema operacional OpenSolaris, incluindo baixar e usar uma máquina virtual, instalação no computador, configuração de rede, idioma e instalação de programas adicionais. Ele também explica como usar a interface gráfica GNOME e realizar operações no modo de texto, além de instalar o pacote de escritório OpenOffice.
Este documento fornece informações sobre um curso de programação PHP para Moodle, incluindo seu objetivo, público-alvo, pré-requisitos, descrição, metodologia, cronograma, programa, avaliação e bibliografia. Ele também discute os principais arquivos e funções do Moodle, como config.php, version.php, file.php e index.php, além de módulos, permissões de usuário, sistema de seleção de idioma e criação de novos módulos.
1. O documento é uma apostila sobre a linguagem de programação Turbo Pascal. Ele apresenta os principais conceitos da linguagem como tipos de dados, variáveis, estruturas de decisão e repetição.
2. O documento está organizado em 17 capítulos que cobrem tópicos como unidades pré-definidas, arrays unidimensionais e multidimensionais, registros e tipos definidos pelo usuário.
3. Cada capítulo apresenta exemplos de código Pascal para ilustrar um conceito específico da linguagem como a estrutura IF/ELSE,
O documento fornece um guia rápido da linguagem de programação Pascal, descrevendo sua estrutura básica, comentários, declaração de variáveis e constantes, tipos de dados, operadores, estruturas de controle e outros elementos importantes da linguagem.
[1] O documento discute a criação de jogos com o Blender Game Engine (BGE), enfatizando a importância do planejamento prévio através da definição de objetivos claros e da lógica de programação. [2] É apresentada a noção de fluxogramas e algoritmos para representar processos lógicos de forma visual e textual, respectivamente. [3] São introduzidos conceitos básicos como variáveis, tipos de dados, estruturas condicionais e funções para manipulação de dados.
Este documento apresenta uma introdução à linguagem de programação Python, incluindo tópicos como instalação, ambientes de desenvolvimento, modo interativo, tipos de dados, instruções de controle de fluxo, estruturação de código, entrada/saída, biblioteca padrão e aplicações ao cálculo numérico.
Este documento apresenta um curso sobre a linguagem de programação Python. Ele inclui seções sobre conceitos básicos da linguagem, como tipagem forte e orientação a objetos, além de explicar como usar o interpretador Python, módulos, funções built-in como help() e dir(), e tipos de dados como strings e listas.
1. O documento apresenta uma aula introdutória sobre programação em Python.
2. A aula inclui tópicos como "Hello World", variáveis, condicionais, laços, funções, classes e módulos.
3. O documento serve como um manual de referência rápida sobre os principais conceitos e recursos da linguagem Python.
This document provides an overview and introduction to threading in C#. It discusses key threading concepts such as threads versus processes, when to use threads, creating and starting threads, passing data to threads, naming threads, foreground and background threads, thread priority, exception handling, blocking, sleeping and spinning, joining threads, locking for thread safety, wait handles, synchronization contexts, and more advanced topics such as non-blocking synchronization, wait and pulse, suspend and resume, aborting threads, and ending application domains and processes. The document is presented as a multi-part guide to threading in C#, with examples provided throughout to illustrate the concepts.
A função remove acentos de um texto em C# iterando sobre cada caractere, substituindo caracteres acentuados por suas versões sem acento e adicionando os demais caracteres inalterados à string resultante.
O documento descreve como remover caracteres especiais de um TextBox em C# ao clicar em um botão. Ele fornece um método que remove caracteres como vírgula, ponto e vírgula, sinal de adição definidos em uma variável "trim" do texto no TextBox. O método procura esses caracteres e remove um de cada vez até nenhum ser encontrado mais.
Uma função em C# para obter o IP externo fazendo uma requisição para o site MeuIP e retornando a string com o IP encontrada na resposta. A função faz uma requisição HTTP, lê a resposta, procura pelo texto "IP" e extrai a string com o endereço IP.
O documento explica as diferenças entre usar try/finally e using para liberar recursos em C#. Embora ambos liberam recursos, o using faz isso automaticamente, enquanto try/finally requer que o desenvolvedor libere recursos manualmente no bloco finally. O documento fornece um exemplo mostrando como usar try/finally versus using para liberar um objeto TextWriter.
O documento discute sobre:
- Estruturas de controle de fluxo no C# como if/else, for, while e blocos;
- Sintaxe básica para cada estrutura de controle de fluxo;
- Exemplos simples de uso de if/else, for e while.
Este documento discute vários controles de interface do usuário em C# para aplicativos Windows, incluindo:
1) Propriedades como Dock e Anchor para posicionar controles em formulários;
2) Diálogos como OpenFileDialog e SaveFileDialog;
3) Toolbars com imagens;
4) Status bars para mostrar informações de estado.
1) O documento discute sistemas de arquivos e classes utilizadas para manipulação de arquivos em .NET, incluindo FileStream, BinaryReader, StreamReader e StreamWriter.
2) É explicado como ler e escrever arquivos de texto usando StreamReader e StreamWriter, respectivamente.
3) Métodos úteis como Create, Open, Copy e Delete são discutidos para manipulação de arquivos e pastas.
1. O documento introduz os principais conceitos e noções de utilização de um sistema Linux típico, com foco no uso da linha de comandos.
2. O sistema operacional Linux é baseado no kernel Linux e compartilha dos conceitos dos sistemas Unix originais, sendo multitarefa, multiusuário e representando todos os dispositivos como arquivos dentro de uma estrutura de diretórios hierárquica.
3. A linha de comando e os utilitários de sistema permitem executar aplicativos, manipular arquivos e diretórios
O documento apresenta uma introdução sobre shells e shell scripts, abordando: 1) O que são shells e shell scripts; 2) As variáveis de ambiente usadas nos shells; 3) O formato dos arquivos de shell scripts.
Este documento explica como controlar dispositivos externos através da porta paralela do PC usando C#. Ele descreve os modos de operação e endereços da porta paralela, apresenta a biblioteca Inpout32.dll para acessar a porta paralela em sistemas Windows e fornece um exemplo de código C# para enviar dados para LEDs conectados à porta paralela.
O documento discute classes em C#, incluindo: (1) classes são importantes para programação orientada a objetos; (2) namespaces organizam classes em aplicações; (3) modificadores de acesso controlam visibilidade de membros de classe.
This document provides an introduction and overview of a book about learning C#. It discusses the authors and their backgrounds, provides an introduction to C# and .NET, and previews the book's structure and content. The first chapter begins by showing the reader how to set up their environment and write a basic "Hello World" C# program to get started learning the language. It introduces the concept of classes and methods in C# and demonstrates compiling and running a simple program that outputs text.
O Que é Um Ménage à Trois?
A sociedade contemporânea está passando por grandes mudanças comportamentais no âmbito da sexualidade humana, tendo inversão de valores indescritíveis, que assusta as famílias tradicionais instituídas na Palavra de Deus.
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Betel, Ordenança para exercer a fé, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...Eró Cunha
XIV Concurso de Desenhos Afro/24
TEMA: Racismo Ambiental e Direitos Humanos
PARTICIPANTES/PÚBLICO: Estudantes regularmente matriculados em escolas públicas estaduais, municipais, IEMA e IFMA (Ensino Fundamental, Médio e EJA).
CATEGORIAS: O Concurso de Desenhos Afro acontecerá em 4 categorias:
- CATEGORIA I: Ensino Fundamental I (4º e 5º ano)
- CATEGORIA II: Ensino Fundamental II (do 6º ao 9º ano)
- CATEGORIA III: Ensino Médio (1º, 2º e 3º séries)
- CATEGORIA IV: Estudantes com Deficiência (do Ensino Fundamental e Médio)
Realização: Unidade Regional de Educação de Imperatriz/MA (UREI), através da Coordenação da Educação da Igualdade Racial de Imperatriz (CEIRI) e parceiros
OBJETIVO:
- Realizar a 14ª edição do Concurso e Exposição de Desenhos Afro/24, produzidos por estudantes de escolas públicas de Imperatriz e região tocantina. Os trabalhos deverão ser produzidos a partir de estudo, pesquisas e produção, sob orientação da equipe docente das escolas. As obras devem retratar de forma crítica, criativa e positivada a população negra e os povos originários.
- Intensificar o trabalho com as Leis 10.639/2003 e 11.645/2008, buscando, através das artes visuais, a concretização das práticas pedagógicas antirracistas.
- Instigar o reconhecimento da história, ciência, tecnologia, personalidades e cultura, ressaltando a presença e contribuição da população negra e indígena na reafirmação dos Direitos Humanos, conservação e preservação do Meio Ambiente.
Imperatriz/MA, 15 de fevereiro de 2024.
Produtora Executiva e Coordenadora Geral: Eronilde dos Santos Cunha (Eró Cunha)
8. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".
Os 10 mandamentos do aluno de educação online
• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é
pré-requisito para a participação nos cursos a distância;
• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-
tica é necessário para poder executar as tarefas;
• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-
cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores;
• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus
colegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos;
• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais;
• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real;
• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre;
• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens
e descobertas;
• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é
ponto - chave na comunicação pela Internet;
• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.
Como participar dos fóruns e Wikipédia
Você tem um problema e precisa de ajuda?
Podemos te ajudar de 2 formas:
A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:
. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a
7
9. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Fórum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.
. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.
A segunda forma se dá pelas Wikis:
. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:
• Página principal da Wiki - http://pt.wikipedia.org/wiki/
Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!
Primeiros Passos
Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:
• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;
• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;
• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;
• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.
Perfil do Tutor
Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.
O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos
valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
8
10. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:
• fornece explicações claras acerca do que ele espera e do estilo de classificação que irá
utilizar;
• gosta que lhe façam perguntas adicionais;
• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;
• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervossismo’)
• dá uma ajuda complementar para encorajar um estudante em dificuldade;
• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;
• ajuda o estudante a alcançar os seus objetivos;
• é flexível quando necessário;
• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,
talvez numa fase menos interessante para o tutor);
• escreve todas as correções de forma legível e com um nível de pormenorização adequado;
• acima de tudo, devolve os trabalhos rapidamente;
9
12. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
(Traduzido pelo João S. O. Bueno através do CIPSGA em 2001)
Esta é uma tradução não oficial da Licença de Documentação Livre GNU em Português Brasi-
leiro. Ela não é publicada pela Free Software Foundation, e não se aplica legalmente a distribuição
de textos que usem a GFDL - apenas o texto original em Inglês da GNU FDL faz isso. Entretanto,
nós esperamos que esta tradução ajude falantes de português a entenderem melhor a GFDL.
This is an unofficial translation of the GNU General Documentation License into Brazilian Por-
tuguese. It was not published by the Free Software Foundation, and does not legally state the
distribution terms for software that uses the GFDL–only the original English text of the GFDL does
that. However, we hope that this translation will help Portuguese speakers understand the GFDL
better.
Licença de Documentação Livre GNU Versão 1.1, Março de 2000
Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
É permitido a qualquer um copiar e distribuir cópias exatas deste documento de licença, mas
não é permitido alterá-lo.
INTRODUÇÃO
O propósito desta Licença é deixar um manual, livro-texto ou outro documento escrito "livre"no
sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copiá-lo ou redistribui-lo,
com ou sem modificações, comercialmente ou não. Secundariamente, esta Licença mantém
para o autor e editor uma forma de ter crédito por seu trabalho, sem ser considerado responsável
pelas modificações feitas por terceiros.
Esta Licença é um tipo de "copyleft"("direitos revertidos"), o que significa que derivações do
documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licença Pública Ge-
ral (GNU GPL), que é um copyleft para software livre.
Nós fizemos esta Licença para que seja usada em manuais de software livre, por que software
livre precisa de documentação livre: um programa livre deve ser acompanhado de manuais que
provenham as mesmas liberdades que o software possui. Mas esta Licença não está restrita a
manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente
do assunto ou se ele é publicado como um livro impresso. Nós recomendamos esta Licença prin-
cipalmente para trabalhos cujo propósito seja de introdução ou referência.
APLICABILIDADE E DEFINIÇÕES
Esta Licença se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo
detentor dos direitos autorais dizendo que ele pode ser distribuído sob os termos desta Licença.
O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do público é um
11
13. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
licenciado e é referida como "você".
Uma "Versão Modificada"do Documento se refere a qualquer trabalho contendo o documento
ou uma parte dele, quer copiada exatamente, quer com modificações e/ou traduzida em outra
língua.
Uma "Seção Secundária"é um apêndice ou uma seção inicial do Documento que trata ex-
clusivamente da relação dos editores ou dos autores do Documento com o assunto geral do
Documento (ou assuntos relacionados) e não contém nada que poderia ser incluído diretamente
nesse assunto geral (Por exemplo, se o Documento é em parte um livro texto de matemática, a
Seção Secundária pode não explicar nada de matemática).
Essa relação poderia ser uma questão de ligação histórica com o assunto, ou matérias relaci-
onadas, ou de posições legais, comerciais, filosóficas, éticas ou políticas relacionadas ao mesmo.
As "Seções Invariantes"são certas Seções Secundárias cujos títulos são designados, como
sendo de Seções Invariantes, na nota que diz que o Documento é publicado sob esta Licença.
Os "Textos de Capa"são certos trechos curtos de texto que são listados, como Textos de Capa
Frontal ou Textos da Quarta Capa, na nota que diz que o texto é publicado sob esta Licença.
Uma cópia "Transparente"do Documento significa uma cópia que pode ser lida automatica-
mente, representada num formato cuja especificação esteja disponível ao público geral, cujos
conteúdos possam ser vistos e editados diretamente e sem mecanismos especiais com editores
de texto genéricos ou (para imagens compostas de pixels) programas de pintura genéricos ou
(para desenhos) por algum editor de desenhos grandemente difundido, e que seja passível de
servir como entrada a formatadores de texto ou para tradução automática para uma variedade
de formatos que sirvam de entrada para formatadores de texto. Uma cópia feita em um formato
de arquivo outrossim Transparente cuja constituição tenha sido projetada para atrapalhar ou de-
sencorajar modificações subsequentes pelos leitores não é Transparente. Uma cópia que não é
"Transparente"é chamada de "Opaca".
Exemplos de formatos que podem ser usados para cópias Transparentes incluem ASCII sim-
ples sem marcações, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML
usando uma DTD disponibilizada publicamente, e HTML simples, compatível com os padrões, e
projetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatos
proprietários que podem ser lidos e editados apenas com processadores de texto proprietários,
SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edição não estejam
disponíveis para o público, e HTML gerado automaticamente por alguns editores de texto com
finalidade apenas de saída.
A "Página do Título"significa, para um livro impresso, a página do título propriamente dita,
mais quaisquer páginas subsequentes quantas forem necessárias para conter, de forma legível,
o material que esta Licença requer que apareça na página do título. Para trabalhos que não
tenham uma página do título, "Página do Título"significa o texto próximo da aparição mais proe-
minente do título do trabalho, precedendo o início do corpo do texto.
12
14. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
FAZENDO CÓPIAS EXATAS
Você pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou não
comercial, desde que esta Licença, as notas de copyright, e a nota de licença dizendo que esta
Licença se aplica ao documento estejam reproduzidas em todas as cópias, e que você não acres-
cente nenhuma outra condição, quaisquer que sejam, às desta Licença.
Você não pode usar medidas técnicas para obstruir ou controlar a leitura ou confecção de
cópias subsequentes das cópias que você fizer ou distribuir. Entretanto, você pode aceitar com-
pensação em troca de cópias. Se você distribuir uma quantidade grande o suficiente de cópias,
você também precisa respeitar as condições da seção 3.
Você também pode emprestar cópias, sob as mesmas condições colocadas acima, e também
pode exibir cópias publicamente.
FAZENDO CÓPIAS EM QUANTIDADE
Se você publicar cópias do Documento em número maior que 100, e a nota de licença do
Documento obrigar Textos de Capa, você precisará incluir as cópias em capas que tragam, clara
e legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, e
Textos da Quarta Capa na capa de trás. Ambas as capas também precisam identificar clara e
legivelmente você como o editor dessas cópias. A capa da frente precisa apresentar o título com-
pleto com todas as palavras do título igualmente proeminentes e visíveis. Você pode adicionar
outros materiais às capas. Fazer cópias com modificações limitadas às capas, tanto quanto estas
preservem o título do documento e satisfaçam a essas condições, pode ser tratado como cópia
exata em outros aspectos.
Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma
legível, você deve colocar os primeiros (tantos quantos couberem de forma razoável) na capa
verdadeira, e continuar os outros nas páginas adjacentes.
Se você publicar ou distribuir cópias Opacas do Documento em número maior que 100, você
precisa ou incluir uma cópia Transparente que possa ser lida automaticamente com cada cópia
Opaca, ou informar, em ou com, cada cópia Opaca a localização de uma cópia Transparente
completa do Documento acessível publicamente em uma rede de computadores, à qual o público
usuário de redes tenha acesso a download gratuito e anônimo utilizando padrões públicos de
protocolos de rede. Se você utilizar o segundo método, você precisará tomar cuidados razoavel-
mente prudentes, quando iniciar a distribuição de cópias Opacas em quantidade, para assegurar
que esta cópia Transparente vai permanecer acessível desta forma na localização especificada
por pelo menos um ano depois da última vez em que você distribuir uma cópia Opaca (direta-
mente ou através de seus agentes ou distribuidores) daquela edição para o público.
É pedido, mas não é obrigatório, que você contate os autores do Documento bem antes de
redistribuir qualquer grande número de cópias, para lhes dar uma oportunidade de prover você
com uma versão atualizada do Documento.
13
15. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
MODIFICAÇÕES
Você pode copiar e distribuir uma Versão Modificada do Documento sob as condições das se-
ções 2 e 3 acima, desde que você publique a Versão Modificada estritamente sob esta Licença,
com a Versão Modificada tomando o papel do Documento, de forma a licenciar a distribuição
e modificação da Versão Modificada para quem quer que possua uma cópia da mesma. Além
disso, você precisa fazer o seguinte na versão modificada:
A. Usar na Página de Título (e nas capas, se houver alguma) um título distinto daquele do Do-
cumento, e daqueles de versões anteriores (que deveriam, se houvesse algum, estarem listados
na seção "Histórico do Documento"). Você pode usar o mesmo título de uma versão anterior se
o editor original daquela versão lhe der permissão;
B. Listar na Página de Título, como autores, uma ou mais das pessoas ou entidades responsá-
veis pela autoria das modificações na Versão Modificada, conjuntamente com pelo menos cinco
dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que
cinco);
C. Colocar na Página de Título o nome do editor da Versão Modificada, como o editor;
D. Preservar todas as notas de copyright do Documento;
E. Adicionar uma nota de copyright apropriada para suas próprias modificações adjacente às
outras notas de copyright;
F. Incluir, imediatamente depois das notas de copyright, uma nota de licença dando ao público
o direito de usar a Versão Modificada sob os termos desta Licença, na forma mostrada no tópico
abaixo;
G. Preservar nessa nota de licença as listas completas das Seções Invariantes e os Textos de
Capa requeridos dados na nota de licença do Documento;
H. Incluir uma cópia inalterada desta Licença;
I. Preservar a seção entitulada "Histórico", e seu título, e adicionar à mesma um item dizendo
pelo menos o título, ano, novos autores e editor da Versão Modificada como dados na Página de
Título. Se não houver uma sessão denominada "Histórico"no Documento, criar uma dizendo o
título, ano, autores, e editor do Documento como dados em sua Página de Título, então adicionar
um item descrevendo a Versão Modificada, tal como descrito na sentença anterior;
J. Preservar o endereço de rede, se algum, dado no Documento para acesso público a uma
cópia Transparente do Documento, e da mesma forma, as localizações de rede dadas no Docu-
mento para as versões anteriores em que ele foi baseado. Elas podem ser colocadas na seção
"Histórico". Você pode omitir uma localização na rede para um trabalho que tenha sido publicado
pelo menos quatro anos antes do Documento, ou se o editor original da versão a que ela se refira
der sua permissão;
K. Em qualquer seção entitulada "Agradecimentos"ou "Dedicatórias", preservar o título da
14
16. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
seção e preservar a seção em toda substância e fim de cada um dos agradecimentos de contri-
buidores e/ou dedicatórias dados;
L. Preservar todas as Seções Invariantes do Documento, inalteradas em seus textos ou em
seus títulos. Números de seção ou equivalentes não são considerados parte dos títulos da seção;
M. Apagar qualquer seção entitulada "Endossos". Tal sessão não pode ser incluída na Versão
Modificada;
N. Não reentitular qualquer seção existente com o título "Endossos"ou com qualquer outro
título dado a uma Seção Invariante.
Se a Versão Modificada incluir novas seções iniciais ou apêndices que se qualifiquem como
Seções Secundárias e não contenham nenhum material copiado do Documento, você pode optar
por designar alguma ou todas aquelas seções como invariantes. Para fazer isso, adicione seus
títulos à lista de Seções Invariantes na nota de licença da Versão Modificada. Esses títulos preci-
sam ser diferentes de qualquer outro título de seção.
Você pode adicionar uma seção entitulada "Endossos", desde que ela não contenha qual-
quer coisa além de endossos da sua Versão Modificada por várias pessoas ou entidades - por
exemplo, declarações de revisores ou de que o texto foi aprovado por uma organização como a
definição oficial de um padrão.
Você pode adicionar uma passagem de até cinco palavras como um Texto de Capa da Frente
, e uma passagem de até 25 palavras como um Texto de Quarta Capa, ao final da lista de Textos
de Capa na Versão Modificada. Somente uma passagem de Texto da Capa da Frente e uma de
Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade.
Se o Documento já incluir um texto de capa para a mesma capa, adicionado previamente por
você ou por acordo feito com alguma entidade para a qual você esteja agindo, você não pode
adicionar um outro; mas você pode trocar o antigo, com permissão explícita do editor anterior que
adicionou a passagem antiga.
O(s) autor(es) e editor(es) do Documento não dão permissão por esta Licença para que seus
nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer
Versão Modificada.
COMBINANDO DOCUMENTOS
Você pode combinar o Documento com outros documentos publicados sob esta Licença, sob
os termos definidos na seção 4 acima para versões modificadas, desde que você inclua na com-
binação todas as Seções Invariantes de todos os documentos originais, sem modificações, e liste
todas elas como Seções Invariantes de seu trabalho combinado em sua nota de licença.
O trabalho combinado precisa conter apenas uma cópia desta Licença, e Seções Invariantes
Idênticas com multiplas ocorrências podem ser substituídas por apenas uma cópia. Se houver
múltiplas Seções Invariantes com o mesmo nome mas com conteúdos distintos, faça o título de
15
17. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
cada seção único adicionando ao final do mesmo, em parênteses, o nome do autor ou editor
origianl daquela seção, se for conhecido, ou um número que seja único. Faça o mesmo ajuste
nos títulos de seção na lista de Seções Invariantes nota de licença do trabalho combinado.
Na combinação, você precisa combinar quaisquer seções entituladas "Histórico"dos diver-
sos documentos originais, formando uma seção entitulada "Histórico"; da mesma forma combine
quaisquer seções entituladas "Agradecimentos", ou "Dedicatórias". Você precisa apagar todas as
seções entituladas como "Endosso".
COLETÂNEAS DE DOCUMENTOS
Você pode fazer uma coletânea consitindo do Documento e outros documentos publicados
sob esta Licença, e substituir as cópias individuais desta Licença nos vários documentos com
uma única cópia incluida na coletânea, desde que você siga as regras desta Licença para cópia
exata de cada um dos Documentos em todos os outros aspectos.
Você pode extrair um único documento de tal coletânea, e distribuí-lo individualmente sob
esta Licença, desde que você insira uma cópia desta Licença no documento extraído, e siga esta
Licença em todos os outros aspectos relacionados à cópia exata daquele documento.
AGREGAÇÃO COM TRABALHOS INDEPENDENTES
Uma compilação do Documento ou derivados dele com outros trabalhos ou documentos se-
parados e independentes, em um volume ou mídia de distribuição, não conta como uma Ver-
são Modificada do Documento, desde que nenhum copyright de compilação seja reclamado pela
compilação. Tal compilação é chamada um "agregado", e esta Licença não se aplica aos outros
trabalhos auto-contidos compilados junto com o Documento, só por conta de terem sido assim
compilados, e eles não são trabalhos derivados do Documento.
Se o requerido para o Texto de Capa na seção 3 for aplicável a essas cópias do Documento,
então, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capa
do Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado.
Senão eles precisarão aparecer nas capas de todo o agregado.
TRADUÇÃO
Tradução é considerada como um tipo de modificação, então você pode distribuir traduções
do Documento sob os termos da seção 4. A substituição de Seções Invariantes por traduções
requer uma permissão especial dos detentores do copyright das mesmas, mas você pode incluir
traduções de algumas ou de todas as Seções Invariantes em adição às versões orignais dessas
Seções Invariantes. Você pode incluir uma tradução desta Licença desde que você também in-
clua a versão original em Inglês desta Licença. No caso de discordância entre a tradução e a
16
18. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
versão original em Inglês desta Licença, a versão original em Inglês prevalecerá.
TÉRMINO
Você não pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expres-
samente especificado sob esta Licença. Qualquer outra tentativa de copiar, modificar, sublicen-
ciar, ou distribuir o Documento é nula, e resultará automaticamente no término de seus direitos
sob esta Licença. Entretanto, terceiros que tenham recebido cópias, ou direitos de você sob esta
Licença não terão suas licenças terminadas, tanto quanto esses terceiros permaneçam em total
acordo com esta Licença.
REVISÕES FUTURAS DESTA LICENÇA
A Free Software Foundation pode publicar novas versões revisadas da Licença de Documen-
tação Livre GNU de tempos em tempos. Tais novas versões serão similares em espirito à versão
presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupações. Veja
http://www.gnu.org/copyleft/.
A cada versão da Licença é dado um número de versão distinto. Se o Documento especificar
que uma versão particular desta Licença "ou qualquer versão posterior"se aplica ao mesmo, você
tem a opção de seguir os termos e condições daquela versão específica, ou de qualquer versão
posterior que tenha sido publicada (não como rascunho) pela Free Software Foundation. Se o
Documento não especificar um número de Versão desta Licença, você pode escolher qualquer
versão já publicada (não como rascunho) pela Free Software Foundation.
ADENDO: Como usar esta Licença para seus documentos
Para usar esta Licença num documento que você escreveu, inclua uma cópia desta Licença
no documento e ponha as seguintes notas de copyright e licenças logo após a página de título:
Copyright (c) ANO SEU NOME.
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença
de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Soft-
ware Foundation; com as Seções Invariantes sendo LISTE SEUS TÍTULOS, com os Textos da
Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cópia da li-
cença está inclusa na seção entitulada "Licença de Documentação Livre GNU".
Se você não tiver nenhuma Seção Invariante, escreva "sem Seções Invariantes"ao invés de
dizer quais são invariantes. Se você não tiver Textos de Capa da Frente, escreva "sem Textos de
Capa da Frente"ao invés de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os
Textos da Quarta Capa.
Se o seu documento contiver exemplos não triviais de código de programas, nós recomenda-
mos a publicação desses exemplos em paralelo sob a sua escolha de licença de software livre,
17
19. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
tal como a GNU General Public License, para permitir o seu uso em software livre.
18
21. Capítulo 1
O que é JSP e o que são Servlets
JSP (Java Server Pages) e Servlets são tecnologias desenvolvidas pela Sun Microsystems
orientadas para criar páginas web com programação em Java que sejam executadas do lado do
servidor. JSP é semelhante ao Microsoft Active Server Pages (ASP), porém, por ser baseada
na linguagem Java, tem a vantagem da portabilidade de plataforma, podendo ser executado
em outros Sistemas Operacionais. Já servlets são, basicamente, classes java instanciadas e
executadas junto ao servidor web, atendendo requisições HTTP, como a dos browsers.
Em linhas gerais, JSP permite ao desenvolvedor de sites produzir aplicações que permitam
o acesso a banco de dados, o acesso a arquivos-texto, a captação de informações a partir de
formulários, a captação de informações sobre o visitante e sobre o servidor, o uso de variáveis
e loops entre outros. De um modo geral, permite produzir conteúdos dinâmicos que possam ser
reutilizados.
O curso tem base na distribuição Debian.
20
22. Capítulo 2
Plano de ensino
2.1 Objetivo
Capacitar o usuário para o uso autônomo dos recursos do JSP e dos Servlets.
2.2 Público Alvo
Em especial usuários do sistema operacional Linux que queiram fazer uso de JSP e dos
Servlets.
2.3 Pré-requisitos
Os usuários deverão ser, necessariamente, indicados por empresas públicas e ter conheci-
mento básico acerca da lógica de programação. Além disso, são necessários conhecimentos em
Java e HTML. Recomendamos o curso: “Java Básico” do CDTC.
2.4 Descrição
O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle
como ferramenta de aprendizagem. Ele será dividido em tópicos e cada um deles é composto
por um conjunto de atividades (lições, fóruns, glossários, questionários e outros) que deverão ser
executadas de acordo com as instruções fornecidas. O material didático estará disponível on-line
de acordo com as datas pré-estabelecidas em cada tópico. A versão adotada do JDK para uso
do JSP é a JDK 5. Caso possua outra versão instalada, poderão ocorrer poucas diferenças.
Todo o material está no formato de lições, e estará disponível ao longo do curso. As lições
poderão ser acessadas quantas vezes forem necessárias. Aconselhamos a leitura de "Ambien-
tação do Moodle", para que você conheça o produto de Ensino a Distância, evitando dificuldades
advindas do "desconhecimento"sobre o mesmo.
Ao final de cada semana do curso será disponibilizada a prova referente ao módulo estudado
anteriormente que também conterá perguntas sobre os textos indicados. Utilize o material de
cada semana e os exemplos disponibilizados para se preparar para prova.
21
23. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deve ser
disponibilizada no fórum ou enviada por e-mail. Diariamente os monitores darão respostas e
esclarecimentos.
2.5 Metodologia
O curso está dividido da seguinte maneira:
2.6 Cronograma
• Lição 1 - Iniciando em JSP e Servlets;
• Lição 2 - Instalações e Configurações;
• Lição 3 - Noções de POO e Comandos Java;
• Lição 4 - TAGS JSP;
• Lição 5 - JSTL e Javabeans;
• Lição 6 - Servlets: Criação e Ciclo;
• Lição 7 - Servlets: API, Request e Response;
• Lição 8 - Usando Cookies e Controlando Sessões;
• Lição 9 - Controle de Erros e MVC;
• Avaliação de Aprendizagem.
As lições contém o conteúdo principal. Elas poderão ser acessadas quantas vezes forem ne-
cessárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá
uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada li-
ção, pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição seja
menor do que 6.0, sugerimos que você faça novamente esta lição.
Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições
quanto a da avaliação final serão consideradas para a nota final. Todos os módulos ficarão visí-
veis para que possam ser consultados durante a avaliação final.
Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En-
sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.
Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá ser
enviada ao fórum. Diariamente os monitores darão respostas e esclarecimentos.
2.7 Programa
O curso de JSP e Servlets oferecerá o seguinte conteúdo:
• Introdução;
• Instalação;
22
24. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• Noções de Java;
• Conteúdo JSP;
• Conteúdo Servlets;
• Cookies e Controle de Sessões;
• JSTL, Erros e MVC.
2.8 Avaliação
Toda a avaliação será feita on-line.
Aspectos a serem considerados na avaliação:
• iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;
• capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.
Instrumentos de avaliação:
• participação ativa nas atividades programadas.
• avaliação ao final do curso.
• o participante fará várias avaliações referentes ao conteúdo do curso. Para a aprovação e
obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo
com a fórmula abaixo:
• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições.
• AF = Avaliações.
2.9 Bibliografia
Site official:
http://java.sun.com/products/jsp/
Outros:
http://www.criarweb.com/artigos/227.php
http://www.crieseuwebsite.com/apostilas/detalhes.php?categoria=JSP&arquivo=93
http://www.caelum.com.br
http://www.mundooo.com.br/
http://www.javafree.org/javabb/viewtopic.jbb?t=9127
http://arquivos.coinfo.cefetpb.edu.br/~fred/pweb/servlets/slides/04-Servlets.pdf
http://www.dpi.ufv.br/~alcione/proginter2001/ApostilaServletJSP.pdf
http://www.mhavila.com.br/topicos/java/tomcat_unix.html
23
25. Capítulo 3
Iniciando em JSP e Servlets
3.1 Definições: JSP e Servlets
JSP (Java Server Pages) é uma tecnologia utilizada na criação de aplicações para a web. É
uma linguagem relativamente nova, já que surgiu por volta do ano 2000 como uma estratégia
da Sun MicroSystems para combater linguagens emergentes como o ASP(Active Server Pages),
linguagem de autoria da Microsoft, e o PHP (Hypertext PreProcessor). Por ser baseada na lin-
guagem Java, tem a vantagem da portabilidade de plataforma, o que permite sua execução em
variados sistemas operacionais. Podemos escrever JSP com um editor de texto HTML/XML co-
mum, já que as páginas JSP estão compostas de cógido HTML/XML mesclado com etiquetas
para programar scripts de servidor em sintaxe Java. O motor das páginas JSP está baseado nos
servlets de Java.
Os arquivos JSP têm extensão ’.jsp’ , os quais, dentro das tags HTML, contém o código em
java a executar no servidor. Antes que os arquivos sejam funcionais, o motor JSP realiza uma
fase de tradução dessa página em um servlet, implementado em um arquivo class (Byte codes
de Java).
24
26. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Servlets são componentes que disponibilizam ao programador java uma interface para o ser-
vidor web, através de uma API. Servlets ampliam a funcionalidade de servidores baseados em
requisições/respostas. Uma página criada com a tecnologia JSP, após instalada em um servidor
de aplicação compatível com a tecnologia Java EE, é transformada em um Servlet. Para ser
executado um servlet necessita de um container Web, isto é, um servidor onde são instaladas
servlets para tratar as requisições que o servidor receber. Existem vários containers web, mas
um dos mais usados é o Tomcat, por vários motivos entre eles por não ser pago e por ser o
container de servlets usado na referência oficial de implementação de JSP.
Para tirar um bom proveito de JSP e de Servlets são necessários conhecimentos em HTML e
java, já que são as duas bases sobre as quais JSP é moldado. Parte lógica do JSP envolve Java
Beans, Objetos JDBC, Enterprise Java Beans ( EJB ) entre outros componentes que interagem
com a plataforma Java. Portanto, alertamos aqueles que pretendem desenvolver uma aplicação
mais sofisticada que tenham, além de conhecimentos de HTML, que entendam de programação
em Java. Para os que ainda não estão familiarizados com o java, recomendamos o curso de
“Java Básico” do CDTC.
3.2 Comparação de Java Server Pages com Servlets
JSP e Servlets são bem parecidos, já que todo JSP é compilado em forma de Servlet. Os dois
são processados do lado do servidor e retornam apenas conteúdo HTML ao cliente. JSPs geram
essencialmente conteúdo HTML enquanto os servlets são usados para controle da aplicação,
mas o programador pode opcionalmente inverter esses papéis.
A principal diferença entre eles é que em JSP escreve-se Java no HTML e em servlets
escreve-se HMTL dentro do código java. Sabemos que servlets são classes java que forne-
cem serviço especial de ’server-side’. Basicamente, o que acontece é que é mais difícil escrever
código HTML em Servlets já que neles são necessárias várias linhas de código de impressão
(println) para gerar HTML, o que não acontece em JSPs.
25
27. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
3.3 Aplicações Web
Estrutura Usual de APLICAÇÕES WEB Desenvolvidas Usando o Java
Aplicações web são aplicações que executam no servidor e que consistem de compontentes
como JSP, Servlets, HTML, etc. Uma das principais características de uma aplicação web é seu
relacionamento com o ServletContext. Um ServletContext serve basicamente para armazenar
informação relativa à aplicação como um todo. Em particular, o ServletContext é usado para:
• conter parâmetros de inicialização da aplicação;
• armazenar recursos associados à aplicação. Uma conexão de Banco de Dados um exem-
plo;
• armazenar qualquer atributo da aplicação como objeto;
• fornecer acesso à funcionalidade de logging.
Cada aplicação tem somente um único ServletContext. Este relacionamento é controlado pelo
container de servlet. Na grande maioria dos casos, o desenvolvimento dessas aplicações web
que usam o java como padrão procura seguir os passos seguintes:
1 - desenvolvimento e teste dos diversos Servlets, JSPs, necessários ao projeto da aplicação
web;
2 - escrita do ’descritor de aplicação’ (Web Application Deployment Descriptor). Geralmente é
um arquivo .xml e é usado pelo container ou servidor para a instalação da aplicação. Descreve-se
nele as variáveis de ambiente a serem usadas, os componentes e os requisitos de segurança.
Tem seu nome usual como ’web.xml’ e é localizado no diretório WEB-INF. Nesse arquivo, pode-
mos encontrar informações referentes a:
• Parâmetros de Inicialização do ServletContext;
• Configuração de Session;
• Definições de Servlet/JSP;
• Mappings de Servlet/JSP;
• Páginas de Erros;
• Segurança.
Exemplo de ’web.xml’:
<web-app>
<display-name>NomeAplicacao</display-name>
<session-timeout>30</session-timeout>
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>com.nome.ServletNome1</servlet-class>
<load-on-startup>1</load-on-startup>
26
28. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
</web-app>
OBS: A criação de um web.xml será explicada detalhadamente adiante.
3 - compilação de todos os componentes web e das classes referenciadas por eles. Existem
algumas ferramentas para esse propósito, como o ’Ant’. O Apache Ant é uma ferramenta escrita
em java (está disponível em http://ant.apache.org/) que permite criar scripts para a realização
automática de tarefas como a compilação de programas java. Os scripts são definidos em XML;
4 - empacotamento da aplicação web. As aplicações web primeiramente são empacotadas
em um arquivo com a extensão ’.war’ (Web application Archive) e são então instaladas em um
container ou servidor. Embora esse processo seja opcional para a posterior instalação no contai-
ner , ele é recomendado, pois facilita o processo da instalação. Novamente o uso da ferramenta
Ant é muito útil para esta fase do desenvolvimento. A ferramenta JAR do JDK também pode criar
o WAR file com o seguinte comando:
jar cvf nome.war
Usando o Elipse, por exemplo, basta usar SeuProjeto / Exportar / WAR file.
OBS: JAR ou Java ARchive é um arquivo compactado usado para distribuir um conjunto de
classes Java. É usado para armazenar classes compiladas e metadados associados que podem
constituir um programa.Arquivos jar podem ser criados e extraídos usando o utilitário "jar"da JDK;
5 - instalação no container ou servidor. Já empacotada em ’.war’, somente é necessário copiar
o arquivo para o diretório ’webapps’ do Tomcat ou o diretório ’autodeploy’ do domínio desejado
no Servidor de Aplicações da Sun Microsystems. O servidor, então, fará a instalação automática;
6 - abrir o browser e apontar para a URL da aplicação, que normalmente é algo como:
http://localhost:8080/dir_da_aplicação.
A estrutura de diretórios de uma aplicação web é normalmente assim:
27
29. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
DirRaiz/ diretório raíz da aplicação web
DirRaiz/index.html documento HTML
DirRaiz/index.jsp documento JSP
DirRaiz/imagens diretório onde se localizam as imagens da página
DirRaiz/META-INF/ diretório opcional, usado para se definir extensões
e outras informações relacionadas aos dados do pacote.
DirRaiz/WEB-INF/ diretório que contém os recursos relacionados
à aplicação como o web aplication deployment.
DirRaiz/WEB-INF/classes diretório que contém Servlets, JavaBens e demais
classes Java,todos compilados.
DirRaiz/WEB-INF/lib diretório que contém JAR files que a aplicação web tem
dependência, como um JAR de drive JDBC.
DirRaiz/WEB-INF/web.xml descritor de instalação ’web.xml’.
28
30. Capítulo 4
Instalações e Configurações
4.1 Instalações Necessárias
A primeira coisa a se fazer é instalar um servidor (container) JSP. Existem vários contai-
ners, dentre os quais podemos citar: JBoss, Weblogic e WebSphere. Neste curso escolhemos
e ensinaremos a configurar o Tomcat, do projeto Jakarta (http://tomcat.apache.org). Como ele
é inteiramente escrito em Java, necessita de uma Java Virtual Machine (JVM) - Máquina Virtual
Java - para ser executado. Ele é oficialmente endossado pela Sun como a Implementação de
Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP).
O Tomcat é um servidor de aplicações Java para web. É distribuído como software livre e
desenvolvido como código aberto dentro do conceituado projeto Apache Jakarta. O Tomcat é
robusto e eficiente o suficiente para ser utilizado mesmo em um ambiente de produção.
Para a instalação do Tomcat em ambiente de desenvolvimento - onde serão desenvolvidas
classes Java em geral, incluindo Servlets e páginas JSP -, deve-se utilizar o JDK (Java Develop-
ment Kit) completo. Se você não tiver ainda o JDK instalado, faça o download através do site da
Empresa Sun. (http://java.sun.com).
4.2 Estrutura de Diretórios do Tomcat
É importante que saibamos como é a estrutura de diretórios do Tomcat pois isto ajuda a ter
maior controle sobre as aplicações, além de nos fazer entender melhor containers semelhantes
a ele. A estrutura básica é a seguinte:
29
31. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
/bin Diretório que contém os binários executáveis. No caso do Linux
é util pois contém os arquivos ’.sh’ para a execução do servidor.
/common Diretório que contém classes disponíveis tanto para funcionamento
do servidor quanto às aplicações web instaladas. Geralmente contém os
diretórios /classe e /lib nos quais se localizam classes disponíveis não
só para o Tomcat quanto para as aplicações rodando no servidor. Classes
compiladas devem ser colocadas no ’/classes’ e arquivos JAR devem ser
colocados no ’/lib’.
/conf Diretório que contém os arquivos de configuração. Os mais importantes são
’server.xml’ - arquivo de configuração principal do Tomcat, que é usado para
configurar logs, conexões com outros servidores, a porta e host na qual o
servidor está sendo executado e o local dos arquivos de cada aplicação
web - ’tomcat-users.xml’ - base de dados padrão para a autenticação de
usuários. - e o ’web.xml’ que já foi citado.
/logs Diretório que contém os arquivos de logs.
/server Diretório que contém novamente subdiretórios : classes, lib e webapps.
Porém, os desta pasta não são acessíveis a outras aplicações. Webapps
é o local das aplicações de gerenciamento do Tomcat: admin e manager.
/shared Diretório que contém novamente os dois subdiretórios: classes e lib com a
diferença que classes nestes subdiretórios estarão disponíveis a todas as
aplicações web, exceto ao Tomcat.
/webapps Diretório para a instalação de aplicações web no Tomcat. Sua estrutura já
foi explicada na Lição anterior.
/work Diretório onde o Tomcat armazena o código da página JSP depois que este é
convertido em um Servlet.
Instalação
A instalação do Tomcat é muito simples e consiste, essencialmente, em descompactar o pa-
cote de arquivos no local desejado. Os comandos de instalação procuram utilizar máscaras de
substituição ? e * nos nomes de arquivo para se manterem genéricos em relação à versão espe-
cífica do Tomcat, já que os procedimentos são idênticos para toda versão.
Os procedimentos de instalação no curso pressupõem como convenção o caminho /opt/ como
diretório base para a instalação. Os demais exemplos citados neste tutorial se referem a este ca-
minho. Em algumas plataformas, pode-se preferir usar /usr/local/ ou mesmo outro local persona-
lizado, como por exemplo /web. Como não há padrão rígido para esta organização, se você optar
por outra localização, basta lembrar de alterar as referências ao caminho de instalação conforme
30
32. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
necessário.
No nosso caso, os seguintes procedimentos foram tomados:
1 - criação de um diretório novo chamado ’install’ em /usr/local/
$ cd /opt
$ mkdir install
2 - mover o arquivo de instalação ( no caso o ’apache-tomcat.?.?.*.tar.gz’
ou ’apache-tomcat.?.?.*.zip’ para a pasta /opt/install.
$ mv apache-tomcat.?.?.*.tar.gz /opt/install
3 - o comando script cria um arquivo de registro tomcat-install.log com toda a saída apresen-
tada na tela durante a instalação (até que seja finalizado com o comando exit):
$ script /opt/install/tomcat-install.log
OBS.: Se precisar conferir depois em detalhes o que aconteceu durante a instalação,
em busca de algum problema consulte o arquivo install/tomcat-install.log gerado.
4 - o GNU tar tem a opção z que já descompacta o formato gzip. As outras opções xvf são
respectivamente para extrair, exibir mais informações e especificar o nome do arquivo:
$ tar -xzvf /opt/install/apache-tomcat-?.?.*.tar.gz
* Se for usado o pacote ZIP, o comando passa a ser:
$ unzip /opt/install/apache-tomcat-?.?.*.zip
5 - recomendável também criar um link simbólico sem a versão, para facilitar a referência em
scripts administrativos independentes da versão atual:
$ ln -s apache-tomcat-?.?.?? tomcat
6 - apenas se tiver sido usado o pacote ZIP, é necessário este passo adicional: verificar e
atribuir permissão de execução aos scripts do Tomcat:
$ cd tomcat/bin
$ ls -l *.sh
$ chmod +x *.sh
$ cd ../..
7 - como root, defina as variáveis de ambiente JAVA_HOME e CATALINA_HOME, para apon-
tar o diretório principal da instalação do Java SDK e do Tomcat, respectivamente:
- entre no arquivo .bashrc com algum editor de texto:
31
33. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
$ vim /home/[nome_de_usuario]/.bashrc
8 - adicione as linhas abaixo no fim do arquivo ’.bashrc’ . Onde citamos ?jdk1.5.0?, trata-se
da versão do Java já instalado na máquina. Novamente adapte o guia à sua versão do JDK:
# java home and path
JAVA_HOME=/[caminho_do_diretorio_do_java]/jdk1.5.0; export JAVA_HOME
export PATH=$PATH:/[caminho_do_diretorio_do_java/jdk1.5.0/bin/
# catalina home
CATALINA_HOME=/opt/install/[diretório_do_tomcat]; export JAVA_HOME
- Salve suas alterações e saia do diretório root com o comando:
$ exit
11 - execute o script desejado para iniciar e parar o tomcat:
Iniciar:
$ /[diretório_do_tomcat]/bin/startup.sh
ou
$ /[diretório_do_tomcat]/bin/catalina.sh start
Parar:
$ /[diretório_do_tomcat]/bin/shutdown.sh
ou
$ /[diretório_do_tomcat]/bin/catalina.sh stop
12 - para testar se o Tomcat está rodando corretamente após iniciado(startup.sh), abra o
browser e vá para o endereço:
http://localhost:8080/
32
34. Capítulo 5
Fundamentos da Orientação a Objeto
Apesar de recomendar o prévio conhecimento de java para o curso de JSP e Servlets, é ne-
cessário relembrarmos os conceitos fundamentais da programação java e suas derivadas, con-
seqüentemente o JSP, que são conceitos da orientação a objeto (comumente conhecida como
Programação Orientada a Objeto ou POO). São, apesar de fundamentais, conceitos amplos que
requerem prática para que possam ser plenamente compreendidos.
5.1 Classes, Objetos e Métodos
Classe é um aglomerado de métodos - funções e procedimentos com os quais acessamos e
usamos os objetos, realizando tarefas específicas -, e de variáveis, que definem o comportamento
de um objeto que poderá vir a existir se a classe for solicitada para tal.
Um objeto é uma entidade do mundo real que possui uma identidade. Podem ser entidades
concretas ou conceituais. Podemos citar como exemplos de objetos: uma conta corrente, clientes,
agências, arquivos no computador, bicicletas, lojas etc. Em termos de programação, pode-se
definir objeto como o resultado da ação construtora de uma classe.
Todo objeto é “fabricado” em uma classe, sendo por isso denominado instância da classe.
Além disso, tem outras características: a estrutura de objetos de uma certa classe é descrita
por meio de atributos; objetos de uma mesma classe têm um mesmo comportamento que são
representados pelo conjunto de operações que podem ser executadas sobre eles. O método de
construção de objetos com a mesma "genética"da classe é chamado de método construtor.
5.2 Conceitos Importantes
Alguns outros conceitos importantes:
Encapsulamento: imprescindível ao entendimento de POO e ao aprendizado java, já que é
indispensável para contribuir com a diminuição dos malefícios causados pela interferência externa
sobre os dados. É uma técnica que consiste em ocultar no objeto algumas de suas variáveis (ou
33
35. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
campos) e alguns de seus métodos. É importantíssimo na medida em que deixa o programa
robusto, impedindo o acesso a certas partes de seu funcionamento.
Herança: outro conceito importante na POO é o conceito de herança, que significa que toda
classe definida como uma subclasse de outra receberá automaticamente todo o conteúdo da
classe-mãe. Tomamos como exemplo uma classe ’Pessoa’, onde possui como propriedades:
nome, endereço, telefone, cpf e etc. Incluímos a classe ’Pessoa’ em uma classe ’Funcionário’,
dessa forma aproveitamos todas as propriedades de ’Pessoa’ e incluímos as propriedades espe-
cíficas de ’Funcionário’, como: data de admissão, cargo, salário e etc.
Polimorfismo: um conceito mais difícil de ser entendido, porém não menos importante é o
conceito de polimorfismo. Essa dificuldade decorre da amplitude desse conceito e de significados
em POO. Suas variadas definições são:
.overloading: designa um tipo de polimorfismo em que podemos utilizar um nome igual para
designar métodos diferentes que terão lista de parâmetros também diferentes. Isto tanto em
número de parâmetros quanto em tipo; .os objetos de uma classe-mãe podem ser redefinidos por
objetos das suas sub-classes; .variáveis podem assumir tipos diferentes ao longo da execução.
Visibilidade: através dos indicadores ’public’ e ’private’ algumas classes e métodos podem
ser visíveis ou não. Os métodos e propriedades públicas serão a interface do objeto com o
usuário.
Abstração: em termos de desenvolvimento, abstração significa concentrar-se no que um
objeto é e faz antes de se decidir como ele será implementado. Significa representar as caracte-
rísticas essenciais de um tipo de dado sem incluir o mecanismo que concretiza a funcionalidade.
A abstração é fundamental para conseguir uma boa modularização, que é uma técnica que tem a
estratégia de ’dividir para conquistar’, ou seja, resolver um grande problema dividindo-o em vários
problemas menores.
5.3 Variáveis
Variáveis de Classe: são variáveis declaradas no escopo de uma classe, mas de tal modo
que não precisam de objetos para serem referenciadas, bastando a definição da classe na qual
são declaradas.
Variáveis de Instância: variáveis declaradas no escopo de uma classe e definem os atributos
que cada objeto da classe possui.
Variáveis Paramétricas: declaradas como parâmetros de métodos, construtores e manipula-
dores de exceções.
34
36. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
5.4 Modificadores
No caso da linguagem java, existem uma série de modificadores de métodos, classes e atri-
butos. Mostraremos os principais e mais usados :
• public: permite acesso total em uma classe, em um método ou sobre um atributo;
• private: não é aplicável a classes, mas é acessado pela classe em métodos e atributos;
• protected: modificador que não é aplicável a classes, mas é acessado pelo pacote em
métodos e atributos;
• final: numa classe indica que é sem herança, não pode ser sobrescrito em um método e
indica que um atributo é constante;
• static: não aplicável a classes, e dá acesso a métodos e atributos somente referenciando
a classe;
• native: aplicável somente a métodos para indicar código nativo;
• synchonized: aplicável somente a métodos para indicar não acesso simultâneo.
Exemplo de uso dos modificadores:
public static void FazConta();
This e Super
Palavras-chave aplicadas a métodos não estáticos, ou seja, de instância. This é utilizada para
referenciar variáveis ou métodos da instância atual e o super é utilizada para associar a métodos
da classe ’mãe’.
5.5 Pacotes (Packages):
Conjunto organizado de classes e demais arquivos que estão relacionados através de um pro-
pósito comum ou atuam com dependências entre si. São muito úteis e necessários na medida em
que são usados para localizar o código da classe de forma eficiente. Para utilizá-los, simplismente
precedemos diretivas importi (importar) ao nome e caminho do pacote dessa maneira:
import nomedopacote.nomedosubpacote.NomeDaClasse;
Exemplo:
import java.io.IOException;
OBS.: se necessário o uso de mais de uma classe do mesmo pacote podemos referenciar
com o uso de ’*’ dessa maneira:
import java.lang.*;
35
37. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
5.6 Uma Página em JSP
Já dissemos que uma página escrita em JSP é baseada no HTML padrão. A maior parte do
código de uma página JSP consiste em template text. O template text é similar ao HTML e é
passado ao browser do cliente por um servlet criado para manusear a página. Logo, para criar
uma aplicação JSP podemos incluir tags JSP em uma página html previamente criada (normal-
mente começam com ’<%’ e terminam com ’%>’) e salvar o arquivo com extensão ’.jsp’ ao invés
de ’.html’.
Basta agora abrir a página em um browser qualquer. É certo que o resultado nesse caso
será o mesmo que em uma página html, mas levará mais tempo para abri-la em JSP. Mas so-
mente da primeira vez. Se tentar carregá-la novamente, carregará normalmente. Isso acontece
porque o código da página, numa primeira vez, é transformado em um arquivo Java, compilado
e executado. Logo, a não ser que o código seja alterado normalmente, a página será carregada
imediatamente numa segunda chamada.
A partir dessa parte faremos um rápido resumo para relembrar a sintaxe dos comandos con-
dicionais e loops do java.
5.7 Condicionais
As condicionais são usadas quando o programador precisa que algum código seja executado,
se uma condição for verdadeira, ou outra seja executada se a primeira condição for falsa, e assim
por diante.
Comandos IF/ELSE
Um bloco if é formado primeiramente com o próprio ’if’ e seguido por um teste booleano e
uma instrução ou um bloco de instruções que precisam ser executadas caso o teste booleano
seja verdadeiro. O ’else’ pode ser usado caso o programador queira que o programa execute o
bloco de instruções que o segue, caso o teste booleano do ’if’ não seja verdadeiro. Exemplo:
<html>
<body>
<%
int valor = -10;
if(valor < 0){
out.println("Valor absoluto de" + valor + " = " + -valor);
}
else{
out.println("Valor absoluto de" + valor + " = " + valor);
}
%>
</body>
</html>
36
38. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Comando SWITCH
O comando switch é usado em situações em que apenas uma entre as condições sendo
testadas assume o valor true num mesmo momento. Se a expressão tem valor coincidente no
switch, a instrução após ele é executada. Caso contrário, a instrução em default é executada. A
sintaxe é a seguinte:
switch(expressão) {
case (constante 1):
(comando 1)
break;
case (constante 2):
(comando 2)
break;
.
.
.
case (constante n):
(comando n)
break;
default:
(comando)
}
Exemplo:
<html>
<body>
<%
int a = 1;
char op = '+';
switch(a) {
case 1:
out.println("case 1: op="+op);
break;
case 2:
out.println("case 2: op="+op);
break;
case 3:
out.println("case 3"+op);
break;
default:
out.println("default: op nao esta no limite 1..3");
}
%>
</body>
</html>
37
39. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
5.8 Repetição(loop)
Tratatemos nessa seção sobre as rotinas de repetição de java, que logicamente podem ser
usadas em JSP.
FOR
• repete uma instrução determinado número de vezes até que alguma condição seja satis-
feita;
• forma básica:
for(inicialização;condição;incremento){
código
}
Exemplo:
<html>
<body>
<%
for(int i=0;i<10; i++){
out.println("Dessa vez, i = " + i + "<br />");
}
%>
</body>
</html>
WHILE
• repete uma instrução até que alguma condição seja verdadeira. Primeiro testa a condição
e depois entra no loop;
• forma básica:
while(condição){
código
}
Exemplo:
<html>
<body>
<%
int i = 0;
while(i < 10){
out.println("Dessa vez, i = " + i + "<br />");
i++;
}
%>
</body>
</html>
38
40. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
DO...WHILE
• é parecido com um while, só que repete uma instrução até que alguma condição seja falsa.
Primeiro entra no loop e depois checa a condição;
• forma básica:
do{
código
}while(condição);
Exemplo:
<html>
<body>
<%
int i = 0;
do { %>
<font size=<%=i%>>
Olá Mundo
Fonte: <%= i %>
</font><br>
<% i++;
}while(i<=5); %>
</body>
</html>
Obs.: Se por acaso for necessário que o programa saia da rotina de repetição antes do seu
término usual, podemos usar a palavra-chave break, que para imediatamente a execução do loop
e continua no comando seguinte a ele. Já se o programador desejar parar apenas a execução de
uma interação e continuar o loop na seguinte, ele pode usar a palavra-chave continue.
39
41. Capítulo 6
TAGS JSP
6.1 TAGS - Expressões, Scriptlets e Declarações
Existem 5(cinco) tipos diferenciados de tags em JSP. São elas: Expressões, Scriptlets, Decla-
rações, Diretivas, e Comentários.
Expressões
As expressões são trechos avaliados (em tempo de execução, quando a página é requisitada
pelo browser), convertidas em String e colocadas na página enviada. Têm forma geral:
<%= expressão %>
Exemplos de Expressões:
<%= request.getMethod() %>
<%= new java.util.date() %>
<%= x*y*z %>
<%= Math.sqrt(49) %>
Obs.: As expressões não aceitam ponto-e-vírgula.
Scriptlets
Scriptlets é como são ostrechos de código JSP dentro de páginas HTML. São úteis quando
não é necessário mais de um comando Java ou quando o resultado da computação não é para
ser colocado na página de resposta.
<% Código java %>
Exemplo de Scriptlet:
<html>
<body>
<% out.println( "Validando a data" );
java.util.Date date = new java.util.Date();
%>
40
42. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Hello! The time is now:
<%
out.println(String.valueOf(date));
%>
</body>
</html>
Obs.:
• 1. Todo código HTML estático antes e após um scriptlet é transformado em comandos de
saída (out). Assim, não é necessário abranger os códigos estáticos, além do que blocos de
controle abertos afetam o código HTML envolvido por scriptlets. Exemplo:
Inserir Numero
<% if (Math.random() < .4) { %>
Número correto!
<% } else { %>
Tente novamente
<% } %>
que produz:
out.println("Inserir Numero")
if (Math.random() < .4) {
out.println("Número Correto!")
} else {
out.println("Tente Novamente")
}
• 2. Scriptlets são considerados uma péssima prática de programação pois deixam o código
sujo dificultando a legibilidade e possibilitam a execução de tarefas que não deveriam ser
efetuadas na camada de aprensentação, como por exemplo, acessar o banco de dados,
executar regras de negócio, modificar o fluxo de navegação e etc.
• 3 Quando se está usando o padrão MVC (melhor explicado adiante), deve-se sempre pres-
tar atenção na regra que diz que a camada View(JSP) , deve ser usada apenas para apre-
sentação dos dados da aplicação.
• 4. Scriptlets exigem ponto-e-vírgula ao final de sentenças.
Declarações
Declarações em JSP são alocações de espaços na memória através de definições das variá-
veis e métodos que serão inseridos no corpo do servlet, e serão então referenciados através de
outros elementos de criação de scriptlets. Por não gerarem saída nenhuma, as declarações são
usadas em combinações com expressões e scriptlets. Em JSP são feitas dessa maneira:
<%! Código java %>
41
43. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Deve-se sempre declarar os métodos e as variáveis antes de usá-los. O escopo é geralmente
o arquivo JSP, mas pode ser expandido se houver outros arquivos relacionados com uma diretiva
include. Neste caso se expandirá para o cover do arquivo incluído.
Exemplos de declarações:
<%! int c = 30; %>
<%! String [] pessoas = {?Pedro?,?Jose?,?Maria?}; %>
<%! private int num=0; %>
<%! Metodo a = new Metodo(5.0); %>
<%! double d,e; int f ;%>
Declaradas dessa maneira, são variáveis de instância. Já as declaradas dentro de scriptlets
são variáveis locais ao método _jspService.
Obs.: Cada declaração deve ser separada por ponto-e-vírgula ou finalizada.
6.2 TAGS - Diretivas e Comentários - e Ações
Diretivas
Diretivas são mensagens incluídas no html que passam informações para o JSP container.
Não enviam nada para a página, mas são importantes pois informam o servidor web coisas
como: a linguagem usada no documento, que no caso é o java, importa os pacotes necessários
ao uso, etc.
1. Diretiva PAGE
A diretiva page possui onze atributos opcionais que fornecem processamento de informações
especiais ao motor JSP. Seu formato padrão é:
<%@ Diretiva atributo1="valor1" atributo2="valor2" ... atributoN="valorN" %>
Exemplo de diretiva page:
<%@ page language="java" import="java.util.*" %>
Apesar de serem opcionais por já possuírem um valor default, aqui listaremos os atributos
mais usados na diretiva page:
• import - especifica o pacote a ser importado. Único atributo que pode ser usado mais de
uma vez. Ex:
<%@ page import="java.util.*" %>
• isThreadSafe - indica se o servlet será executado no modo SingleThread. O valor default é
true. Ex:
<%@ page isThreadSafe="true|false" %>
42
44. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• session - indica se as informações da sessão http estarão disponíveis ou não para a página.
O valor default é true. Ex:
<%@ page session="true|false" %>
• buffer - especifica o tamanho do buffer do JSPWriter out. o Default é definido pelo servidor.
Ex:
<%@ page buffer="sizekb|none" %>
• autoFlush - indica se o buffer deve ser esvaziado quando cheio. O default é true. Ex:
<%@ page autoFlush="true|false" %>
• ContentType - indica o tipo MIME da página de resposta. Deve ser colocado no início do
arquivo. Ex:
<%@ page ContentType="text/html;charset=ISO-8859-1" %>
• extends - define se a subclasse do servlet deve ser gerada. O default é javax.servlet.HttpServlet.
Ex:
<%@ page extends="package.class" %>
• info - informação sobre o servlet que pode ser recuperada pelo método Servlet.getServletInfo().
o defalut é uma string vazia. Ex:
<%@ page info="texto" %>
• errorPage - mostra a página a ser exibida no caso de algum erro não tratado no código. Ex:
<%@ page errorPage="url" %>
• isErrorPage - indica se a página é de erro. Logicamente o default é false. Ex:
<%@ page isErrorPage="true|false" %>
• language - especifica a linguagem usada. No caso o java. Ex:
<%@ page language="java" %>
43
45. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
2. Diretiva INCLUDE
A diretiva include é usada, por exemplo, quando se quer inserir um texto de outro arquivo
no local indicado no arquivo JSP atual. Essa diretiva divide conteúdos em blocos de construção
separados. É bom saber que ela trata um arquivo incluído como estático.
Exemplo de diretiva include:
<%@ include file="arquivo.txt" %>
3. Diretiva TAGLIB
A diretiva Taglib é uma coleção de tags customizadas que podem ser usadas pela página.
Tags customizadas permitem aos desenvolvedores esconder complexos códigos ’server-side’dos
web-designers. Possui dois atributos:
• uri : Uniform Resource Identifier (URI) que identifica o arquivo TLD que descreve as tags
associadas com o prefixo dado. Este atributo pode ser definido como uma URL:
<%@ taglib uri='http://java.sun.com/jstl/core' prefix='c' %>
ou como um caminho:
<%@ taglib uri="WEB-INF/HelloWorld.tld" prefix="t" %>
• prefix : é o prefixo usado para identificar a biblioteca. No caso anterior:
<t:reservar />
OBS.: Os prefixos: jsp, jspx, java, javax, servlet, sun, e sunw não podem ser usados, pois são
reservados pela Sun Microsystems.
Exemplo de diretiva Taglib com sua uri e prefixo:
<%@ taglib uri = ?tag library URI? prefix = ?tag Prefix? %>
Comentários
Um primeiro tipo de comentário é o comentário HTML: independente de ser uma página JSP
(ou seja, mesmo sendo uma página HTML estática), pode-se utilizá-lo para incluir um texto que
não aparecerá diretamente para o usuário, a não ser que ele visualize o código-fonte da página.
A sintaxe de um comentário HTML é a seguinte:
<!--Comentários-->
Ao contrário do anterior, comentários JSP não são visíveis ao usuário nem mesmo se ele
visualizar o código-fonte da página.
<%--Comentários--%>
44
46. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Ações
Ações permitem que acrescentemos funcionalidades ao JSP através da interações JavaBe-
ans. São tags que fornecem um mecanismo simplificado de acesso a objetos Java em páginas
JSP. Disponibilizam ainda comando para redirecionamento do JSP para outro servlet ou JSP.
Ações Padrão são ações pré-definidas pelo container JSP.
Exemplo:
<jsp:forward page=?/NomeDoDiretório/NomeDoArquivo.jsp? />
Esse comando redireciona a página passando o request.
45
47. Capítulo 7
JSTL e Javabeans
7.1 Noções JavaBeans e EJB
JavaBeans
Segundo a especificação da Sun Microsystems os JavaBeans são componentes reutilizáveis
de software que podem ser manipulados visualmente com a ajuda de uma ferramenta de de-
senvolvimento. De uma maneira direta, Javabeans são classes que possuem o construtor sem
argumentos e métodos de acesso do tipo get e set.
EJB
A pergunta que não quer se calar pode ser respondida muito facilmente uma vez que a maior
confusão feita aí fora é entre Javabeans e EJB.
Enterprise Java Beans é uma arquitetura de componentes multi-plataforma para o desenvolvi-
mento de aplicações Java muiti-tier, distribuídas, escaláveis e orientadas a objetos. O objetivo da
arquitetura EJB é facilitar o trabalho do desenvolvedor para que ele não tenha que se preocupar
com aspectos de infra-estrutura.
Podemos usar beans por diversos motivos, normalmente as classes de modelo da nossa
aplicação costumam ser java beans.
Existem três tipos de EJBs:
• 1. Session Bean - é o tipo mais simples de EJB, pode ter estado (stateful) ou não ter
(stateless);
• 2. Entity Bean - mapeiam tabelas de um banco de dados relacional através de um arquivo
de mapeamento. Na prática cada objeto entity representa uma linha de uma tabela. Existe
uma linguagem de query específica para buscar entitys chamada EQL;
• 3. MDB - são consumidores assincronos de mensagens de filas / tópicos JMS.
Na teoria, o uso de EJBs tornaria mais fácil escrever aplicações empresariais como compo-
nentes provendo um conjunto de serviços automáticos para suportar aplicações transacionais, o
que não acontece na prática.
46
48. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
7.2 JSTL
Em lições anteriores mostramos alguns problemas como: a dificuldade de construir páginas
JSPs bem organizadas; web designers normalmente não programam em Java, o que causa difi-
culdades na interação entre desenvolvedores e web designers. Seguindo a idéia de melhorar o
código java que precisa de uma maneira ou de outra ser escrito na página jsp, a Sun sugeriu o
uso da Java Server Pages Standard Tag Library: a JSTL.
A JSTL é a API que encapsulou em tags simples toda a funcionalidade que diversas páginas
web precisam, como controle de laços (fors), controle de fluxo do tipo if/else, manipulação de
dados xml e internacionalização de sua aplicação. Consiste em uma coleção de bibliotecas,
tendo cada uma um propósito bem definido, que permitem escrever páginas JSPs sem código
Java, aumentando assim a legibilidade do código e a interação entre desenvolvedores e web
designers.
Existe também uma outra parte famosa da JSTL, aquela que acessa banco de dados e per-
mite escrever códigos SQL na nossa página, mas às vezes o designer não conhece java, muito
menos SQL. O uso de tal parte da JSTL é desencorajado. A JSTL foi a forma encontrada de
padronizar o trabalho de milhares de programadores de páginas JSP.
Muitas páginas JSP no mundo ainda possuem muitos pedaços de scriplets espalhados dentro
dela mesma. Recomendamos a todos os nossos alunos que optarem pelo jsp como camada de
visualização que utilizem a jstl e outras bibliotecas de tag para evitar o código incompreensível que
pode ser gerado com scriplets. O código das scriplets mais confundem do que ajudam, tornando
a manutenção da página jsp cada vez mais custosa para o programador e para a empresa.
Para instalar a implementação mais famosa da JSTL basta baixar a mesma no site do apache:
http://www.apache.org
Bibliotecas JSTL padrão
Biblioteca Prefixo URI Tipos de uso Exemplo
JSTL
core c */core .acesso e modificação <c:forEach>
de dados em memória;
.comandos condicionais
e loops;
processamento x */xml .Parsing** de documentos <x:forEach>
de xml .impressão de partes de
documentos XML;
.tomada de decisão base-
ado no conteúdo do XML;
internacionalização fmt */fmt .Leitura e impressão <fmt:formatDate>
e formatação de números e datas
.ajuda a aplicação a
funcionar em mais de
uma língua;
acesso a banco de sql */sql .Leitura e escrita em <sql:query>
dados via SQL banco de dados;
* http://java.sun.com/jstl
**Parsing = Leitura
47
49. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Instalando:
1. Faça o download em : http://www.apache.org/dist/jakarta/taglibs/standard/
2. Descompacte o arquivo e copie:
a) /jakarta-taglibs-standard-1.*/tld/* para WEB-INF
b) /jakarta-taglibs-standard-1.*/lib/* para WEB-INF/lib
3. Adicione essas informações no web.xml:
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
48
50. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
4. Por fim, na página JSP, declare os tipos que for utilizar:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
Explicando a sintaxe
Cada tag faz parte uma biblioteca JSTL e realiza um determinado tipo de processamento
(equivalente a código Java dentro de JSP). Uma página JSTL pode utilizar várias bibliotecas
JSTLs. Na primeira linha, temos a seguinte tag:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
Essa declaração informa ao compilador que é utilizada uma biblioteca cujas tags serão reco-
nhecidos pelo prefixo "fmt", de modo a evitar possíveis conflitos com tags de mesmo nome de
outras bibliotecas. A biblioteca de tags é identificada pelo atributo uri. Veja:
Exemplo de página JSTL:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<body bgcolor="#FF0000">
<jsp:useBean id="now" class="java.util.Date"/><br>
Short Version: <fmt:formatDate value="${now}" />
Long Version: <fmt:formatDate value="${now}" dateStyle="full"/>
</body>
</html>
A tag padrão <jsp:useBean> é utilizada para instanciar um objeto java.util.Date (inicializado
por padrão com a data e hora atuais do sistema).
A variável now, criada pelo tag <jsp:useBean>, é depois referenciada dentro do atributo value
dos tags <fmt:formatDate>, que aparece duas vezes na página.
Observe que o atributo dateStyle do tag <fmt:formatDate> define se será utilizado um formato
resumido da data ou um formato longo.
O exemplo apresenta a data atual em dois formatos: um curto e outro longo.
No caso o resultado da hora das versões:
Short Version: 24/05/2007
Long Version: Quinta-Feira, 24 de Maio de 2007
Observe que não existe nenhum código Java.
49
51. Capítulo 8
Servlets: Criação e Ciclo
8.1 O que são Servlets?
No começo, a web foi basicamente utilizada para disponibilizar conteúdo estático. Da neces-
sidade de gerar conteúdo dinâmico surgiram primeiro os programas de CGI (Common Gateway
Interface). No entanto, a primeira tecnologia java que tinha a finalidade de oferecer conteúdo
dinâmico foi "Servlet".
Servlets são programas java que executam em associação com servidores web através do
modelo ’request/response’, ou seja, lidando com características típicas do protocolo HTTP, como
os métodos GET, POST, com os Cookies etc.
Servlets não possuem interface gráfica e trabalham não só com servidores web mas com
vários tipos de servidores, uma vez que sua API não contém explicitamente especificações ao
ambiente do servidor. Além disso, são carregadas apenas uma vez e, por serem multi-thread,
podem atender a mais de uma solicitação de uma só vez. Esta peculiaridade que a torna mais
rápida que um programa CGI comum.
Exemplo de arquitetura de um servlet:
50
52. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
OBS.: Thread é uma forma de um processo dividir-se em mais de uma tarefa que podem ser
executadas simultaneamente. Uma thread permite que o usuário de programa use uma funcio-
nalidade do ambiente enquanto outras threads realizam outros cálculos e operações.
O servidor interage com o servlet através de uma interface padrão, que é:
Interface javax.servlet.Servlet.
Ela define os métodos init, service e destroy, que são responsáveis pelo ciclo de vida de um
servlet. O comportamento das servlets que veremos adiante é definido na classe HttpServlet do
pacote javax.servlet. Eles se aplicam às servlets que trabalham através do protocolo Http.
8.2 Criar o primeiro Servlet
Depois da instalação e configuração do Tomcat seguimos basicamente seis etapas para es-
crever o seu servlet a executá-lo.
51
53. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Primeiro:
Crie um diretório chamado teste no diretório webapps do Tomcat. É importante o nome do
diretório, pois ele irá aparecer na URL do browser. Crie também um diretório chamado WEB-INF
dentro do teste, e dentro de WEB-INF crie o diretório classes.
Segundo:
Preparamos então o código-fonte e salvamos no diretório classes do contexto.Preparamos
então o código-fonte e salvamos no diretório classes do contexto (arquivo deve ter o mesmo
nome da classe, da maneira “java” de ser).
___________________________________________________________________________________
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTeste extends HttpServlet {
private PrintWriter out;
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException{
response.setContentType("text/html");
saida = response.getWriter();
saida.println("<HTML>");
saida.println( "<HEAD>");
saida.println( "<TITLE> Teste</TITLE>");
saida.println( "<BODY>");
saida.println( "Primeiro Servlet.");
saida.println( "</BODY>");
saida.println("</HTML>");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException{
doGet(request, response);
}
}
___________________________________________________________________________________
Terceiro:
Compilamos então o código-fonte anterior. Exemplo:
$ javac -classpath /opt/install/apache-tomcat-6.0.10/lib/servlet-api.jar:. -d classes ServletTeste.java
, onde
52
54. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
-classpath <pasta>:<pasta> - define os diretórios que serão usados como classpath ()
-d <pasta> - define o diretório para onde vai o arquivo compilado ( .class).
Quarto: Criamos o ’web.xml’ e o colocamos no diretório /WEB-INF do contexto. A criação
do básico do web.xml é feita da seguinte maneira (a explicação deste primeiro web.xml é mais
superficial. Um arquivo web.xml mais prático vai ser criado mais pra frente):
___________________________________________________________________________________
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- |1|>
<!DOCTYPE web-app <!-- |2|>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app> <!-- |3|>
<display-name>Minha Aplicacao Web</display-name> <!-- |4|>
<description> <!-- |5|>
Esta é a versão XX de uma aplicação web que faz uso de servlet e jsp e serve
para automatizar tal coisa.
</description>
<context-param> <!-- |6|>
<param-name>webmaster</param-name> <!-- |7|>
<param-value>meuendereco@minhaempresa.com</param-value> <!-- |8|>
<description>
Endereco de email do administrador para quem questoes e comentarios
devem ser enviados.
</description>
</context-param>
<servlet> <!-- |9|>
<servlet-name>meuServlet</servlet-name> <!-- |10|>
<description>
Servlet usado para blablabla...
</description>
<servlet-class>com.meu.pacote.NomedoServlet</servlet-class> <!-- |11|>
<init-param> <!-- |12|>
<param-name>listaOrdens</param-name>
<param-value>com.minhaempresa.minhasAcoes.ListaOrdensAcoes</param-value>
</init-param>
<load-on-startup>5</load-on-startup> <!-- |13|>
</servlet>
<servlet-mapping> <!-- |14|>
<servlet-name>meuServlet</servlet-name>
<url-pattern>/meuServlet</url-pattern>
</servlet-mapping>
53
55. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
<session-config> <!-- |15|>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list> <!-- |16|>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
___________________________________________________________________________________
Explicações gerais do web.xml:
|1| - Esta é a DTD (Document Type Definition) para os deployments descriptors da versão da
API Servlet. Os deployments descriptors também devem incluir um DOCTYPE |2|.
|3| - A partir daqui começam as descrições gerais da aplicação. A tag web-app é a raiz
dos deployment descriptor para as aplicações web. Nela, as tags devem obrigatoriamente estar
organizadas na seguinte ordem imposta pela DTD inclusa acima:
web-app <(icon?, display-name?, description?, distributable?, context-param*,
filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?,
mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*,
resource-ref*, security-constraint*, login-config?, security-role*, env-entry*,
ejb-ref*, ejb-local-ref*)>
Onde uma "?"indica que a tag pode aparecer 0 ou 1 vez e o "*"indica 0 ou mais vezes.
|4| - Define um nome a ser mostrado para a aplicação. Não tem relação com o context-path,
portanto, essa configuração não vai alterar a maneira de acesso da aplicação.
|5| - Descrição para a aplicação web.
|6| - Parâmetro de inicialização que será utilizado por toda a aplicação. Valores definidos
nessa tag podem ser recuperados em um servlet ou uma jsp pela chamada do método:
String param = getServletContext().getInitParameter("name");
, onde "nome"deve coincidir com o valor definido na subtag <param-name>. Pode-se definir
também qualquer número de paramentros de inicialização que forem necessários. Incluindo o
zero.
|7| - Nome do parâmetro de inicialização.
|8| - Valor do parâmetro.
54
56. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
|9| - Definições para os servlets que fazem parte da aplicação, incluindo parâmetros de inicia-
lização. No Tomcat, pode-se também enviar requests para servlets não listados aqui da seguinte
maneira:
http://localhost:8080/diretório_raiz/servlet/Nome_da_classe
Entretanto, esse uso não é garantidamente portável. Isso também torna referências relativas
a recursos usados pelo servlet mais complexas. Então definir todos os servlets é o recomendado.
Parâmetros de inicialização do servlet podem ser recuperados em um servlet ou jsp da seguinte
maneira:
String value = getServletConfig().getInitParameter("nome");
onde "nome"deve coincidir com o valor definido na subtag <param-name> para algum dos
parâmetros. Pode-se definir também qualquer quantidade de servlets incluindo zero.
|10| - Nome do servlet. É uma tag obrigatória.
|11| - Tag usada para indicar o pacote (se houver) e a classe (qualificada) que representa o
servlet definido. Outra tag obrigatória.
|12| - Lista de parâmetros de inicialização referentes apenas a esse servlet. Pode-se usar
quantos <init-param> quiser inclusive zero.
|13| - Indica que este servlet deve ser carregado (instanciado e ter seu método init() cha-
mado) quando a aplicação for iniciada. O conteúdo desse elemento deve ser um inteiro indicando
a ordem na qual os servlets serão carregados. Se o valor é negativo, ou não é apresentado, o
container é livre para carregar o servlet a qualquer hora que escolher. Se o valor é um inteiro
positivo ou 0 (zero), o container deve carregar e inicializar o servlet assim que a aplicação é inici-
ada. O container deve garantir que servlet marcados com inteiros menores devem ser carregados
antes de servlets marcados com inteiros de valores altos. O Container pode escolher a ordem
para carregar servlet marcados com o mesmo valor em load-on-startup.
|14| - Como já explicado, a tag <serlvet-mapping> define um mapeamento que é usado pelo
servlet container para traduzir um request URI para um servlet em particular. Pode-se definir
qualquer número de mapeamentos para serlvets, incluindo zero. Tambem é permitido fazer mais
de um mapeamento para um mesmo servlet.
|15| - Define um timeout default para as sessions de sua aplicação, em minutos. A partir de um
serlvet ou JSP pode-se modificar manualmente o timeout para uma session em particular usando
dinamicamente os métodos.
HttpSession.getMaxInactiveInterval() e
HttpSession.setMaxInactiveInterval(int interval).
|16| - Lista de arquivos que serão procurados quando alguém acessar o diretório virtual da
aplicação. Os arquivos são listados em ordem de prioridade, de modo que os primeiros serão
55
57. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
procurados antes e, caso não sejam encontrados, o servlet container tentará usar o próximo da
lista.
Quinto:
Iniciar o Tomcat. Caso já esteja iniciado, ignore esta etapa.
Sexto:
Chamar o servlet a partir de um browser pela URL já demonstrada (usando a porta 8080):
http://localhost:8080/teste/Teste
Em lições posteriores serão melhor explicados os métodos usados no código fonte do Servlet.
8.3 Um Exemplo
Mostrarei aqui um exemplo mais prático. Nele criamos os diretórios na pasta webapps do
Tomcat, criamos um web.xml, criamos um servlet e uma página com um formulário.
Organização das pastas no tomcat(como já mostrado, a pasta padrão do Tomcat no nosso
caso é: /apache-tomcat-6.0.10):
+ apache-tomcat-6.0.10
| + webapps
| | + exemplo1
| | | | form.html
| | | + WEB-INF
| | | | web.xml
| | | | + classes
| | | | | Exemplo.class
| | | | -
| | | -
| | -
| -
-
Organização das pastas de projeto:
+ projetos
| + exemplo1
| | + web
| | | form.html
| | -
| | + etc
| | | web.xml
| | -
| | + src
56
58. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
| | | Exemplo.java
| | -
| | + classes
| | | Exemplo.class (Será criado na compilação do Exemplo.java)
| | -
| -
-
.Criando o arquivo ’form.html’ na pasta: projetos/exemplo1/web/
______________________________________________________________________________
<html>
<head>
<title>Exemplo1 CDTC</title>
</head>
<body>
<h1>Exemplo1 CDTC</h1>
<hr />
<p> Digite um valor: </p>
<form action="acao.do" method="post">
<input type="text" name="valor" />
<input type="submit" />
</form>
</body>
</html>
_______________________________________________________________________________
Criar arquivo Exemplo.java na pasta projetos/exemplo1/src/
________________________________________________________________________________
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Exemplo extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Você selecionou: <br />" );
String escolha = request.getParameter("color");
out.println(escolha + "<br />");
}
}
________________________________________________________________________________
.Criar arquivo web.xml na pasta projetos/exemplo1/etc/
57