Вы находитесь на странице: 1из 36

Introduo a

Programao
Web com Java

Introduo a Programao Web com Java

ndice
Apresentao................................................................................................... 3
Sobre o autor................................................................................................. 3
Referncias................................................................................................... 4
JavaEE......................................................................................................... 5
Preparando o ambiente...................................................................................... 6
Pr-requisitos................................................................................................ 6
Servlet Container vs Servidor de aplicao........................................................6
Instalando o Tomcat........................................................................................ 7
Instalando o Eclipse........................................................................................ 7
Configurando o Tomcat no Eclipse....................................................................8
Criando um novo projeto.................................................................................. 12
Novo projeto usando o Eclipse.......................................................................12
Entendendo a estrutura do projeto..................................................................16
Executando e testando o projeto....................................................................17
Servlets......................................................................................................... 21
Servlets...................................................................................................... 21
Enviando parmetros atravs de uma requisio..............................................23
Recuperando parmetros de uma requisio....................................................24
JSP - Java Server Pages.................................................................................. 26
Trabalhando com Java no JSP.......................................................................26
Apresentando dados dinamicamente com Expression Language........................27
Separando JAVA e HTML.............................................................................. 28
MVC - Model View Controller............................................................................ 29
Servlet ou JSP?........................................................................................... 29
Request Dispatcher...................................................................................... 30
Concluso...................................................................................................... 34
Notas de reviso.......................................................................................... 34
Referncias bibliogrficas................................................................................. 35

Introduo a Programao Web com Java

Apresentao
Prezado aluno, seja bem-vindo a disciplina. Neste material voc encontrar um
resumo didtico sobre o contedo abordado em sala de aula. Este material
prope apresentar os conceitos bsicos sobre desenvolvimento de sistemas
para internet utilizando Java como a tecnologia base.
Durante a disciplina juntamente com a ajuda deste material sero apresentados
os conceitos de programao web utilizando Java, qual ambiente necessrio
para o desenvolvimento uma aplicao, conceitos de Servlet, JSP, tpicos
importantes sobre a Servlet API, boas prticas de desenvolvimento arquitetura
MVC, entre outros assuntos.
Lembre-se que este um guia que lhe ajudar a esclarecer os principais
conceitos, porm no deve ser utilizado como nica referncia durante a
disciplina. A seguir voc ver algumas referncias que iro consolidar os
conceitos aqui apresentados permitindo que voc se aprofunde no assunto.
Bons estudos!

Sobre o autor
Este material foi desenvolvido pelo Instrutor Bruno Eustquio Faleiro de
Andrade juntamente com a equipe tcnica e pedaggica do SENAI Contagem
CFP Euvaldo Lodi. Bruno formado em Cincia da Computao, especialista
Ps Graduado em Engenharia de Software gil. Atua como Instrutor no curso
Tcnico em Informtica - onde se formou - e tambm no mercado de TI em
empresas e projetos de diversos portes sempre como membro de equipes de
engenharia de software.

Introduo a Programao Web com Java

Referncias
O Mundo Java como um todo muito rico e possui uma comunidade muito
forte e colaborativa. Voc pode facilmente encontrar excelentes referncias
sobre assuntos gerais e especficos ligados ao tema. Como na maioria das
tecnologias que utilizamos atualmente a maior quantidade est em ingls,
porm como a comunidade Java no Brasil grande e madura segue abaixo
referncias em nativas em portugus ou traduzido para nosso idioma:
Frum do Grupo de Usurios Java
guj.com.br
Frum Stack Overflow
stackoverflow.com
Portal Devmedia
devmedia.com.br
Frum Javafree
javafree.org
Blog Caelum
blog.caelum.com.br
Editora Casa do Cdigo
casadocodigo.com.br
Apostilas Caelum
caelum.com.br/apostilas
Use a Cabea! Servlets & JSP
Bryan Basham, Kathy Sierra & Ber

Introduo a Programao Web com Java

JavaEE
Java EE ou Java Enterprise Edition se trata de uma srie de especificaes de
software desenvolvidas com o intuito de definir um padro de desenvolvimento
de solues com o intuito de resolver problemas comuns no processo de
desenvolvimento de software.
Utilizando as especificaes do Java EE voc poder contar com solues j
testadas para implementao de solues utilizadas frequentemente pelo
mercado. Assim voc e sua equipe tcnica no gastaro tempo elaborando
uma soluo de arquitetura para um problema que comum entre projetos de
software.
Outra caracterstica do Java EE que por se tratar de uma especificao voc
no fica preso a uma implementao nica. Voc pode optar em utilizar cdigo
de terceiros da sua preferncia ou at mesmo desenvolver sua prpria
implementao para determinado servio de acordo com a especificao.
Assim sua aplicao continua trabalhando de forma integrada e ao mesmo
tempo desacoplada.
Tais especificaes so implementadas em forma de APIs (Application
programming interface). A lista abaixo mostra as principais e mais utilizadas
implementaes Java EE:

Java Servlets
JSP - JavaServer Pages
JSF - Java Server Faces
EJB - Enterprise Javabeans Components
JPA - Java Persistence API
JAX-WS - Java API for XML Web Services
JAX-B - Java API for XML Binding
JAAS - Java Autenthication and Authorization Service
JTA - Java Transaction API
JMS - Java Message Service
JNDI - Java Naming and Directory Interface
JMX - Java Management Extensions

Introduo a Programao Web com Java

Preparando o ambiente
Pr-requisitos
O desenvolvimento de aplicaes Java tem como uma de suas caractersticas
o funcionamento multiplataforma. Um fator que fez chamou a ateno da
comunidade e contribui para o crescimento da tecnologia.
Por tanto voc como desenvolvedor pode optar em utilizar qualquer sistema
operacional com suporte a Java como Windows, Linux ou MacOS. Como
plataforma nativa os sistemas baseados em Unix normalmente apresentaram
melhor compatibilidade com as aplicaes.
Para que possamos iniciar a parte especfica da disciplina voltada para
desenvolvimento de aplicaes Web como pr requisito basta que voc tenha
instalado o JDK (Java Developer Kit) em seu sistema.

oracle.com/technetwork/java

Servlet Container vs Servidor de aplicao


Uma dvida comum ao iniciar os estudos de desenvolvimento de aplicaes
web em Java so os conceitos de Servlet Container e Servidor de Aplicao.
Essa dvida existe, pois eles tm caractersticas em comum, mas devem ser
utilizados de acordo com a necessidade real do projeto a ser desenvolvido.
Um servidor de aplicao Java possui suporte utilizao de recursos de todas
as especificaes JEE. Utilizando um servidor de aplicao voc poder
implementar em sua aplicao qualquer recurso sem a necessidade de acoplar
alguma API ao Servidor. JBOSS (RedHat) e WebSphere (IBM) so um dos
servidores mais populares do mercado.
J um Servlet Container tem a funo de servir projetos que utilizem so
implementados apenas com base na Servlet API. So servidores leves e
podem facilmente ser expandidos caso o projeto tenha necessidade de utilizar
alguma outra especificao JEE. So muito populares pela facilidade de
configurao e desempenho.
Um dos Servlet Containers mais populares entre a comunidade Java o
Tomcat. Mantido como um projeto Apache pela comunidade da Apache

Introduo a Programao Web com Java

Software Foundation o Tomcat ser o Servlet Container que utilizaremos


durante o curso.
tomcat.apache.org

Instalando o Tomcat
Faa o download do Tomcat em sua pgina oficial tomcat.apache.org. Escolha uma

das Binary Distributions e d preferncia para a verso zip mesmo se estiver


utilizando o Windows. Atente-se tambm para a plataforma que voc est
utilizando (32bits ou 64bits) no momento do download.
Aps o download voc ter em mos um nico arquivo compactado. Extraia o
arquivo para um local de sua preferncia e pronto. O Tomcat no necessita de
nenhum processo de instalao independente do sistema operacional.
Nota: Ao extrair o arquivo compacto escolha um local onde todos usurios do
sistema tenham permisses de leitura e escrita. Isso poder evitar algum
problema futuro caso seja necessrio a criao edio ou remoo de algum
arquivo dentro da pasta.

Instalando o Eclipse
Iremos utilizar durante curso o Eclipse como IDE. Uma das IDEs mais
populares do mundo para o desenvolvimento Java. Voc pode utilizar tambm
outra plataforma como, por exemplo, o Netbeans que, alm de muito popular,
tambm muito eficiente.
Faa o download do Eclipse em sua pgina oficial - eclipse.org - e vamos
utilizar a verso mais indicada para trabalhar com desenvolvimento Java EE
Eclipse IDE for Java EE Developers
Novamente atente-se para para a plataforma que est sendo utilizada (32bits
ou 64bit) no momento do download. A instalao funciona de forma similar a ao
Tomcat. Basta extrair o arquivo compactado para o um local de preferncia e
assim feito voc j pode inciar a IDE.

Configurando o Tomcat no Eclipse

Introduo a Programao Web com Java

Como complemento ao Eclipse IDE vamos utilizar tambm um o WTP, Web


Tools Platform, que um conjunto de plugins para que auxilia no
desenvolvimento de sistemas Web. Com ele podemos contar com algumas
ferramentas de controle do Tomcat e tambm editores especficos para JSP,
CSS, Java Script e HTML.
Este plugin j vem previamente instalado na verso do Eclipse IDE for Java EE
Developers. Porm pode ser instalado separadamente em qualquer outra
verso do eclipse que voc esteja utilizando.
Com o plugin j instalado precisamos configurar a integrao entre a IDE e
nosso Servlet Container.

1. Abra a view Servers atravs do menu Window > Show View > Servers

2. Clique com o boto direito na aba Servers e escolha a opo New >
Server

Introduo a Programao Web com Java

3. Neste passo escolha a verso do Tomcat que foi instalada e depois


cliquem Add para configurar o Server Runtime Enviroment.

4. Agora informe ao assistente o diretrio onde o Tomcat foi instalado e


clique em Finish e novamente em Finish na tela do passo 3.

Introduo a Programao Web com Java

5. A ltima configurao necessria alterao do modo de controle do


WTP. Ele no permite configuraes sejam feitas seno pelo prprio
plugin. Vamos alterar essa configurao para que o padro de
configuraes seja o do prprio Tomcat. Para isso clique com o boto
direito no servidor que acabamos de configurar na aba Servers e uma
tela de propriedades ser aberta. Logo marque a opo Use Tomcat
installation. Salve o arquivo e feche.

6. Para inciar o servidor que j est configurado seleciona-lo na aba


Servers clicar boto Start

Introduo a Programao Web com Java

7. Com o Tomcat iniciado voc pode testar sua configurao acessando o


endereo http://localhost:8080 em seu navegador. A tela de boas
vindas do Tomcat deve ser exibida.

Introduo a Programao Web com Java

Criando um novo projeto


Vamos iniciar o desenvolvimento criando um novo projeto utilizando o Eclipse.
Como diversos recursos voltados para o desenvolvimento Java o eclipse nos
tornar mais produtivos acelerando a criao de estruturas de pastas,
importao de bibliotecas necessrias, arquivos de configurao e todos os
demais detalhes que so necessrios para o funcionamento de um projeto
inicial.

Novo projeto usando o Eclipse


1. Abra o eclipse e acesse a opo New > Project e escolha a opo WEB
> Dynamic Web Project.
Nota: Ao abrir o Eclipse ele sempre ir pedir para que voc informe qual
o Workspace voc deseja utilizar para o trabalho. O Workspace um
diretrio de trabalho onde vo estar contidos seus projetos. Um
Workspace pode conter vrios projetos. Voc deve definir qual melhor
forma de trabalhar, separando Workspaces diferentes por tecnologia,
grupo de projetos ou qualquer diviso que faa mais sentido para voc.

Introduo a Programao Web com Java

2. Informe o nome do projeto como ola-java-web, e certifique-se que que o


Target runtime est apontando para a verso do Tomcat que voc
acabou de configurar. As demais configuraes devem permanecer
como padro. Clique no boto Next para continuar.

Introduo a Programao Web com Java

Introduo a Programao Web com Java

3. Clique em Next na tela que define as configuraes de pastas

4. Na etapa de configurao de mdulo web mantenhas as configuraes


de contexto e diretrio padro e marque a opo Generate web.xml
deployment descriptor. Clique em Finish e o projeto ser criado.

Introduo a Programao Web com Java

5. O projeto foi criado em seu Workspace e agora voc pode visualizar


toda estrutura de arquivos que foi criada. Mas antes disso vamos
adicionar o projeto ao servidor para que ele seja executado assim que o
Tomcat for iniciado. Na aba Servers clieque com o boto direito no
servidor que foi configurado anteriormente e selecione a opo Add and
Remove

6. Selecione o projeto que acabou de ser criado clique em Add e mova-o


para o lado direito na lista de projetos configurados. Feito isso clique em
Finish.

Introduo a Programao Web com Java

Pronto! Com o projeto criado e configurado agora podemos analisar a estrutura


de pastas e arquivos que foram criados e que so necessrias para o
desenvolvimento.

Entendendo a estrutura do projeto


Como vimos no captulo anterior criamos atravs do Eclipse toda estrutura
necessria para o funcionamento do projeto.

src
Comeamos pela pasta src que j conhecida dos projetos Java. Nela sero
armazenado todos os pacotes e classes que iremos criar durante o projeto.
Todo cdigo fonte que for escrito em Java deve estar nesse diretrio.
build
A pasta build um padro criado para o Eclipse que foge um pouco do que
normalmente utilizado em um projeto Java comum. As classes escritas em
Java so compiladas e armazenadas nessa pasta. Ns no utilizaremos este
diretrio em momento algum. As classes compiladas so automaticamente
salvas nessa pasta pela IDE.
WebContent
Nosso projeto ser composto por diversas pginas web e tambm outros
recursos como arquivos javascript, css e imagens. Todos esses recursos
devem ser acessados diretamente pelo navegador. Para isso precisamos ter
um contexto web disponvel para acesso. A pasta WebContent delimita esse
contexto. Todos os arquivos que estaro disponveis para acesso atravs de
uma requisio sero armazenados nesse diretrio.
Para acessar esse contedo precisamos conhecer o contexto da aplicao que
acabamos de criar. Para descobrir ou alterar o contexto acesse o menu Project

Introduo a Programao Web com Java

> Properties > Web Project Settings. No caso da aplicao criada no captulo
anterior o contexto pode ser acessado atravs da seguinte url
http:localhost:8080/ola-java-web/
WebContent > WEB-INF
A pasta WEB-INF armazena arquivos de configuraes que so necessrios
para que o projeto seja executado pelo servidor. Um dos arquivos
armazenados o web.xml. Arquivo que armazena algumas configuraes
bsicas sobre a aplicao. Essas configuraes so lidas pelo Tomcat no
assim que a aplicao for iniciada.
Nota: Apesar da pasta WEB-INF estar dentro da pasta WebContent ela no
pode ser acessada atravs do navegador.
WebContent > WEB-INF > lib
Dentro da pasta WEB-INF tambm encontramos uma pasta chamada lib que
utilizada como padro para armazenar todas as bibliotecas externas que
formem utilizadas no projeto. muito comum utilizar bibliotecas escritas para
resolver um problema comum como por exemplo enviar e-mails ou fazer upload
de arquivos.
WebContent > WEB-INF > classes
Por ltimo e no menos importante existe um diretrio classes que no aparece
na lista de diretrios pois se trata de uma pasta oculta que armazena todos os
arquivos compilados dentro da pasta WebContent para que possam ser
acessadas pelo servidor.

Executando e testando o projeto


Para que possamos testar se realmente nosso projeto que foi
configurado est funcionando corretamente ns precisamos de, alm de
iniciar o servidor, garantir tambm que nossa aplicao est
respondendo por requisies HTTP que o nosso objetivo incial.
Para isso vamos criar uma pgina HTML simples que ir ser exibida
quando fizermos uma requisio atravs da aplicao.
Acesse o menu File > New > File e e crie um arquivo chamado
index.html

Introduo a Programao Web com Java

Agora com o arquivo aberto vamos criar uma pgina bem simples com o
cdigo HTML abaixo.

Introduo a Programao Web com Java

Agora com o arquivo criado e salvo vamos iniciar o servidor e verificar o


resultado. Para isso vamos sincronizar o cdigo que foi criado agora com
o servidro. Chamamos esse processo de publicar a aplicao. Para
publicar a aplicao basta clicar com o boto direito no servidor e logo na
opo Publish. O processo rpido j que o projeto ainda simples.
Como o projeto publicado j podemos iniciar o servidor na opo Start
do menu.

Com o servidor j em execuo e nossa primeira pgina criada j


podemos acessa-la atravs da aplicao. Para isso basta acessar
atravs do endereo local do servidor, seguido do contexto da aplicao
e seguido da pgina que desejamos acessar.
http:localhost:8080/ola-java-web/index.html

Introduo a Programao Web com Java

O resultado deve ser o seguinte:

Sucesso! Avanamos mais um passo em nosso projeto agora hora de


entrarmos no mundo Java e conhecermos um pouco sobre a Servlet API.

Introduo a Programao Web com Java

Servlets
Apresentar pginas ricas em contedo para o usurio que acessa
atravs de seu navegador muito mais do que apenas arquivos HTML
que exibam contedos estticos.
A maior parte do contedo que acessamos hoje atravs de aplicaes
web so contedos gerados dinamicamente que faz com que o potencial
dessas aplicaes seja to grande.
Para isso o desenvolvimento web evolui e surgiram as tecnologias
capazes de executar programas de acordo com cada requisio. Em
Java a tecnologia utilizada para processar as requisies e devolver o
contedo dinmico ao usurio de responsabilidade da Servlet API.

Servlets
O objetivo das Servlets receber uma requisio HTTP, enviadas ao
servidor de aplicaes, processa-la e devolver uma resposta ao cliente.
Esse processo feito em Java atravs de uma classe Servlet capas de
gerar contedo HTML. A ideia bsica que cada servlet seja responsvel
por uma pgina onde o objeto responsvel por receber uma requisio
(request) e retornar uma resposta (resposnse).

O comportamento de uma servlet definido inicialmente pela classe


HttpServlet do pacote javax.servlet. Classe que deve ser estendida
por toda classe Java que deve ser comportar como servlet.

Introduo a Programao Web com Java

Portanto, para escrevermos uma servlet basta criar uma classe Java que
estenda a classe HttpServlet e sobrescrever o mtodo service que tem
como parmetros request (HttpServletRequest) e response
(HttpServletResponse):

Podemos reparar algumas informaes importantes observando o cdigo


acima. A primeira linha mostra a anotao @WebServlet(/diga-ola)
que indica o mapeamento da classe. A url informada no mapeamento, no
caso /diga-ola, ser utilizada para que possamos acessar esse servlet
atravs do navegador juntamente com o contexto de nossa aplicao
como j vimos anteriormente. Ou seja, para que esse servlet seja
executado a url que deve ser chamada a seguinte:
http:localhost:8080/ola-java-web/diga-ola
O mtodo service foi sobrescrito, pois o mtodo invocado quando o
servlet solicitado tanto para requisies feitas pelos mtodos get ou
post. Mtodo que recebe o parmetro request que contm as
informaes feitas na requisio e o response que leva as informaes
processadas como resposta.
No cdigo abaixo uma resposta enviada ao cliente atravs da classe
PrintWriter. Atravs do mtodo getWriter vamos obter um objeto que
represente a sada atravs do parmetro response.

Introduo a Programao Web com Java

O cdigo acima tem o simples objetivo de exibir uma mensagem ao


usurio que requisitar a servlet.

uma mensagem esttica, mas possvel ver como simples


implementar qualquer tipo de processamento para retornar ao usurio
qualquer tipo de resposta.

Enviando parmetros atravs de uma requisio


Para que a comunicao entre o usurio e o servidor seja feita utilizamos
o envio de informaes atravs de requisies. No exemplo abaixo
vamos simular um formulrio de login para enviar os dados de e-mail,
senha e confirmao de senha para que sejam validados no servidor. O
arquivo se chama login.html e pode ser acessado atravs do endereo
http://localhost:8080/ola-java-web/login.html

Introduo a Programao Web com Java

O formulrio ser apresentado ao usurio no navegador como podemos


observar no cdigo acima os dados sero submetidos ao servidor
quando o boto enviar for clicado.

A seguir vamos analisar o cdigo necessrio para a recuperao dos


dados enviados pelo formulrio ao servidor.

Recuperando parmetros de uma requisio


Para recuperar os dados que foram enviados pelo formulrio anterior,
vamos criar uma servlet chamada LoginServlet.java. A servlet criada
deve ser mapeada com a url efetuarLogin. Como vimos anteriormente
esse o mapeamento que est sendo chamado no formulrio de login.
Aps a criao da servlet teremos o seguinte cdigo:

No mtodo service vamos buscar os dados da requisio e para isso


vamos utilizar o parmetro request chamando o mtodo getParameter
passando como parmetro o nome campo correspondente informado no
formulrio.
Introduo a Programao Web com Java

Reparem que os dados recuperados da requisio so retornados


sempre em formato de String. Devemos lembrar sempre que na
transao de dados que no esto no formato texto, como nmeros e
datas, por exemplo, devemos efetuar a converso dos dados utilizando
Java.
Agora que temos os dados recuperados podemos concluir o exemplo de
forma simblica indicando que o usurio efetuou login com sucesso. O
cdigo mostra o exemplo completo e tambm o resultado obtido.

O resultado apresentado ser o seguinte

Ao fim deste capitulo podemos criar uma aplicao dinmica que recebe
dados de uma requisio e consegue enviar uma reposta ao usurio de
acordo com os dados informados.
No prximo captulo veremos como trabalhar com outra API JEE o
JavaServer Pages.

Introduo a Programao Web com Java

JSP - Java Server Pages


JSP uma tecnologia baseada em Java que simplifica o processo de
desenvolvimento de pginas dinmicas. Utilizando JSP podemos incluir
elementos dinmicos que so resultado de um cdigo HTML gerado
juntamente com TAGs de marcao prprias da tecnologia. Estas TAGs
fornecem a possibilidade de incluir inteligncia lgica e dinamicidade s
pginas da aplicao.

Trabalhando com Java no JSP


No exemplo a seguir vamos desenvolver o mesmo exemplo feito
anteriormente. Nesse caso vamos utilizar o cdigo Java diretamente no
arquivo JSP ao invs de criar um servlet para tal. Essa prtica se no for
utilizada de forma adequada pode ser muito ruim para a
manutenabilidade do cdigo, pois mistura cdigo Java e HTML em um
mesmo arquivo.
Esse recurso deve ser utilizado para dar dinamicidade gerao de
cdigo HTML e no para desenvolver a lgica de negcio da aplicao.
Repare que o cdigo HTML sofreu uma pequena modificao onde a
action do formulrio aponta para o arquivo sucesso.jsp ao invs do
mapeamento da servlet como usamos no exemplo anterior.

No arquivo sucesso.jsp vamos utilizar os demarcadores <% %>


chamados de Scriptlets para indicar que o cdigo ali inserido deve ser
interpretado como cdigo java ao invs de cdigo HTML o JSP. Feito isso
vamos utilizar o mesmo cdigo para recuperar os parmetros login e
senha e atribu-los a suas respectivas variveis.
Introduo a Programao Web com Java

Tambm utilizamos as mesas tags juntamente com o comando


out.println() para exibir o parmetro capturado.
Esse exemplo apresenta o resultado idntico ao anterior. Porm como
citado a pouco deixa o cdigo poludo misturando sintaxes diferentes no
mesmo arquivo. Para isso a API JSP criou uma sintaxe simplificada para
acessar objetos Java dentro do JSP.
Apresentando dados dinamicamente com Expression Language
No exemplo abaixo o arquivo sucesso.jsp teve o cdigo adaptado e
agora se comporta da mesma maneira utilizando Expression Language
(EL) para recuperar o parmetro. As tags <% %> foram substitudas
pelos demarcadores ${ } o que melhora a sintaxe do cdigo deixando-a
mais limpa e legvel.
Utilizando Expression Language alm de melhorar a sintaxe tambm
podemos fazer uso de alguns recursos que facilitam o acesso a objetos
Java sem a necessidade de diversos comandos como no exemplo
anterior. Nesse caso podemos o exemplo de um recurso que o objeto
pr-definido para acessar os parmetros enviados pela requisio. Assim
podemos facilmente acessar o e-mail submetido utilizando o comando $
{param.email}.

Introduo a Programao Web com Java

O resultado obtido tanto com o uso do cdigo JAVA inserido diretamente


no arquivo JSP quanto dos Scriplets so apresentados exatamente
iguais aos resultados do Servlet. A nica diferena que pode ser
percebida a url para qual a requisio foi redirecionada.

Separando JAVA e HTML


Um problema que surgiu ao utilizar o Java para desenvolver aplicaes
web foi necessidade de trabalhar com o cdigo HTML juntamente com
o cdigo JAVA. Imagine trabalhar com imensos cdigos HTML sendo
gerados atravs de classes Java. Isso traz ao projeto uma grande
complexidade tanto de implementao quanto de manuteno.
O JSP ajudou com que esse problema comeasse a ser solucionado,
separando os cdigos que possuem objetivos diferentes. O Java tem a
funo de tratar sobre a lgica da aplicao e o HTML o intuito de
apresentar os resultados. O JSP a tecnologia responsvel pela camada
de apresentao dessa engrenagem.
Veremos no prximo uma soluo que pode ser implementada em JAVA
para o problema citado acima utilizando princpios do padro MVC.

Introduo a Programao Web com Java

MVC - Model View Controller


O padro MVC, em portugus Modelo-Viso-Controlador, um modelo
de arquitetura de software que tem como ideia central a reusabilidade de
cdigo e separao de conceitos.
Model - O modelo responsvel por manter os dados da aplicao,
regras de negcios, lgica entre outros.
View - A viso representada por qualquer sada de representao dos
dados. possvel ter diversas vises da mesma informao dentro da
mesma aplicao, como uma tabela exibida no browser ou um grfico
apresentado em um aplicativo mobile.
Controller - O controlador responsvel por mediar entrada de uma
requisio, direcionando o fluxo da aplicao de acordo com a
necessidade, por exemplo, trafegando dados entre o modelo e a viso.

Servlet ou JSP?
Entendendo basicamente o conceito acima podemos entender que
desenvolver uma aplicao utilizando apenas a API Servlet ou apenas a
API JSP pode dificultar as coisas. Tanto a lgica de negcios quanto a
lgica de apresentao e tambm a camada de acesso a dados estaro
sempre no mesmo nvel. Isso prejudica o desenvolvimento e a
manuteno de qualquer sistema.
Portanto escolher uma das duas tecnologias como padro arquitetural de
uma aplicao no o ideal. No diagrama abaixo podemos ver o fluxo de
uma requisio HTTP utilizando o modelo MVC aplicando a tecnologia
Java e em seguida, como podemos aplicar o conceito desenvolvendo o
exemplo de login e senha.

Introduo a Programao Web com Java

Podemos identificar no diagrama as trs camadas conceituadas


anteriormente no padro MVC. A requisio tem incio quando o objeto
request enviado para o web container e recebido pelo servlet atravs
dos mtodos doGet, doPost ou Service.
A partir do momento que a requisio recebida pelo servlet, ele assume
a responsabilidade de controlar o fluxo de acordo com o solicitado,
direcionando a requisio para uma classe DAO que far o acesso a
dados caso necessrio ou acessando um ou mais recursos responsveis
pela regra de negcio da requisio.
Logo que uma resposta for obtida atravs de um dos servios da
aplicao, seja um banco de dados ou um processamento, a resposta
est pronta para ser devolvida ao cliente.
A resposta pode ser enviada atravs de um dispatch diretamente ao
cliente ou pode ser direcionada para um JSP para que seja renderizado
juntamente com cdigo HTML.
Vamos entender na prtica como funciona o exemplo.

Request Dispatcher
Visto o conceito acima j chegamos concluso de que poderamos
melhorar muito a organizao do nosso cdigo se utilizssemos o Servlet
apenas para escrever o cdigo Java responsvel pelo controle da
requisio e para as regras de negcio do sistema e o cdigo JSP
apenas para renderizar o cdigo HTML que ser enviado como resposta.
Introduo a Programao Web com Java

A API Servlet oferece esse recurso atravs do objeto


RequestDispatcher. Esse objeto possibilita que possamos acessar
outro recurso desde que saibamos a URL desejada. Por exemplo, a URL
de um arquivo JSP como mostra o cdigo abaixo:

Assim podemos desenvolver de forma clara e organizada toda a lgica


da aplicao dentro do arquivo servlet e em seguida encaminhar a
requisio para um arquivo JSP juntamente com todos os resultados que
sero apresentados.
Vejamos como o exemplo de login e senha apresentado anteriormente
ser apresentado utilizando esse recurso:

O cdigo do formulrio HTML volta a ser idntico ao utilizado no exemplo


que utilizamos apenas o Servlet. A ao do formulrio encaminha a
requisio para o Servlet que mapeado com a url efetuarLogin.

Introduo a Programao Web com Java

No classe servlet acima a obteno dos dados enviados pela requisio


so iguais e as informaes so atribudas as variveis email e senha
para serem apresentadas no cdigo HTML.

Porm como os dados sero apresentados pelo arquivo JSP preciso


que as informaes obtidas sejam enviadas juntamente com a requisio
para que possam ser acessadas. Isso feito atravs do comando
request.setAttribute onde inserimos as variveis email e sanha como
atributos da requisio.

Logo vamos encaminhar tal requisio para o arquivo sucesso.jsp para


que as informaes sejam apresentadas. O comando
request.getRequestDispatcher informa ao objeto qual a URL a
requisio ser encaminhada e o comando rd.forward efetua o
encaminhamento de fato.

Logo que a requisio encaminhada ao arquivo sucesso.jsp atravs do


cdigo ${email} podemos capturar a varivel email que foi enviada
para a requisio. Por padro ao utilizar uma expression language
buscando diretamente o nome de uma varivel convencionado pela
linguagem que se trata de um atributo inserido na requisio e o
resultado apresentado ao cliente como nos exemplos anteriores.

Introduo a Programao Web com Java

Esse recurso faz com que o cdigo fique limpo e claro tanto do lado do
cdigo Java escrito na Casse Servlet quanto do cdigo HTML escrito no
JSP e o resultado apresentado.

Introduo a Programao Web com Java

Concluso
Chegamos ao fim do primeiro passo, mas os estudos no devem parar
por aqui. O que foi apresentado nesse material apenas o incio de um
contedo vasto e cheio de possibilidades. Com o que aprendemos aqui
j temos condies de evoluir e continuar o desenvolvimento tanto
conceitual quanto prtico dessa disciplina.
No incio da apostila foram citadas diversas referncias onde voc pode
dar continuidade em sua formao, no deixe de conferir todas as
indicaes e tambm no deixei de buscar suas prprias referncias.
Atuar no mercado de tecnologia exige do profissional a busca contnua
pelo conhecimento.

Notas de reviso
Caso voc encontre algum erro de qualquer natureza ou mesmo uma o
oportunidade de melhora ser muito bem vinda. Esse material ser
revisado periodicamente buscando cada vez mais qualidade no contedo
oferecido. Envie suas sugestes para bruno.andrade@fiemg.com.br

Obrigado!

Introduo a Programao Web com Java

Referncias bibliogrficas
Basham, B., & Sierra, K. (2008). Use a Cabea! Servlets & JSP (2 ed.). Alta
Books.
Caelum. (Junho de 2014). Java para Desenvolvimento Web. Acesso em Junho
de 2014, disponvel em Caelum: http://www.caelum.com.br/apostilajava-web/
Jandl Junior, P. (2009). Desenvolvendo Aplicaes Web com Jsp e Jstl (1 ed.).
Novatec.

Introduo a Programao Web com Java

Вам также может понравиться