Introdução Ao Java Server Pages - JSP
-
Upload
geovanegomes -
Category
Documents
-
view
272 -
download
0
description
Transcript of Introdução Ao Java Server Pages - JSP
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 1/25
Buscar
comentrios favorito (12) marcar como lido para impresso anotar
Introduo ao Java Server Pages- JSP
Veja neste artigo uma apresentao dos fundamentosdo JSP, Java ServerPages que, integrado ao HTML,permite dar mais dinamismo pginas web.
Gostei(19) (0)
ComaevoluodaInternet,surgiramnovasnecessidades.Negciospassarama
existirdeformaonline,meiosdecomunicao,fazemusoconstantedestapoderosa
ferramentaqueaInternet.Mascomoestatecnologiachegouaesteponto?
NoinicioaInterneteraesttica,afaltadeinteratividadeimperava,foiquandosurgiuo
217
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 2/25
CGI,atecnologiaCGIcriavainteratividadeaoambiente,masnotornavasimpleso
seudesenvolvimento.EntreastecnologiasdeCGImaisutilizadas,destacaseoPERL,
linguagempoderosa,utilizadaathojeparaadministraodeservidores.Ogrande
problemadesedesenvolverumCGI,almdodesempenho,eraasuacomplexidade,a
soluoparasimplificarodesenvolvimentoWEBepassarparaumanovafase,
surgiramaslinguagensserversidescriptscomoASP,PHPeJSP.Estaslinguagens
tornaramodesenvolvimentowebmaisgil,simpleseprtico.Almdepossuirum
maiordesempenhodeaplicao,emummeioqueavelocidadeessencial,isto
garantiuosucessodasnovaslinguagensdescripts.
EsteartigoapresentaosconceitosbsicosdeJSP,bemcomoautilizaoda
linguagemparaaprogramaowebdinmica,todoodesenvolvimentofeitoneste
artigofoitestadoutilizandooServidorTomcat.
Introduo ao JSPJSPoacrnimoparaJavaServerPages,umalinguagemcriadapelaSUNgratuita,
JSPumalinguagemdescriptcomespecificaoabertaquetemcomoobjetivo
primrioageraodecontedodinmicoparapginasdaInternet.Podemosaoinvs
deutilizarHTMLparadesenvolverpginasWebestticasesemfuncionalidade,utilizar
oJSPparacriardinamismo.possvelescreverHTMLcomcdigosJSPembutidos.
ComooHTMLumalinguagemesttica,oJSPseroresponsvelporcriar
dinamismo.Porsergratuitaepossuirespecificaoabertapossuidiversosservidores
quesuportamalinguagem,entreelestemos:Tomcat,GlassFish,JBoos,entreoutros.
OJSPnecessitadeservidorparafuncionarporserumalinguagemServersidescript,
ousurionoconsegueveracodificaoJSP,poisestaconvertidadiretamentepelo
servidor,sendoapresentadoaousurioapenascodificaoHTML.
UmapaginaJSPpossuiextenso.jspeconsisteemumapginacomcodificao
0nfejc
LOGIN
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 3/25
HTMLecomcodificaoJava,inseridaentreastags,denominadascriptletse
funcionandodaseguinteforma:oservidorrecebeumarequisioparaumapgina
JSP,interpretaestapginagerandoacodificaoHTMLeretornaaoclienteo
resultadodesuasolicitao.ApginaJSPquefoiinterpretadapeloservidorno
precisasercompiladacomoaconteceriacomumservletjavaporexemplo,estatarefa
realizadaemtemporealpeloservidor.necessrioapenasdesenvolveraspginas
JSPedisponibilizlasnoServletContainer(Tomcat,porexemplo).Otrabalhorestante
serrealizadopeloservidorquefazacompilaoemtempodeusotransformandoo
jspembytecode.
Assim,podesedefiniroJSPcomoumatecnologiaqueprovumamaneirasimplese
prticadedesenvolveraplicaesdinmicasbaseadasemweb,sendoindependente
dePlataformadeSistemaOperacional.
Tecnologia Client-side e Server-sideAinternetfoiconcebidadeformaafuncionarcomoclienteXservidor,ouseja,temos
umclientequeonavegadorweb(browser)eoservidorhttp(web).Existem,na
tecnologiadisponvelparaWeb,duasclassificaesdetecnologia,umaquefunciona
doladodoclienteouClientsideeumaquefuncionadoladodoservidorouServer
side.
Client-side lado do clienteOclientesidedeumaaplicaoolocalondeelaprocessada,ouseja,nocasoda
web,executanonavegadordoclientequeoresponsvelporinteragircomoServidor
HTTP.EntreastecnologiasclientesidetemosoHTMLqueexecutadononavegador,
oCSSoutratecnologiaclientequeserveparaformatarpaginasHTML,haindao
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 4/25
javascriptquepermitedesenvolverouampliaropoderaoladodocliente.
Server-sideServerside,porsuavez,otermoquerepresentaoconjuntodetecnologiasemque
osprocessossointerpretados/processadosdiretamentenoservidor,retornandocomo
resultadoacodificaoclientside.Quandoumclienteweb(navegador)acessauma
pginaweb,umasolicitaoenviadaaoservidoratravsdoprotocolohttpparaqueo
servidorenviearesposta.OServidoralmderodarosaplicativos,oladoservidor
tambmumrepositriodepginasestticas,queseroenviadosaoclientequando
solicitado.SupondoquehajaumapginaJSP,estaserprocessadapeloservidore
encaminhadoumarespostaaocliente(Navegador).
Benefcios do JSPOobjetivodalinguagemJSPnosodesenvolvimentodepginasdinmicaspara
Internet.ComelapossveldesenvolversistemasinteirosparaInternet.Almdisso,
existemdiversosbenefciosemseutilizaralinguagemJSP.
CustoOJSPnotemcustodelicena.Istosignificaquepodeserutilizadoemqualquer
mquina,paraqualquernumerodeusuriossemviolarnenhumdireitoautoral.Claro
queistodependedoservidorescolhido,oTomcatumservidorlivre,licenciadosoba
licenadaApacheFoundation,dealtaqualidadeesemcustodelicenciamento.
JSP embutido no HTML
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 5/25
OJSPsimplesdeseutilizar,podendogeraroHTMLouaindaestarembutidodentro
doHTML,comonoexemploaseguir:
Listagem1:ExemplodecdigoJSPembutidonoHTML
PaginaJSPOlaMundo
Outras vantagens da linguagemAlemdocustoedaintegraoperfeitacomoHTML,possvelainda,citaros
seguintesbenefciosdalinguagem:
AperfeioamentoderecursosutilizandoJavaemServlets
Manipulaodearquivoscomotexto,PDF,DOCetc
Criptografiadedados
Utilizaodecookiesesesses
ManipulaodearquivosXML
Suporteadiversosbancosdedadoscomo:MySQL,SQLServer,Oracle,Informix
etc
SuporteasistemasderelatrioscomooJasperReportentreoutros.
Tomcat
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 6/25
OJSPporserumalinguagemServerSidecomovistoanteriormente,necessitadeum
servidorparaoseufuncionamento.
OApacheTomcatfoidesenvolvidopelaApacheSoftwareFoundation,oTomcatum
servletcontainerdecdigoaberto,ouseja,umaaplicaoqueinterpretaeprocessa
servlets(javaservlets)eJSP(JavaServerPages).Oservidorestadisponvel
livrementenaInternetsemanecessidadedepagamentodelicenciamentoeest
disponvelnoendereohttp://tomcat.apache.orgparadiversasplataformas,entreelas
oWindows,Linux,Solarisetc.Recomendaseodownloaddaverso7doservidor.A
instalaosimples,bastaseguiroseupassoapasso.Odesenvolvedordevefazera
instalaocompletadoservidorparaseusistemaoperacional.
ComoTomcatinstaladopodeseiniciarodesenvolvimentoJSP.Parainiciaro
desenvolvimentodevesecriarumdiretrioeasyjavaemC:\ProgramFiles
(x86)\ApacheSoftwareFoundation\Tomcat7.0\webapps(noWindows)e
/usr/java/apachetomcat7.0(noLinux).Nodiretrioeasyjavadevesecriaros
diretriossrc,web,WEBINFeWEBINF/lib.
src=diretrioondeficaarmazenadoocdigofontedosservlets
web=diretrioraizdaaplicaoweb
WEBINF=diretrioquearmazenaodescritordaaplicaoweb(web.xml),bem
comooutrosarquivosdeconfigurao.Estediretrioinvisvelaousurio
WEBINF/lib=bibliotecasnecessriasparaaaplicao.
Utilizaremos,inicialmente,apenasojsp,masemartigosfuturoscriaremosservletspara
ampliaracapacidadedenossaaplicaoweb,porissocriamosaestruturacompleta
dediretriosTomcat.
Desenvolvimento JSP na pratica
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 7/25
ParainiciarotrabalhocomJSP,criaremosoprimeiroarquivodeexemplo,doArtigo
JSP.Paramanteropadro,criaremosumarquivohelloword/olamundo.
Nodiretrio(pasta)easyjava,comseueditorfavoritonotepad,vi,emacsetc.,o
desenvolverdevecriaroarquivoola.jspcomoseguintecontedo:
Listagem2:ProgramaOlMundo.
PaginaJSPOlaMundo
Salveoarquivoeabraonavegadordesuapreferenciaedigite:
http://127.0.0.1:8080/easyjava/ola.jsp,conformeaFigura1.
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 8/25
Figura1:Resultadodaexibiodocdigoalomundo
OresultadoaexibiodeumapginacomotextoOlaMundo.Nocdigodapagina
serexibidoapenasHTMLenoJSP.Paraoteste,cliquecomobotodireitonatelae
mandeexibirocdigofontecomonalistagem2.
Listagem3:ProgramaOlMundo.
PaginaJSPOlaMundoOlaMundo
Vamosentenderoquefoifeitonalistagem1,todoscriptjspestaentreastags,alinha
out.println("OlaMundo")responsvelporescreverotextoqueestaentreaspas,
sendoconvertidoparaaexibioemHTMLdeOlaMundo,istoporqueocomando
out.printlnresponsvelporescrevernatela,ouseja,escreveemHTMLumcontedo,
enestecasoOlaMundo.Contedosdetextodevemestarentreaspas,comovistono
exemplo.ObservequeaexibionoclientenohnenhumcdigoJSP,poisfoi
processadonoservidor,outropontoimportantequeoJSPsegueopadrodoJava,
ouseja,aofinaldecadalinhatemosum().
Prosseguimos,agora,paraosestudosdoJSP.Inicialmente,abordaremososeu
funcionamento.OJSP,assimcomooPHP,podeserutilizadodentrodoHTML,a
pginaJSP,naverdade,umapaginaHTML,masquandofornecessrioutilizar
codificaoJSPquedeveestarentreastags,oservidortratadeconverterpara
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 9/25
HTMLpararesponderasolicitaodousurio.
NacodificaoJSP,tmsealgumasdiretivas,asquaissoutilizadaspara
informaesespeciaisdentrodepaginas,sendodivididoemtrstipos:
@include:utilizadoparainseriroscdigosdearquivospginacorrente
@page:responsvelportrazerinformaessobreapginaJSP
@taglib:responsvelporhabilitarumabibliotecadetagspersonalizada(itemque
serabordadoemoutroartigocommaisdetalhes).
Agora,vamosincrementarumpoucomaisnossaaplicaoolamundo,exibindoadata
atual.
Listagem4:ProgramaOlaMundomelhorado
PaginaJSPOlaMundo
Aoabrirnonavegadororesultadoseraexibiodoolamundoedadataehoraatual,
conformeaFigura2.
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 10/25
Figura2:Resultadodacodificaoalistagem4
Emconjuntocomadiretiva@page,temososatributoslistadosnatabela1.
Atributos Descrio
LanguageDefinealinguagemdescriptqueserutilizadonoJSP.Anicalinguagemsuportada
JAVA.
ExtendsDefineonomedaclassequeessapginaJSPdeveherdar.Geralmenteesseatributo
noinformado,sendodeixadoacargodoServletContainersepreocuparcomisso.
Import PermiteapginaJSpimportarpacoteseclassesqueseroutilizadospelapgina.
Session Defineseapaginafarusodesesso,ovalorpadrotrue.
BufferDefineotamanhodobufferdapginaemKB,casonosejadefinidoasadanoser
buferizada.
autoFlush Esteatributo,sedefinidocomotrue,fazcomqueobufferdapginaJSPsejafinalizado
casoatinjaolimite.
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 11/25
isThereadSafe Seoatributofordefinidocomotrue,apaginanoimplementaainterface
SingleThreadeModel.Ovalorpadrotrue.
Info RetornaoresultadodomtodogetServletInfo().
errorPage Defineocaminhorelativoaumapginadeerro,casoocorraumaexceo.
contentType Informaotipodesadadodocumento.Ovalordefaulttext/html.
isErrorPage Informaseapginaumapginadeerro.
pageEncoding Defineocaracterencondingdapgina.
Tabela1:Atributosdadiretiva@page.
Vejaquenoexemploanterior,foicriadoalinha:,indicandoqueserimportadoas
bibliotecasjava.util.Dateejava.text.*,almdissofoidefinidoopageEncodingcomo
ISO88591.
Noexemploanteriorutilizamosaexibiocompletadadatautilizando.O
desenvolvedordeveevitarousodoout.println,utilizandodiretamenteo=newDate().O
newDatefezumachamadadiretaclasseDate,disponvelemjava.util.Date.Este
motivodaimportao.Paradarandamentoaplicaoaperfeioaremosacodificao
conformealistagem3.
Listagem5:ProgramaOlaMundomelhorado
JSPPageHelloWorld!
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 12/25
out.println("Hojedia"+dia);
%>
OresultadoserexibidoconformaaFigura3.
Figura3:Resultadodaexecuodalistagem3
Destavezfoideclaradoumavariveldotipointparaarmazenaradata.Adeclarao
devariveisnoJSPidnticaaojava:tmseotipo,onomeeosdadosquesero
armazenados.Oescopodeumavariveldestetipooarquivoemquefoideclarado,
ouseja,osoutrosarquivosnotminformaessobreavariveldeclaradaaqui.Os
tiposdedadossuportadospeloJSPso:
boolean=true/false
byte=128a127
char=caracteres
double=1.89869313486232E308a4.94065645841247E
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 13/25
324/1.89869313486232E308a4.94065645841247E324
int=2.147.483.648a2.147.483.647
long=9.223.372.036.854.775.808a9..223.372.036.854.775.807
shot=32.768a32.767
String=textos
ParatrabalharcomotipoStringquearmazenatextosnecessrioincluira
java.lang.String.
TambmfizemosusodeconversodetipoInteger.parseInt,paraconverterotipo
string,vindadoobjetodataparaInteiro.Destaformapodesearmazenarodiaemuma
varivelcomotipointeiro(int).
Outrasconverses:
Byte.parseByte(objetoString)=converteumastringparaotipobyte
Short.parteShort(objetoString)=converteumastringparaotiposhort
Float.parteFloat(objetoString)=converteumastringparaotipofloat
Double.parseDouble(objetoString)converteumastringparaotipodouble.
Utilizamosanteriormenteasadaout.println,esteumtipodeobjetoimplcito.Esses
objetosrecebemonomedeimplcitopornonecessitarsereminstanciadosparaasua
utilizao.Elespodemseracessadosdiretamentenapgina.Osobjetosimplcitosque
podemseracessadosempginasJSPso:
Objetos Descrio
OutMtododotipoWritter,utilizadoparaexibirdadosnapgina.(exemplo:out.println(Ola
Mundo)
RequestObjetopermiteacessoaparmetrosenviadospelocliente,pelomtodoHTTP(GETou
POST).
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 14/25
Response Permiteacessorespostaqueserenviadaaousurio.
Session Acessoasesses.
application
ObjetoquereferenciaaclasseServletContextepermitequesejamarmazenadosvalores,
aoquaisserocompartilhadosportodaaplicao,pormeiodosmtodossetAttributee
getAttribute.
Config Objetoutilizadoparaaleituradeparmetrosdeinicializao.
exception PermitequeaspginasJSPsejamdefinidascomopginasdeerros.
pageContext Objetoqueumpontodeacessoamuitosatributosdapgina.
Page Semelhantearefernciathisutilizadaemclassesjava.
Operadores:Osoperadoressoutilizadospararealizaraessobreumoumaisvalores.Os
operadoressoclassificadosemgruposnoJSPassimcomoemquasetodasas
linguagensdeprogramao.Osoperadorestmprefernciadevidoaprioridadecomo
acontecenamatemtica.
Operadoresdecomparao:
==igualdade
!=noigualoudiferente
>maior
>=maiorouigual
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 15/25
Concatenadores
&&representaoandoue
||representaoorouou
^representaoorexclusivo
Operadoresaritmticos
+soma
subtrais
/divide
*multiplica
%resto
OperadoresdeIncrementoedecremento
++incrementavalor
decrementavalor
Estrutura de programao:Condicionalif
Oif(se)responsvelpelatomadadedecisodentrodacodificaojsp,possuindoo
seguinteformato:
If(condio){
Codificaoseverdadeiro
}else{
Condificaosefalso
}
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 16/25
Podendoaindasercomplementadodacomoutrosifs,daseguinteforma:
If(condio){
Codificaoseverdadeiro
}elseif(condio){
Condificaoseasegundacondioforverdadeira
}else{
Codificaoseasegundacondioforfalsa
}
Vamoscriarumexemploutilizandooquejsabemos,complementandoaindamais
nossoOlaMundo.
Listagem6:ProgramaOlaMundocondicionalif
JSPPage
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 17/25
}elseif(mes==6){
out.println("Hoje"+dia+"deJunhode"+ano);}elseif(mes==7){out.println("Hoje"+dia+"deJulhode"+ano);}elseif(mes==8){out.println("Hoje"+dia+"deAgostode"+ano);}elseif(mes==9){out.println("Hoje"+dia+"deSetembrode"+ano);}elseif(mes==10){out.println("Hoje"+dia+"deOutubrode"+ano);}elseif(mes==11){out.println("Hoje"+dia+"deNovembrode"+ano);}elseif(mes==12){out.println("Hoje"+dia+"deDezembrode"+ano);}%>
Almdacondioif,tmseacondioswitch,aqualsemelhanteaoif,pormpara
cadacomparaodeveexistirumainstruobreak.
switch(atributo/varivel){
casevalor:
instruo
break
casevalorn:
instruo
break
default:
instruoparavalorpadro
}
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 18/25
Aseguir,apresentaseumexemplosemelhandoaodoif,pormutilizandooswitch.
Listagem7:ProgramaOlaMundocondicionalswitch
JSPPage
Existem,ainda,outrasinstruescomolaos/repeties,asquaisseroabordadasem
prximoartigo.Agora,paradarandamento,trataremossobreofuncionamentodas
funes.
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 19/25
Afuno/mtodocontmcdigos,queseroexecutadosquandoafuno/mtodofor
chamado.
Acessotiponome(parmetro){
Cdigodafuno
}
Ostiposdeacessoserotratadosemnoprximoartigo.Iniciandoodesenvolvimento
deumapginaJSPcommaisrecursosedetalhes,utilizaseainclusodepginase
umformulriocomoexemplo.Adotandooquejfoiaprendido,vamoscriarumarquivo
topo,quearmazenarocontedoaserexibidonotopodonossosite.Estearquivoter
onometopo.jsp.
Listagem8:Programatopo.jsp
PaginaJSP
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 20/25
intdia=Integer.parseInt(newSimpleDateFormat("dd").format(newDate()));
intano=Integer.parseInt(newSimpleDateFormat("yyyy").format(newDate()));
out.println("Hojedia"+dia+"de"+fncMES(mes)+"de"+ano);%>
Otopo.jsputilizaoswitchemumafunochamadafncMES(FunoMs)paraexibiro
ms,comojfeitocomooifanteriormente.Agora,crieoarquivorodape.jsp.Estevai
terocontedodorodapdapgina.Nestapgina,insiraapenasoseguintetexto
PaginaEasyJava
.
Aseguir,criaremosoindex.jsp,quevaiunirosdoisarquivos.Criaremos,ainda,um
formulrioeenviarparaumapginaemquevamostratarosdadosrecebidos,
validandoos.
Listagem9:Programaindex.jsp
JSPPageNome:EMail:DatadeNascimento:
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 21/25
Aquitemosautilizaodo@includeparaincluirosarquivosjspquecriamos.Tambm
criamosumformulrioparaenviardadosparaumapginaquevamosaindacriar.O
nomedapaginasertrataform.jsp.Paraisso,utilizamosomtododeenviodedados
post.
Listagem10:Programatrataform.js
JSPPageDadosdoformularioEMail:DatadeNascimento:
-
8/19/2015 IntroduoaoJavaServerPagesJSP
http://www.devmedia.com.br/introducaoaojavaserverpagesjsp/25602 22/25
Oquevocachoudestepost?
Aquifoiutilizadoorequest.getParameter,queomtodoresponsvelporreceberos
dadosdoformulrio.Elerecebepelonomedocampoquefoicriado.Nestecasoos
dadosseroarmazenadosdentrodavarivelnome,queumtipostring.Utilizamoso
ifparaverificarseonomefoidigitado.
ConclusesEstafoiaumabreveintroduosobrealinguagemServersideJSPedecomocriar
pginaswebdinmicasdeformaprticaesimples.Emprximosartigos,ser
abordadocomoseconectarabancodedadosparacriarumapginadinmicade
notciasatautilizaodeJSTL.
RefernciasPginaprincipaldoTomcat
TudosobreaJSP,FernandoAnselmo,VisualBooks,2005:LivrotratasobreJSP
esobreautilizaodeJSTL
FabioGomesRocha
CSMCertifieldScrumMasterCISFCertifieldInformationSecurityFoundationbasedonISO/IEC27002DocenteSenaiemcursostecnicosedeformaocontinuada.Prof.UniversidadeTiradentesnoscursosdecomputao.Analista[...]