Buscar

Desenvolvimento de Aplicações para Internet Material Apoio AOL 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Ambiente de desenvolvimento
Para desenvolver aplicações Web é necessária a utilização de boas ferramentas e de um local para execução e teste dos artefatos produzidos. Assim, o desenvolvedor tem apoio ferramental de softwares, que o ajudam na escrita do código e na visualização do resultado de pequenas porções de seu projeto no local de execução.
Atualmente, já existem editores de código on-line (via Web) que permitem programação, tanto da parte do cliente quanto da parte do servidor, com testes também realizados por meio do navegador. No entanto, as ferramentas mais robustas e completas ainda são do tipo desktop, instaladas no computador do desenvolvedor, com servidor integrado a elas.
CURIOSIDADE
Para o desenvolvimento para Web usando Java, o desenvolvedor necessita de uma máquina com bom processador e memória RAM ideal de 4 GB ou superior, para utilização das ferramentas de edição e para manter um servidor local. Essa base de software necessária pode ser instalada nos mais comuns sistemas operacionais: Windows, Linux e MacOS.
O servidor usado para testes de códigos em desenvolvimento, geralmente, fica na própria máquina do desenvolvedor ou, em outra, na rede local de empresas de desenvolvimento.
Após o código testado em ambiente local, o software é validado e enviado para o servidor de produção, que é aquele acessado pelos clientes. Esse processo é chamado de deployment.
Em sistemas críticos ou muito complexos, pode inclusive existir um servidor intermediário, chamado de staging server, ou servidor de estágio, que é um ambiente idêntico ao de produção ou muito parecido com ele (incluindo software, hardware e configuração).
No cotidiano das empresas de desenvolvimento de software, geralmente existe uma equipe de desenvolvedores trabalhando na mesma base de código, mas em ambientes de desenvolvimento diferentes. Nesse caso, são utilizadas ferramentas de gestão de configuração como o GIT e o Subversion, que controlam conflitos em código e replicam as alterações.
Para minimizar e melhorar o trabalho dos desenvolvedores em montar o ambiente de desenvolvimento, surgiram os ambientes de desenvolvimento integrado, do inglês Integrated Development Environment (IDE). Eles vão muito além de apoiar na edição de código fonte, também incluem a parte de realização de testes (unitários e de integração), o link com o compilador ou interpretador, a depuração de código para achar erros e o deployment.
Existem vários softwares do tipo IDE no mercado, como o Visual Studio, o NetBeans, o BlueJ, o IntelliJ e o Eclipse. Neste conteúdo, abordaremos Java como linguagem de programação, Java EE como plataforma de recursos, Eclipse como o IDE e como contêiner Web, o Apache Tomcat. Como sistema operacional utilizaremos o Windows, mas o desenvolvedor tem a liberdade de utilizar outro software IDE, um sistema operacional ou usar um misto de sistemas na utilização da tecnologia Java.
De acordo com o site oficial do Java, em 2019, 3 bilhões de dispositivos executam Java e existem 12 milhões de desenvolvedores pelo mundo.
Além desse alto número de dispositivos e da grande comunidade de desenvolvimento, a utilização de Java agrega vantagens em relação ao uso de outras tecnologias no lado do servidor, como:
Clique nos botões para saber mais
De código portável
+
Orientada a objetos
+
Segura
+
Multi-threaded
+
Robusta
+
Com evolução contínua
+
De boa disponibilidade de IDEs
+
Gratuita
+
Apesar dessas vantagens, Java apresenta alguns problemas que podem ser citados, como a significativa verbosidade, que corresponde à necessidade de grande volume de escrita de código, e velocidade de processamento. Esse último ponto vem sendo melhorado constantemente, porém a comunidade ainda reclama de lentidão, sobretudo por lembrar do passado de má integração dos chamados Applets no sistema operacional Windows, em que o usuário sentia a demora na abertura das aplicações.
Nessa questão de melhoria de desempenho, vale ressaltar que Java adotou um conceito de implementação Just in Time (JIT), em que o código em linguagem de execução é gerado apenas quando o aplicativo chama o método correspondente ao código, guardando o resultado para chamadas subsequentes.
Em relação à verbosidade, outras linguagens se aproveitaram desse fato para ganhar mercado. Esse é o caso que ocorreu na Kotlin, linguagem contemporânea que prega simplicidade e grande expressividade no código. 
Desse modo, Kotlin vem com a promessa de suprir a necessidade de desenvolvimento rápido, com pouco código, sobretudo em dispositivos móveis, funcionando com plena integração com Java, que anteriormente era a única linguagem oficial de desenvolvimento para Android.
A título de curiosidade, é apresentado, no Diagrama 1, o modo de execução de uma aplicação em Java, desde a leitura de seu código-fonte até a geração dos bytecodes e interpretação usando a máquina virtual. É esse fluxo que também funciona quando se utiliza um contêiner Web, servindo uma página dinâmica ao usuário que é resultado de processamento na máquina virtual.
Diagrama 1. Modo de execução de aplicação em Java. Fonte: SEBESTA, 2011. (Adaptado).
Como pode ser visto no Diagrama 1, após a leitura dos arquivos de código-fonte, são gerados arquivos em código de máquina, intermediários para execução, que são chamados bytecodes.
O interpretador Java lê os bytecodes e os junta aos arquivos do tipo Java ARchive (JAR), que compactam bibliotecas de classes e metadados associados, constituindo assim o programa.
Vale ressaltar que, uma vez gerados os arquivos de bytecodes com a extensão .class, não há necessidade de criá-los novamente a cada nova interpretação do código, pois essa nova criação por compilação deve ocorrer apenas se arquivos de código-fonte Java forem alterados.
JAVA DEVELOPMENT KIT (JDK) E O JAVA EE WEB PROFILE SDK
Para criar uma aplicação Java, é necessário utilizar o seu kit de desenvolvimento que é chamado de JDK (Java Development Kit – Kit de Desenvolvimento Java), que é encontrado no site oficial da linguagem Java. Esse kit também pode ser encontrado como Java SE Development Kit, pois faz parte do pacote Java Standard Edition (JSE).
Vale ressaltar que esse kit é considerado o requisito mínimo essencial para o desenvolvimento em Java, já que é focado na compilação dos códigos e na execução dos bytecodes da linguagem, não vindo com um contêiner para Servlets, por exemplo. Para a execução dos bytecodes, o JDK contém o chamado Java Runtime Environment (JRE).
O JDK consiste, principalmente, de um compilador (javac), de uma ferramenta de execução (java), de um utilitário para auxílio na geração de documentação (javadoc) e de bibliotecas básicas.
Para o download de todos os produtos da tecnologia Java, utilizamos o site oficial. Na Figura 1, apresentada a seguir, é possível ver a parte da página Web de distribuição do JDK, aqui chamado de Java SE Development Kit, em sua versão 13. Utilizaremos a versão executável de 64 bits para Windows, de arquivo nomeado como jdk-13_windows-x64_bin.exe.
Figura 1. Captura de tela da caixa para seleção da distribuição desejada do Java SE Development Kit.
Conforme visto na Figura 1, existem várias opções do JDK, atendendo os mais conhecidos e utilizados sistemas operacionais do mercado. Isso é importante para permitir que o software desenvolvido funcione em ambientes diferentes. Se não fosse desse modo, o desenvolvedor teria que produzir software de modo específico para um sistema operacional.
Após a tela inicial de apresentação, há a tela apresentada na Figura 2. Nela, é possível configurar em qual pasta ficarão os arquivos do JDK.
Figura 2. Captura da tela de configuração da instalação do JDK. 
Você pode executar o JDK sem definir a variável de ambiente PATH (caminho) ou, opcionalmente, configurá-lo para poder executar os arquivos do JDK (javac.exe, java.exe, javadoc.exe e outros) de qualquer diretório, sem ter que digitar o caminho completo do comando.
Assim, caso você opte por não definir a variável PATH, precisará especificar o caminho completo para o arquivo executável toda vezque executá-lo.
Para definir a variável PATH permanentemente, inclua o caminho completo do diretório do JDK na variável PATH do sistema operacional utilizado. Normalmente, no Windows, esse caminho completo é semelhante a C:\Program Files\Java\jdk-13\bin. Defina a variável PATH do seguinte modo no Windows:
· 1
Clique em “Iniciar”, “Painel de controle” e “Sistema”.
· 2
Clique em “Avançado” e, em seguida, “Variáveis de ambiente”.
· 3
Adicione o local da pasta bin da instalação do JDK na variável PATH em “Variáveis do sistema”.
Na Figura 3, é apresentada a tela de configuração que adiciona o caminho do compilador e outros executáveis Java nas variáveis de ambiente do Windows.
Figura 3. Captura de tela de como adicionar o caminho do compilador Java nas variáveis de ambiente do Windows. 
Conforme visto na Figura 3, é relativamente fácil inserir o caminho para os utilitários Java nas variáveis de ambiente do sistema Windows. Conforme dito anteriormente, essa é uma tarefa opcional, mas que pode ajudar o desenvolvedor em seu trabalho diário, principalmente caso ele deseje testar códigos via linha de comando.
DICA
Tradicionalmente, os fornecedores da linguagem Java disponibilizam um tutorial básico a cada nova versão, que é chamado First Cup (primeiro copo). Esse nome faz uma alusão ao logo de Java, que é uma xícara de café, então representa uma metáfora ao primeiro copo de café tomado. 
Considerando o foco no desenvolvimento e na execução de aplicações Web, relatamos que existe um pacote específico chamado Java EE Web Profile SDK, que contém o servidor de aplicações chamado GlassFish Open Source Edition, que funciona também como servidor Web.
A título de ilustração, utilizamos o download do arquivo compactado do Java EE 8 Web Profile SDK, conforme tela de disponibilização do fornecedor oficial, que pode ser vista na Figura 4. Também utilizaremos o Apache Tomcat, dispensando o uso do GlassFish em nossos exemplos, já que o Tomcat é leve e mais utilizado atualmente em pequenos projetos.
Figura 4. Captura de tela da página de download do SDK. 
Após realizar o download do arquivo, é necessário realizar sua descompactação. Em seguida, abra a pasta em que os arquivos foram descompactados e execute o arquivo glassfish5\glassfish\bin\startserv.bat. Com isso, será iniciado o funcionamento do servidor Glassfish, que responderá requisições Web.
Então, para verificar seu funcionamento, basta acessar http://localhost:8080 em seu navegador, para visualizar a página exemplo do Glassfish. Sua área administrativa pode ser vista em http://localhost:4848, conforme apresentado na Figura 5.
Figura 5. Captura de tela de gerenciamento Web do Glassfish.
A área administrativa Web do Glassfish pode ser considerada como um recurso importante que facilita o trabalho de quem administra o servidor, evitando a necessidade de conexão por terminal na máquina, que é menos intuitiva do que esse modo de interação gráfica, como o status e as configurações de servidor. Por padrão, o acesso a essa área não vem com a proteção por senha, então recomendamos que esse recurso seja ativado especialmente no ambiente de produção.
DICA
O Glassfish utiliza a porta 8080 para servir as páginas. Apesar desse número de porta ser considerado o alternativo para o protocolo HTTP, ele precisa ser explicitamente digitado pelo usuário no navegador. Portanto, recomendamos a alteração dessa configuração para que o servidor responda na porta 80, que é a padrão.
ECLIPSE
O projeto Eclipse, que visa apoiar no desenvolvimento de software, foi iniciado na empresa IBM, que desenvolveu a primeira versão do produto e o doou como software livre para a comunidade, que, assim como outras grandes empresas, tem evoluído constantemente o conjunto de ferramentas do projeto.
Eclipse é um ambiente integrado de desenvolvimento (IDE), famoso pelo suporte à linguagem, mas suporta várias outras linguagens como C/C++, PHP, ColdFusion e Python. Ele foi desenvolvido em Java e segue o modelo de software livre.
O projeto teve crescimento significativo e tem sido muito bem-sucedido em termos de qualidade de seus recursos. Esse cenário deu tamanha visibilidade ao projeto que foi criado, em 2004, uma fundação chamada Eclipse Foundation.
CURIOSIDADE 
Além de receber recursos financeiros de grandes empresas da área de Tecnologia da Informação, a Eclipse Foundation solicita de usuários e desenvolvedores o envio de contribuições opcionais via pagamento por cartão de crédito.
Em relação às versões do Eclipse, existe um histórico de evolução contínua, em que os nomes das versões estavam relacionados à ciência até o ano de 2018. As versões nomeadas após Calisto (2006), Europa (2007) e Ganimedes (2008), que são luas de Júpiter, foram seguidas por uma versão com o nome de Galileu (2009), o cientista descobridor dessas luas. Essas versões foram seguidas por dois nomes com temas solares, Helios (2010), da mitologia grega, e Índigo (2011), uma das sete cores do arco-íris, que é produzido pela luz do sol. A versão subsequente, Juno (2012), tem um significado triplo: uma figura mitológica romana, um asteroide e uma espaçonave para Júpiter.
Já as versões Kepler (2013), Luna (2014) e Mars (2015), continuaram o tema da astronomia e, em seguida, Néon (2016) e Oxygen (2017), constituem o tema relacionado a elementos químicos. Já Photon (2018) representou um retorno aos nomes solares. A partir de 2018, o esquema alfabético e de nomes científicos foi abandonado e, em vez disso, os lançamentos foram nomeados pela data de liberação, com o ano seguido pelo mês, no formato AAAA-MM, por exemplo: 2019-09.
Como já sabemos, há uma grande evolução de tecnologias na área de computação e uma característica importante do Eclipse para suportar tecnologias emergentes, além do fato de ele ser anualmente atualizado, é sua extensibilidade a plug-ins, incluindo o de terceiros.
Nesse sentido, para agregar, divulgar, obter avaliações e disponibilizar os plug-ins desenvolvidos para o ambiente, foi criado o site Eclipse Marketplace, que conta, em 2019, com mais de 1.700 soluções, sendo 119 na categoria de apoio ao desenvolvimento Web.
// Eclipse Web Tools Platform
O projeto Eclipse Web Tools Platform (WTP) consiste em um pacote de software que estende a plataforma Eclipse com ferramentas específicas para o desenvolvimento de aplicativos Web e Java EE.
O WTP inclui auxílios textuais e editores gráficos para uma variedade de idiomas, aplicativos internos, simplificando o desenvolvimento, e ferramentas e APIs para oferecer suporte à implantação, à execução e ao teste dos aplicativos Web.
As evoluções mais recentes do WTP incluem melhor aderência aos recursos da linguagem HTML 5, com atualizações no modelo de conteúdo (usado na validação e no assistente de conteúdo), e melhorias na função de auto completar o código, que busca elementos de hipertexto, de CSS e de JavaScript, e os apresenta ao desenvolvedor, facilitando a digitação do código.
// Instalando o Eclipse 
Como o objetivo é o desenvolvimento Web, indicamos o download do pacote que contém a WTP, atualmente chamado de “Eclipse IDE for Enterprise Java Developers”. Isso deve ser feito ao acessar o site do Eclipse, clicando em “download” e escolhendo a versão desejada, de acordo com o sistema operacional do desenvolvedor. Indicamos o uso da versão estável mais recente.
Caso o desenvolvedor já tenha o Eclipse em seu computador, é possível adicionar ou atualizar a WTP utilizando o Eclipse Marketplace.
Na Figura 6, é possível ver a página do site que disponibiliza a versão do Eclipse que dá suporte ao desenvolvimento de aplicações Web.
Figura 6. Captura de tela do site que contém o arquivo de instalação do Eclipse.
Após realizar o download do arquivo de 353 megabytes, conforme visto na Figura 6, descompacte-o em alguma pasta de seu sistema de arquivos.
Após a descompactação do arquivo, você deve iniciá-lo diretamente pelo executável. Recomenda-se a criação de um atalho para facilitar a tarefa de iniciá-lo.
A tela de abertura do Eclipse pode ser vista na Figura 7, que contém um guiade boas-vindas.
Figura 7. Captura da tela de abertura do Eclipse.
Nessa tela inicial, com guia de boas-vindas, são apresentados atalhos para os primeiros passos e links de ajuda, que são itens úteis para o usuário com pouca experiência na plataforma. Caso o usuário não precise desse guia, ele pode desabilitá-lo, desmarcando a opção para esse fim, que está localizada no canto inferior direito da tela.
O Eclipse ainda não apresenta uma versão oficial assinada de tradução total de seus controles para o português brasileiro. No entanto, existe o projeto Babel, que disponibiliza uma versão dessa tradução, contemplando um bom percentual de expressões traduzidas. Desse modo, recomendamos que apenas o desenvolvedor que tenha pouco ou nenhum conhecimento do idioma inglês utilize essa tradução.
APACHE TOMCAT
O servidor Apache Tomcat foi criado no início da tecnologia de geração de páginas via Servlets, com a junção, em 1999, de dois projetos: o Java Web Server, da empresa Sun Microsystems, e o JServ, de iniciativa da Apache Software Foundation (ASF), que já detinha expertise com o Apache Web Server.
O Tomcat implementa várias especificações Java EE voltadas para suportar o funcionamento de aplicações Web feitas em Java, incluindo Java Servlet, JavaServer Pages (JSP), Java Expression Language (EL) e WebSocket, fornecendo um ambiente de servidor Web HTTP do tipo "Java puro", no qual o código Java pode ser executado.
CURIOSIDADE
O nome Tomcat, de acordo com uma mensagem da colaboradora da Sun, Justyna Horwat, em 2003, surgiu porque seu idealizador, James Duncan Davidson, considerou que um dia a tecnologia seria foco de um livro, como os de O'reilly, que têm animais em sua capa. Então, ele criou o "Tomcat", o gato amarelo de sua logo, por representar animais que cuidam de si mesmos, incluindo o senso aguçado de autodefesa.
Ele alegou também que a semelhança com o nome de um avião a jato “F-14 Tomcat” é mera coincidência.
O Tomcat é de código livre, sendo desenvolvido e mantido por uma comunidade aberta de desenvolvedores, sob a coordenação da ASF com a licença Apache 2.0, que regulamenta suas regras de uso e distribuição.
Veja, na Tabela 1, os dados históricos das principais versões do Tomcat e o número da versão, ano de lançamento de sua versão estável, descrição de componentes e Java Development Kit (JDK) suportado.
Tabela 1. Histórico das principais versões do Apache Tomcat. Fonte: Tomcat, 2019.
O servidor Tomcat inclui uma aplicação Web chamada Tomcat Manager, que é instalada no contexto/manager e por meio de qualquer navegador. Provê funcionalidades básicas para gerenciar as aplicações Web que estão executando no servidor.
A estrutura de diretórios/pastas do Tomcat inclui:
Clique nos botões para saber mais
Bin
+
Common
+
Conf
+
Logs
+
Server
+
Shared
+
Webapps
+
Work
+
O Tomcat é formado por diferentes componentes de serviço. A seguir é apresentado um resumo de seus componentes principais:
Clique nos cards para saber mais
Implementa o contêiner Web da especificação Servlet da plataforma Java EE. É, desse modo, um Servlet contêiner, sendo o primeiro serviço iniciado no servidor. Além de contêiner para aplicações Web, a configuração do serviço e os aspectos relativos à segurança das aplicações são responsabilidades do Catalina;
Realiza o suporte do protocolo HTTP 1.1, servindo as páginas processadas pelo Catalina, documentos estáticos HTML, aplicações CGI, e todas as demais funções de um servidor Web convencional. O componente Coyote JK oferece a mesma interface idêntica de um servidor Web HTTP para o Catalina, mas em vez de processar os dados internamente, redireciona-os por meio do protocolo JK (AJP - Apache JServ Protocol) para um outro servidor, geralmente o Apache Web Server;
Faz o processamento (parser/compilador) JSP, interpretando e compilando os códigos JSP, taglibs e JSTL, gerenciando-os em uma fila. Os arquivos JSP são processados e transformados em código Java de Servlets, para que a leitura seja feita pelo Catalina.
Apresentados e definidos esses componentes, é possível compreender o detalhamento da arquitetura do Tomcat, de acordo com o esquema apresentado no Diagrama 2.
Diagrama 2. Arquitetura do Tomcat. Fonte: DOUDOUX, 2019. (Adaptado).
Conforme pode ser visto no Diagrama 2, a arquitetura do Tomcat é composta por vários elementos:
Clique nos botões para saber mais
O entendimento dessa arquitetura é fundamental para a configuração do servidor, que deve ser feita pelo preenchimento correto do arquivo server.xml, cuja definição básica é apresentada a seguir.
01.      <Server>
02.             <GlobalNamingResources/>
03.             <Service>
04.                          <Connector/>
05.                          <Engine>
06.                                        <Host>
07.                                                      <Context></Context>
08.                                        </Host>
09.                          </Engine>
10.              </Service>
11.      </Server>
É importante ressaltar que o arquivo server.xml já vem pré-configurado na instalação do servidor e ele funciona para os casos de uso simples, com um único host sendo utilizado pela aplicação Web.
Para uma melhor compreensão de como o Tomcat pode abrigar e servir vários sites, nos chamados hosts virtuais, é apresentada no Diagrama 3.
Diagrama 3. Cenário de hosts virtuais no Tomcat. Fonte: RAMKITECH, 2012. (Adaptado)
De acordo com a arquitetura apresentada no Diagrama 3, o Tomcat está respondendo por requisições HTTP de três sites em um mesmo IP. Para isso, esses três domínios foram configurados como hosts virtuais no Tomcat e os arquivos de cada site foram separados em pastas diferentes.
Nesse funcionamento, o servidor verifica qual o endereço solicitado e entrega as páginas de acordo com o contexto de cada aplicação Web. Essa arquitetura maximiza a utilização do servidor, que é único na máquina virtual, mas que se comporta, na prática, como vários servidores independentes.
// Instalando o Apache Tomcat
A instalação do Tomcat é simples e trivial, assim como no caso do JDK, funcionando por meio da obtenção do arquivo de download em seu site, de acordo com a distribuição desejada. Em nosso caso, optamos pela distribuição da versão 9.0.26, chamada “32-bit/64-bit Windows Service Installer”, que é bem leve, tendo cerca de 11 megabytes, uma das principais qualidades desse software.
Ao executar o arquivo de instalação, é apresentado um resumo de características de apresentação do Tomcat e o usuário deve aceitar a licença de utilização. Em seguida, é apresentada a tela de configuração básica do software, incluindo a definição das portas a serem utilizadas e a senha de administração do serviço, conforme Figura 8.
Figura 8. Captura da tela de configuração básica do Tomcat, apresentada no momento de sua instalação.
A partir dos dados apresentados na Figura 8, é possível ver que o Tomcat usa a porta HTTP fora do padrão da Web, sendo a de número 8080, em vez da 80. Então, recomendamos a realização dessa alteração para que não seja preciso adicionar o número da porta na URL do navegador. O mesmo ocorre para a conexão segura, em que o Tomcat usa a porta 8443, em vez da 443, que é a padrão da Web (essa última configuração pode ser alterada no arquivo server.xml).
Servlet API
Um Servlet é uma classe Java utilizada para estender as capacidades dos servidores Web, que atuam respondendo requisições HTTP. Com o uso dos Servlets, tais servidores passam a poder entregar código dinâmico a partir da interação com outros sistemas e bases de dados e com a aplicação de regras de negócios, que podem estar embutidas nas lógicas de algoritmos presentes nas classes Java.
Os Servlets Java são, desse modo, a solução dessa linguagem para concorrer com outras tecnologias de processamento e geração de páginas dinâmicas, como PHP, Ruby on Rails e ASP.NET.
Para a programação de Servlets, uma API é disponibilizada pelo contêiner Web, provendo mecanismos para construção de aplicações; recebendo, realizando diversos processamentos e respondendo requisiçõesHTTP.
Um Servlet é carregado no contêiner Web na primeira vez que ele é requerido, recebendo a solicitação do usuário e respondendo a essa solicitação. Depois disso, de modo geral, o Servlet continua na memória, aguardando outras solicitações. Se houver alguma alteração no código do Servlet, esse é recarregado na memória. Isso é feito para otimizar o tempo de processamento das páginas e dispensa que o desenvolvedor tenha que reiniciar o contêiner a cada nova versão de uma aplicação.
Para criar um Servlet, o desenvolvedor deve incluir sua API no código da classe a ser criada, importando então os pacotes javax.servlet e javax.servlet.http, que fazem parte do Java EE.
De modo técnico, um Servlet é uma classe que estende a classe abstrata javax.servlet.http.HttpServlet, que, por sua vez, estende a classe javax.servlet.GenericServlet.
Geração de conteúdo dinâmico com Servlets
Agora que você já conheceu conceitos de HTML, CSS e da arquitetura do Java para Web e tem o ambiente de desenvolvimento instalado em seu computador, apresentaremos a parte básica de geração de páginas dinâmicas utilizando Servlets.
É importante ressaltar que, caso o desenvolvedor já possua experiência em Java ou tenha uma aplicação funcionando em Java, basta ele entender a questão de parâmetros e de como criar as interfaces HTML para Web, para que crie sua aplicação Web.
O nosso exemplo inicial é de um Servlet que apresentará a mensagem clássica de “Olá Mundo!” ao usuário e também a data atual do servidor.
Ele foi criado com apoio do ambiente Eclipse, usando as opções “new Dynamic Web Project” e “new Servlet”, conforme apresentado na Figura 9.
Figura 9. Captura de tela da criação de um Servlet no Eclipse.
Também é necessário configurar o Eclipse para utilizar o Tomcat como contêiner Web. Isso é feito indo nas propriedades do projeto e adicionando os dados da instância do Tomcat em “Targeted Runtimes”, como pode ser visto na Figura 10.
Figura 10. Captura de tela dos dados da instância do Tomcat no Eclipse.
Ao adicionar os dados do Tomcat no Eclipse, a IDE gerenciará o contêiner Web. Assim, você não pode deixar o Tomcat funcionando como serviço do Windows, pois poderá existir conflitos de uso de portas HTTP, impedindo que o Eclipse inicie o Tomcat nele configurado.
Em seguida, realizamos a programação desejada, preenchendo o código conforme apresentado a seguir.
1.    package mypackage;
2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5. import java.text.DateFormat;
6. import java.text.SimpleDateFormat;
7. import java.util.Date;
8. import javax.servlet.ServletException;
9. import javax.servlet.annotation.WebServlet;
10. import javax.servlet.http.HttpServlet;
11. import javax.servlet.http.HttpServletRequest;
12. import javax.servlet.http.HttpServletResponse;
13.
14. @WebServlet("/Exemplo1")
15. public class Exemplo1 extends HttpServlet {
16.
17.        protected void service(HttpServletRequest request, 
             HttpServletResponse response) throws ServletException, IOException {
18.               DateFormat = new SimpleDateFormat("dd/MM/yyyy");
19.               Date = new Date();
20.               String data =dateFormat.format(date);
21.
22.               String html = "<html><head>"
23.                                       + "<title>Meu primeiro Servlet" 
24.                                       + "</title></head><body>" +
25.                                       "<h1>Olá Mundo!</h1>"+
26.                                       "<p>Data do servidor: " + data
27.                                       + "</p></body></html";
28.                PrintWriter out = response.getWriter();
29.                out.print(html);
30.                out.close();
31.           }
32.
33.   }
Na linha 1 do código, tem-se a declaração do pacote a ser utilizado. Da linha 3 à linha 12, são declaradas as importações de classes das APIs necessárias para o funcionamento dos recursos para geração da página dinâmica.
Na linha 14, existe a anotação @WebServlet, que informa ao servidor em qual endereço URL o Servlet pode ser chamado. Da linha 17 à linha 31, implementamos o comportamento do Servlet ao receber uma requisição. Nesse caso, é verificada a data do servidor nas linhas 18, 19 e 20, e gerado o texto (string) de saída da linha 22 à linha 27.
É importante notar que o código fonte do Servlet é composto de uma classe Java que contém a formação de um documento HTML, ou seja, há uma mistura significativa de linguagens que dificulta o desenvolvimento, desde a criação do código à sua manutenção. Pra minimizar essa questão, diminuindo o código Java e utilizando o HTML de forma direta (sem estar dentro de uma String Java), surgiu a tecnologia Java Server Pages (JSP), deixando o desenvolvimento mais fácil e similar ao de outras tecnologias como ASP e PHP.
Parâmetros de requisição (GET e POST)
O GET, do termo inglês que significa “obter”, é o método do protocolo HTTP mais simples e, provavelmente, o mais utilizado. Ele simplesmente aciona o servidor a partir de um endereço URL e retorna os dados da página ao navegador, que apresenta o resultado ao usuário. Assim, quando a URL é relativa a um script, ele aciona o processamento desse no servidor e recebe os dados dinâmicos que constituem a página de resultado.
Nesse método, são enviadas as seguintes informações ao servidor:
GET / HTTP1.1
Host: www.exemplo.com.br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
 Connection: Keep-Alive
Note que, além do host desejado para conexão, o cliente envia informações sobre o navegador e o sistema operacional utilizados no campo User-Agent e, em “Connection”, o tipo de conexão, que tem o valor de Keep-Alive.
Para envio de informações aos scripts via GET, utilizamos parâmetros textuais presentes na URL. Tais informações formam a chamada string de consulta, ou query string, em inglês. 
Exemplo: GET /busca/?nome=Jose%20da%20Silva
Nesse exemplo, há a expressão “/busca/”, indicando o caminho do script a ser requisitado e o caractere de interrogação, indicando o início da string de consulta. Em seguida, tem-se os parâmetros, com sua identificação (conceito semelhante a um nome de variável), o sinal de igual indicando a atribuição de um valor e, por último, o valor desejado. A expressão “%20”, que deixa estranha a URL para o usuário final, é a codificação de espaço utilizada pelos navegadores.
Essa codificação que se inicia com o símbolo de “por cento” é usada para prevenir a má interpretação de caracteres especiais, como espaços, parênteses e outros símbolos. O navegador analisa o endereço e a realização do processo de codificação e decodificação dos caracteres especiais (também chamados de caracteres de escape).
A seguir, são apresentados, na Tabela 2, os principais caracteres especiais e sua codificação nos endereços de URLs.
Tabela 2. Principais caracteres especiais e sua codificação nos endereços de URLs.
Já o POST, termo em inglês que significa “encaminhar”, é “o método geralmente utilizado para submeter dados de formulários, transferindo um conjunto de dados para o servidor no corpo da solicitação” (KURNIAWAN, 2002, p. 20).
Nesse método, são enviadas as seguintes informações ao servidor:
POST / HTTP/1.1
Host: www.exemplo.com.br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 57
Connection: Keep-Alive
nome=Jose%20da%20Silva&genero=masculine
A primeira linha indica que o POST está sendo utilizado. Os cabeçalhos Host e User-Agent são idênticos ao do método GET. Já no item Content-Type, há a informação de como o corpo do pedido foi codificado. Logo em seguida, o item Content-Length indica o comprimento dos bytes transmitidos. Após o item Connection, que tem a mesma função no GET, tem-se os dados de aplicação transmitidos, em que diferentes variáveis são separadas pelo caractere & (popularmente conhecido como “e comercial”).
É importante ressaltar que é muito comum, mas não é sempre que se tem um formulárioenviando dados por POST. É possível que um formulário submeta seus dados usando GET, com os dados de seus campos sendo transportados para a URL da página alvo da submissão. No entanto, nesse último caso, tem-se uma limitação maior da quantidade de informação que podem ser transmitidas.
Para efetuar a leitura do conteúdo de um determinado parâmetro enviado para um Servlet, é utilizado o método .getParameter ("nome"), que atua, por exemplo, em um objeto da classe HttpServletRequest, em que o “nome” se refere ao campo enviado.
Podemos citar o seguinte código para ler o conteúdo de um parâmetro:
Exemplo: String nome = request.getParameter("nome");
Agora é a hora de sintetizar tudo o que aprendemos nessa unidade. Vamos lá?!
SINTETIZANDO
Esta unidade se iniciou com os conceitos básicos de funcionamento do ambiente de desenvolvimento com a ferramenta Eclipse e com o contêiner Web Apache Tomcat, permitindo que o aluno monte seu ambiente para realizar testes práticos e para que, em um futuro próximo, ele tenha uma boa produtividade no mercado de trabalho, entendendo as possíveis arquiteturas utilizadas.
A partir da base de conceitos vista, foi feita a ampliação do conhecimento básico sobre Servlet API, que faz parte da plataforma Java EE, e de detalhes de como funciona a geração dinâmica das páginas no servidor utilizando essa tecnologia.
Como parte final desta unidade, foi mostrado como funcionam as requisições GET e POST, incluindo detalhamento de sua parametrização.

Outros materiais