Artigo Java Magazine 66 - Desenvolvendo Java para web

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Artigo da Revista Java Magazine Edição 66.

Esse artigo faz parte da revista Java Magazine edição 66. Clique aqui para ler todos os artigos desta edição

Desenvolvendo Java para web

Iniciando o desenvolvimento de aplicações web com Java

Explore a programação web com Java, entendendo seus conceitos e características, e aprenda a desenvolver, configurar e instalar uma aplicação utilizando servlets

 

De que se trata o artigo:

Este artigo trata os conceitos de servlets, visando apresentar a tecnologia aos desenvolvedores Java. Ele descreve os conceitos fundamentais de servlet e exibe uma aplicação prática demonstrando todo o potencial de utilização dos servlets.

 

Para que serve:

Este artigo serve para desenvolvedores que desejam iniciar a construção de aplicações web com Java, através dos conceitos principais e do desenvolvimento de uma aplicação de exemplo.

 

Em que situação o tema é útil:

Muitos desenvolvedores quando desejam iniciar na construção de aplicações web em Java encontram, na maioria das vezes, frameworks prontos que facilitam o desenvolvimento, mas que possuem uma série de conceitos embutidos, que não são especificados. Entre eles, o conceito de servlets. Conhecer os servlets permite não somente entender melhor esses frameworks, como também fornece ao desenvolvedor uma capacidade maior de interação com eles.

 

Desenvolvendo Java para web:

Um servlet é uma classe Java que executa do lado do servidor, atendendo a requisições HTTP e construindo informações de resposta para o cliente. Todo o gerenciamento do ciclo de vida de um servlet (carregamento, inicialização, atendimento de requisições, finalização e descarregamento) é realizado pelo Servlet Container, que é um módulo de um servidor web. Além dos servlets, uma aplicação web pode conter arquivos estáticos (HTML, JavaScript, CSS, etc.) e dinâmicos (classes Java, bibliotecas, etc.), que devem seguir uma estrutura específica de diretórios.

 Para exemplificar o conceito de servlets, este artigo apresenta uma aplicação simples, uma loja virtual, que consiste basicamente no processo de compra de CDs. O exemplo ilustra os passos necessários para a construção e configuração de servlets, criação das classes de negócio e arquivos HTML estáticos, além de mostrar como utilizar a IDE Eclipse para o desenvolvimento e execução da aplicação.

 

 

Apresentaremos em dois artigos os conceitos básicos para o desenvolvimento web na plataforma Java EE. Neste primeiro artigo abordaremos o conceito de servlets, enquanto no segundo falaremos sobre JSP. Vale ressaltar que todos os frameworks para web em Java utilizam de forma intrínseca essas tecnologias. Sendo assim, é de fundamental importância o conhecimento delas, objetivando dar aos desenvolvedores web a capacidade de explorar ao máximo as vantagens dos frameworks disponíveis no mercado.

Servidores Web e Servlets

Todo servidor que provê serviços para clientes remotos tem duas principais responsabilidades. A primeira é lidar com as requisições do cliente. A segunda é criar uma resposta que lhe será enviada como retorno. A primeira tarefa envolve programação no nível de sockets, extraindo informações das mensagens de requisição, e implementando protocolos cliente-servidor, tais como FTP e HTTP. A segunda tarefa, criar a resposta, varia de serviço para serviço. Por exemplo, no caso do servidor FTP que requisita a transferência de um arquivo do servidor, a resposta é tão simples quanto localizar um arquivo numa máquina local. Por outro lado, servidores HTTP tem de criar uma resposta dinamicamente, a qual pode envolver tarefas complicadas como: retornar informações de um banco de dados, retornar informações verificando as regras de negócio existentes e apresentar os resultados de operações seguindo um padrão de formato desejado pelos diferentes clientes.

A melhor arquitetura para atender aos servidores HTTP é dividir o código de uma aplicação em duas partes executáveis: uma que execute as tarefas de rede (conexão, desconexão, transferência de dados, etc...) e outra que trabalhe com a lógica de aplicação, permitindo que ambos os executáveis tenham uma interface entre eles. Esse tipo de separação torna possível modificar o código na lógica da aplicação sem afetar o módulo de rede. Antigamente, desenvolvedores implementavam esta arquitetura para servidores HTTP usando CGI (Common Gateway Interface). De um lado da interface temos o servidor web principal e do outro lado da interface os scripts CGI. O servidor web atua como o módulo de comunicação da rede e gerencia os clientes, enquanto o script CGI atua como o módulo de processamento de dados e entrega os resultados do processamento.

Infelizmente, este modelo sofria com problemas de performance, como por exemplo: a cada nova requisição era necessário a criação de um novo processo e, após executar o script CGI, o mesmo era  destruído; essa estratégia se torna, então, ineficiente. Assim, o melhor caminho é ter o suporte ao servidor separado do módulo executável. Dessa forma, o módulo executável pode ser carregado em memória e inicializado somente uma vez – quando o servidor é iniciado. Cada requisição pode, agora, utilizar o módulo executável já em memória.

Os módulos executáveis separados do módulo servidor são conhecidos como Server extensions. Em plataformas nativas, Server extensions são escritos usando API´s em C providas pelas distribuições de servidores. Por exemplo, o Netscape Server provê o Netscape Server Application Programming Interface (NSAPI), e o Internet Information Server (IIS) da Microsoft provê o Internet Server Application Programing Interface (ISAPI). Em Java, Server extensions são escritos usando a API Servlet e o módulo de extensão do servidor é chamado servlet. Um servlet, então, é um programa que possui uma lógica de negócio e executa do lado do servidor.

 

Servlet Container

Um servidor web usa um módulo separado para carregar e rodar o servlet. Este módulo especializado, que é dedicado para gerenciamento de servlets, é chamado de Servlet Container ou servlet engine. A Figura 1 mostra os diferentes componentes existentes em um servidor web. Arquivos HTML são armazenados no sistema de arquivos, servlets executam dentro de um Servlet Container e os dados estão armazenados na base de dados.

 

Figura 1. Todos os componentes de uma aplicação baseada na web.

O browser envia as requisições do cliente para o servidor web. Se o objetivo da requisição é encontrar um arquivo estático (tipicamente HTML ou imagens), o servidor o identifica diretamente.  Se o objetivo é um servlet, o servidor delega a requisição para o Servlet Container, o qual encaminha as requisições para o servlet de destino uma após a outra. Os servlets podem usar o sistema de arquivos, banco de dados, e outros recursos para gerar saídas dinâmicas.

Conceitualmente, um Servlet Container é parte do servidor web, mesmo que ele possa executar em um processo separado. Dessa forma, servlets containers são classificados seguindo três tipos:

a) StandAlone – nesse tipo, servlets containers são tipicamente servidores web escritos em Java onde os dois módulos – o servidor web principal e o Servlet Container – são partes integrantes de um mesmo programa. Por exemplo, um servlet container, como o Tomcat, executando sobre a JVM como uma aplicação Java. Ele trata as requisições estáticas, como HTML, e as requisições para servlets;

b) In-process – aqui, o servidor web principal e o Servlet Container estão em diferentes programas, mas o container executa dentro do processo do servidor principal como um plug-in. Nesse caso, podemos utilizar como exemplo o Tomcat executando dentro do servidor web Apache. O Apache carrega uma JVM que executa o Tomcat. Assim, o Apache trata as requisições de conteúdo estático, enquanto o Tomcat trata as requisições de servlet;

c) Out-of-process – como no servidor in-process"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?