Cu r s od ed e s a r r o l l owe be n e n t o r n od es e r v i d o r
Pe d r oR. Be n i t od aRo c h aJ u l i od e2 0 1 2
por Curso de desarrollo web en entorno de servidor por
Pedro Raúl Benito da R ocha se encuentra bajo bajo una Licencia Creative Commons R econocimiento-NoComerc econocimiento-NoComercial-SinObraDerivada ial-SinObraDerivada !" #nported! #nported!
Licencia completa en
http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode
Para contactar con el autor:
[email protected]
Índice de contenido Prefacio....... Prefacio................ .................. ................... ................... .................. .................. ................... ................... .................. .................. .................. ......... 4 Tema 1..............................................................................................................5 ntrod!cci"n............................................................................................................. 5 ntrod!cci"n............................................................................................................. #odelos de programaci"n y tipos de aplicaciones en entornos cliente-servidor$ %eb y %eb &.0...........5 ntrod!cci"n a los leng!a'es de programaci"n en entorno servidor............................................. servidor............................................. ( ntrod!cci"n a los leng!a'es de marcas............................................................................ marcas............................................................................ 10 )plicaciones distrib!idas basadas en componentes.............................................................. componentes.............................................................. 11 *ontenedores de servlets................................................................................. servlets............................................................................................ ........... 1& #antenimiento del estado !sando protocolos +stateless,.......................................................13 ntrod!cci"n a las sesiones de !s!ario en entornos distrib!idos...............................................14 Prcticas................................................................................................................ Prcticas................................................................................................................ 1
Tema &................................ &............... .................................. .................................. .................................. .................................. ......................... ........ &1 #todos de separaci"n de la presentaci"n y la l"gica de negocio.............................................&1 Tecnologas P y m!lticapa........................................................................................ && *ontroles de servidor............................................................................ servidor................................................................................................. ..................... &3 #antenimiento del estado............................................................................................&5 #todos de generaci"n del contenido %eb........................................................................ %eb........................................................................ & 2orm!larios de resp!esta............................................................................................. resp!esta............................................................................................. & Prcticas................................................................................................................ Prcticas................................................................................................................ 31
Tema 3................................ 3............... .................................. .................................. .................................. .................................. ......................... ........ 34 ntrod!cci"n a las coneiones a servidores 67................................................................... 67................................................................... 34 8stablecimiento y !so de coneiones 67 en varios leng!a'es de programaci"n............................35 Tcnicas de representaci"n de datos en clientes %eb........................................................... %eb........................................................... 40 #ecanismos de edici"n de datos !sando clientes %eb........................................................... %eb........................................................... 41 mplementaci"n de altas$ ba'as y modificaciones. modificaciones................................................................ ............................................................... 41 9so de transacciones....................................................................... transacciones.................................................................................................. ........................... 4& tros orgenes de datos.............................................................................................. 44 Prcticas................................................................................................................ Prcticas................................................................................................................ 4
Tema 4................................ 4............... .................................. .................................. .................................. .................................. ......................... ........ 53 ntrod!cci"n a la ar!itect!ra de programaci"n orientadas a servicios ;)<...............................53 8stndares !sados en ar!itect!ras )........................................................................... )........................................................................... 54 Protocolos de intercambio de informaci"n en =#7............................................................... =#7............................................................... 55 >escripci"n del servicio: ?>7...................................................................................... ?>7...................................................................................... 5 nterfa@ del servicio %eb a partir de s! descripci"n.............. descripci"n....................... ................. ................ ................ ................. .............. .....5 5 9so de servicios %eb mediante !n cliente......................................................................... cliente......................................................................... 5A 8'emplo de !so de servicios %eb: Boogle )pp 8ngine............................................................& Prcticas................................................................................................................ Prcticas................................................................................................................ 3
Tema 5................................ 5............... .................................. .................................. .................................. .................................. ......................... ........ A ntrod!cci"n al procesamiento del lado del cliente.............................................................. cliente.............................................................. A Tecnologas relacionadas con la generaci"n dinmica de pginas %eb interactivas......................... interactivas.........................(0 (0 Cerificaci"n de la informaci"n en el cliente....................................................................... (& btenci"n remota de informaci"n. )D)=.......................................................................... )D)=.......................................................................... (3 #odificaci"n de la estr!ct!ra de la pgina %eb.................................................................. %eb.................................................................. (5 Prcticas................................................................................................................ Prcticas................................................................................................................ (
Tema ................................ ............... .................................. .................................. .................................. .................................. ......................... ........ 3 ntrod!cci"n............................................................................................................ 3 ntrod!cci"n............................................................................................................ #todos de re!tili@aci"n de c"digo e informaci"n........ informaci"n................. ................. ................ ................ ................. ................. ............. .....4 nterfaces de programaci"n )P disponibles....................................................................... disponibles....................................................................... 4 9so de repositorios de informaci"n................................................................................. informaci"n................................................................................. *reaci"n de repositorios de informaci"n a medida...............................................................A Prcticas................................................................................................................ Prcticas................................................................................................................ A3
Eeferencias.......................................................................................................A4
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Prefacio 8ste teto se ha escrito pensando en !n c!rso acelerado de programaci"n en el lado del servidor !sando el leng!a'e Dava como referencia$ pero al mismo tiempo teniendo en c!enta otros conocimientos !e debe poseer el desarrollador de este tipo de aplicaciones. 8l tema 1 ofrece !na visi"n general del entorno de traba'o en el !e se e'ec!tan las aplicaciones del servidor. 8ste tema tambin es adec!ado para personas con otros perfiles !e necesitan !na visi"n global de este tipo de desarrollos. 8l tema & continFa con la formaci"n te"rica ahondando en la generaci"n de contenido dinmico como e'e f!ndamental de las aplicaciones %eb de servidor. 7as prcticas !e se reali@arn en este tema servirn para afian@ar los contenidos materiali@ando alg!nos de los conceptos vistos. 7os al!mnos aprendern el significado del concepto de l"gica de negocio y s! sit!aci"n dentro del es!ema general. 8l tema 3 trata de la capa de acceso a datos$ de las alternativas y de s! !so eficiente. 8l tema 4 habla de los servicios %eb y de las tecnologas asociadas a esta ar!itect!ra tan etendida en la act!alidad y se intentar demostrar los beneficios !e tiene respecto a s! comple'idad inicial. 8l tema 5 reali@a !na introd!cci"n al procesado del lado del cliente como complemento a las tecnologas de servidor$ haciendo menci"n especial a la tecnologa )D)= para la creaci"n de aplicaciones mas eficientes. 8l tema habla de la re!tili@aci"n del c"digo. Tan importante como conocer el leng!a'e de programaci"n es conocer los rec!rsos complementarios !e ofrece y c"mo generar rec!rsos propios !e p!edan volver a !tili@arse en otros proyecto ahorrando costes. 8n el tema se implementa !na pe!eGa aplicaci"n en la !e se !tili@an diversos conocimientos ad!iridos d!rante todo el c!rso$ de manera !e se tenga !na visi"n global mediante !n prod!cto acabado. 8spero !e el lector disfr!te leyendo este teto y !e obtenga de el no solo !nos conocimientos bsicos$ si no tambin la chispa !e le incite a saber mas sobre el tema e investigar por s! c!enta. )l final del teto se han p!esto !nas referencias !e p!eden servir como p!nto de partida en este interesante via'e por el conocimiento. )nimo al lector a !e se embar!e en tan maravillosa y gratificante avent!ra.
Pgina 4
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Tema 1 ntrod!cci"n. elecci"n de ar!itect!ras y herramientas de programaci"n. b'etivos: •
•
•
*onocer las diferentes herramientas de programaci"n y ar!itect!ras !sadas en el desarrollo de aplicaciones %eb en entorno de servidor. dentificar los distintos tipos de ar!itect!ras y tecnologas !sadas en aplicaciones distrib!idas y aplicaciones %eb. ntrod!cci"n a los contenedores de servlets.
Introducción 8n la act!alidad se ha consolidado el !so de aplicaciones %eb en todo tipo de entornos$ p!esto !e s!s venta'as son evidentes a la hora de acceder a la informaci"n desde c!al!ier l!gar y desde c!al!ier dispositivo. 7a tendencia cada ve@ mayor hacia este tipo de aplicaciones en las !e los interfaces de !s!ario son pginas %eb$ y el procesamiento se reali@a en servidores hace !e dominar los elementos de este tipo de ar!itect!ras sea importante para las personas !e se enc!entran implicadas en el desarrollo de aplicaciones modernas. 8n este tema se ver !na imagen general de los entornos disponibles act!almente as como !na descripci"n de las tecnologas !e hacen posible el f!ncionamiento de aplicaciones en entorno del servidor.
Modelos de programación y tipos de aplicaciones en entornos cliente-servidor, web y web 2! 7os modelos de programaci"n$ as como los tipos de aplicaciones han evol!cionado desde los primeros das de la informtica hasta hoy. 7os entornos han ido pasando a lo largo del tiempo por s!cesivas fases !e a contin!aci"n se indican de forma simplificada: •
•
8ra +mainframe,. 7os primeros ordenadores eran m!y caros$ oc!paban m!cho espacio y !tili@aban m!chos rec!rsos. Por lo tanto eran caros de !sar y mantener y haba !e optimi@ar s! !so. 8n esta era eista !n Fnico ordenador al !e se acceda por diversos medios$ pero era el terminal +tonto, ;sin cp! ni memoria< el mtodo !e hi@o !e se pop!lari@ase s! !so en las empresas. Todo el procesamiento se reali@aba ecl!sivamente en el servidor !sando aplicaciones monolticas$ y raramente se com!nicaba con otros mainframes. 8ra +P*,. *on el desarrollo de los ordenadores personales la informtica se descentrali@a y el procesamiento de la informaci"n se reali@a en el e!ipo cliente. 8l ba'o coste de los e!ipos y el incremento de la potencia de los mismos hacen !e las empresas pe!eGas y medianas comiencen a informati@arse masivamente. e pasa de !n procesamiento en !n Fnico e!ipo a procesamiento
Pgina 5
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
en el propio terminal$ !e ahora tiene capacidad de proceso y almacenamiento$ !tili@ando diversas aplicaciones instaladas en el e!ipo. •
•
•
•
Traba'o en red. 7as redes locales hacen !e los e!ipos P* se interconecten entre s creando gr!pos de traba'o en red$ donde cada e!ipo comparte informaci"n con el resto. 7as aplicaciones sig!en estando instaladas en los clientes y los servidores se limitan a ofrecer rec!rsos de almacenamiento e impresi"n. nternet. *on la llegada de nternet al pFblico general comien@an a aparecer pe!eGas aplicaciones !e se e'ec!tan en servidores %eb para ofrecer informaci"n personali@ada a los clientes. 7os e!ipos con los !e se accede a la red sig!en e'ec!tando aplicaciones localmente y !san la red principalmente para acceder e intercambiar informaci"n. )parecen las aplicaciones con el modelo cliente-servidor. ?eb &.0. 7a llamada %eb &.0$ donde los contenidos dinmicos y personali@ados son la principal novedad$ hace !e el !so de aplicaciones en el servidor cre@ca eponencialmente. 8ste tipo de aplicaciones son cada ve@ mas comple'as y deben dar servicio a !n nFmero de !s!arios cada ve@ mayor. *omien@an a desarrollarse aplicaciones modeladas por capas donde servidores especiali@ados reali@an f!nciones concretas. 8ra +post-P*,. 8l !so de dispositivos m"viles como tabletas y smartphones !e !san intensivamente las aplicaciones de la red hacen !e el desarrollo de las tecnologas !sadas en el servidor tengan !e dar n!evas resp!estas a n!evos problemas. 7os leng!a'es de programaci"n deben ofrecer sol!ciones n!evas a estos problemas.
*omo se ha visto las aplicaciones han pasado por varias etapas. Primero aplicaciones monolticas basadas en mainframe$ l!ego aplicaciones !e se e'ec!tan en el cliente pero !e intercambian informaci"n por la red y mas tarde aplicaciones !e se e'ec!tan en servidores remotos y !e son accedidas por clientes ligeros y navegadores %eb$ evitando en lo posible el procesamiento de la informaci"n en el cliente. Por lo tanto se p!eden clasificar las aplicaciones en: •
•
•
•
#onolticas: se e'ec!tan en !n entorno de servidor y son accedidas mediante terminales. 7as aplicaciones se encargan de todas las tareas. on caras de mantener y presentan dific!ltades de escalabilidad. >e cliente: se e'ec!tan ecl!sivamente en el e!ipo cliente. 8l e!ipo en el !e se e'ec!tan no tiene por! estar conectadas a la red. on aplicaciones mono!s!ario. *liente-servidor: son aplicaciones instaladas en !n cliente !e se com!nican con !n servidor para intercambiar informaci"n. Tanto el cliente como el servidor procesan informaci"n$ ya !e es el cliente el encargado de interact!ar con el !s!ario y de presentar la informaci"n. 7as aplicaciones %eb y %eb &.0 son casos partic!lares de esta ar!itect!ra. #odelo de n-capas: las aplicaciones se modelan en capas$ cada !na de las c!ales tiene !na f!nci"n especfica. 9n tipo m!y !sado es la ar!itect!ra en 3 capas !e se ver mas adelante. Pgina
*!rso de desarrollo %eb en entorno de servidor •
D!lio de &01&
)plicaciones distrib!idas: las aplicaciones estn formadas por componentes !e se p!eden e'ec!tar en distintos servidores. 9san tecnologas de integraci"n y locali@aci"n de servicios para la interconei"n de componentes. 7os leng!a'es de programaci"n !sados para este tipo de aplicaciones proporcionan herramientas y mecanismos de abstracci"n para facilitar el desarrollo de aplicaciones ;)P< y facilitan la re!tili@aci"n de c"digo. 8ste tipo de aplicaciones s!elen ser desarrolladas por e!ipos m!ltidisciplinares donde los roles de cada integrante estn bien definidos.
Introducción a los lengua"es de programación en entorno servidor *omo se ha visto anteriormente los entornos de traba'o han ido evol!cionando a travs del tiempo. >esde el nacimiento de las primeras aplicaciones %eb los leng!a'es de programaci"n y las herramientas disponibles han ido adaptndose a las n!evas necesidades de escalabilidad$ seg!ridad e integraci"n de n!evas tecnologas. )tendiendo a las tecnologas empleadas en el desarrollo de aplicaciones en entorno de servidor podramos obtener el sig!iente listado: •
*B ;*ommon Bate%ay nterface<: es la tecnologa mas antig!a para el desarrollo de aplicaciones del lado del servidor. *onsiste en e'ec!tar !n programa !e procesa la informaci"n !e le proporciona el servidor %eb$ y !e dev!elve !na resp!esta !e ser enviada al navegador a travs del propio servidor. 8sta tecnologa es poco eficiente p!esto !e re!iere e'ec!tar !n programa por cada petici"n de cliente$ y adems no contempla aspectos tan importantes como la seg!ridad o la escalabilidad$ tarea !e se de'a en manos del servidor %eb. 9n programa *B p!ede estar escrito en c!al!ier leng!a'e !e p!eda res!ltar en !n programa e'ec!table por el servidor$ como por e'emplo *$ perl$ shell script$ etc. Por lo tanto depende f!ertemente de la plataforma en la !e se va a e'ec!tar.
•
7eng!a'es de scripting integrados con el servidor %eb. on leng!a'es !e se integran en las pginas %eb alo'adas en el servidor y !e son interpretadas por el mismo. 8l servidor %eb se apoya en !n m"d!lo !e es capa@ de e'ec!tar las "rdenes embebidas en las pginas %eb y prod!cir !n res!ltado dinmico. )lg!nos de los leng!a'es !e !san esta tecnologa son: ◦
◦
PHP: es !n leng!a'e interpretado !e se integra con el servidor %eb como !n m"d!lo o como !n programa *B. 8s !n leng!a'e m!y !sado y posee infinidad de m"d!los !e amplan s!s f!ncionalidades. ! sintais est heredada del leng!a'e * y de los shell script. Tambin tiene la posibilidad de !sar programaci"n orientada a ob'etos$ y posee potentes f!nciones para integrarlo con otros prod!ctos y com!nicarse en red. )P: es tambin !n leng!a'e interpretado embebido en pginas %eb propietario de #icrosoft y !e solamente f!nciona en plataformas ?indo%s. e basa en Cis!al Iasic cript pero con bastantes aGadidos. Pgina (
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
7a versi"n mas reciente se denomina )P.Jet y se basa en la tecnologa de componentes .net de #icrosoft$ !e le dota de me'ores capacidades y de !na estr!ct!ra de componentes distrib!ida. ◦
•
DP ;Dava erver Pages<: es !na tecnologa !e !sa Dava como leng!a'e de programaci"n. Tambin !sa c"digo embebido en HT#7 pero se apoya en la tecnologa servlet de Dava 88 como entorno de e'ec!ci"n.
ervidores de aplicaciones empresariales. on m!inas !e e'ec!tan aplicaciones o parte de ellas y !e traba'an en con'!nto con otros servidores para ofrecer !na aplicaci"n completa. frecen servicios %eb o bien servicios de componentes !e interactFan con otros servidores. e integran en entornos de tecnologas de ncapas. ◦
ervlets: !sa la tecnologa Dava 88 para e'ec!tar aplicaciones del lado del servidor. Proporciona ay!das al programador en forma de )Ps de programaci"n !e ofrecen distintos servicios de ba'o nivel para !e el desarrollo de aplicaciones sea mas rpido y eficiente$ al re!tili@ar el c"digo ya escrito. e basa en componentes distrib!idos !e formas !na m!ina virt!al donde se e'ec!ta la aplicaci"n completa.
7os leng!a'es de programaci"n mas etendidos son ;en orden alfabtico< )P.net$ Dava y PHP. ) contin!aci"n se m!estran varios e'emplos del programa +Hola m!ndo, en distintos leng!a'es. #include
int main() { printf(“Hola mundo”); return 0; }
Programa “Hola mundo” para un CGI escrito en lenguaje C.
8ste programa habra !e compilarlo y generar !n e'ec!table. 8ste *B se podra haber escrito en c!al!ier otro leng!a'e$ como shell script o perl. 7os *B reciben los datos mediante variables de entorno y entrada estndar ;stdin< y ofrecen los res!ltados mediante salida estndar ;stdo!t<.
<%@ Page Language="VB" %> <script runat="server"> Sub Page_Load(Sender As Obect! As ventArgs# $eo&ord'e)t = "$oa *undo'" nd Sub <+script>
Pgina
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Hola mundo (en A!."$)<%title> <%head> <&od'>
<%&od'> <%html>
Programa “Hola Mundo” escrito en ASP.net.
8l fichero !e lo contiene tendr etensi"n asp ;por e'emplo hola.asp<.
Hola mundo (en !H!)<%title> <%head> <&od'>
<-p.p ec.o /$oa *undo01 -> <%&od'> <%html>
Programa “Hola mundo” escrito en PHP.
8l fichero !e contiene este c"digo tendr etensi"n php$ por e'emplo hola.php.
Hola mundo (en !)<%title>
<%2 String *essage = "$oa *undo"1 %> <%head> <&od'>
<%= *essage%> <%&od'> <%html>
Programa “Hola mundo” escrito en Java usando JSP.
8l fichero !e contiene este programa tendr etensi"n 'sp$ por e'emplo hola.*sp$ y necesitar formar parte de !na aplicaci"n %eb. 8n los servidores de aplicaciones Dava a esta acci"n se le llama +desplegar la aplicaci"n,. 7os ficheros 'sp se compilan +al v!elo, cada ve@ !e cambian.
import *a+a.io.,; import *a+a.ser+let.,; import *a+a.ser+let.http.,; pu&lic class Hello-orld etends Httper+let { pu&lic +oid doet(Httper+let/euest re1 Httper+let/esponse res) thro2s er+letception1 34ception {
Pgina A
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
res.set5ontent$'pe(6tet%html6); !rint-riter out 7 res.8et-riter();
out.println(66); out.println(6Hola mundo (ser+let)<%title><%head>6); out.println(6<&od'>6); out.println(6Hola mundo6); out.println(6<%&od'><%html>6); } %% doet
} %% Hello-orld
Programa “Hola mundo” escrito como un servlet en Java.
8ste programa se deber g!ardar en !n fichero con etensi"n .'ava$ como por e'emplo hola.*a+a. 7!ego se compila y se despliega dentro de !na aplicaci"n.
Introducción a los lengua"es de marcas 7os leng!a'es de marcas son importantes en el desarrollo de aplicaciones %eb$ ya !e hay m!chos procesos en los !e se !tili@an este tipo de leng!a'es. 8isten diferentes tipos de leng!a'es de marcas dependiendo de la f!nci"n a la !e estn orientados: •
•
•
Presentaci"n: son leng!a'es !e se orientan a formatear el contenido para presentarlo de determinada forma. Procedimientos: est orientado a la presentaci"n y edici"n del contenido del doc!mento. >escriptivo: son leng!a'es !e se !tili@an para describir la informaci"n contenida en el doc!mento.
7os principales leng!a'es de marcas !sados en las tecnologas %eb son descriptivos$ ya !e estr!ct!ran la informaci"n e indican el tipo de la misma. •
•
•
•
B#7: es !n leng!a'e orientado a la organi@aci"n y eti!etado de doc!mentos. 8s la base para otros leng!a'es de marcas. HT#7: es !na etensi"n de B#7. irve para describir la estr!ct!ra y el contenido formal del teto$ as como incl!ir en el doc!mento otros elementos como por e'emplo imgenes y scripts. e !tili@a f!ndamentalmente en pginas %eb. =#7: es !na etensi"n de B#7. e cre" por el ?3 para estr!ct!rar doc!mentos grandes. e pretende !e sea ;y es< !n estndar para intercambiar informaci"n de forma estr!ct!rada entre varias plataformas. =HT#7: es !na implementaci"n del leng!a'e HT#7 epresado como =#7 vlido.
8l !so de los distintos leng!a'es de marcas se ir viendo a travs del resto de temas$ ya !e se emplean en diferentes l!gares con diferentes !sos.
Pgina 10
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
#plicaciones distribuidas basadas en componentes 7as aplicaciones distrib!idas son a!ellas c!yas partes se e'ec!tan en m!inas separadas pero conectadas por red. )lg!nos e'emplos de modelos distrib!idos son: cliente-servidor$ ar!itect!ra de tres capas y ar!itect!ras m!ltinivel. 8n las aplicaciones distrib!idas cada componente se e'ec!ta en !n l!gar determinado dentro de las distintas capas o niveles de la ar!itect!ra. 9n e'emplo de este tipo de aplicaciones es la tecnologa Dava 88 ;Dava 8nterprise 8dition<. 8l modelo de aplicaci"n Dava 88 consiste en el !so del leng!a'e Dava en !na m!ina virt!al Dava como base$ y !n entorno controlado llamada +middle tier, !e tiene acceso a todos los servicios empresariales. 8l middle tier s!ele e'ec!tarse en !na m!ina dedicada. Por lo tanto es !n modelo m!ltinivel en el !e la l"gica de negocio y la presentaci"n corren a cargo del desarrollador y los servicios estndar del sistema a cago de la plataforma Dava 88. Para las aplicaciones empresariales !sa !na ar!itect!ra m!ltinivel distrib!ida donde la l"gica de la aplicaci"n se divide en varios componentes segFn s! f!nci"n y estos componentes residen en distintas m!inas dependiendo del nivel al !e pertene@ca el componente de la aplicaci"n. 7as distintas capas son: •
*lient-tier: componentes !e se e'ec!tan en la m!ina cliente.
•
?eb-tier: componentes !e se e'ec!tan en el servidor Dava 88.
•
I!siness-tier: componentes !e se e'ec!tan en el servidor Dava 88.
•
8-tier ;8nterprise nformation ystems<: soft%are !e se e'ec!ta en el servidor 8 ;normalmente !n servidor de bases de datos<.
7as aplicaciones Dava 88 p!eden ser aplicaciones de 3 o 4 capas$ a!n!e por el nFmero de actores implicados se s!ele decir !e es !na ar!itect!ra de tres capas. 7as aplicaciones Dava 88 estn formadas por componentes. 7os componentes son pie@as de soft%are a!tocontenidas y f!ncionales en si mismas !e se integran con la aplicaci"n y se com!nican con otros componentes. e p!eden clasificar en: •
)plicaciones cliente y applets$ !e corren en el cliente.
•
ervlets$ componentes DP y Davaerver 2aces !e corren del lado del servidor.
•
*omponentes 8DI ;8nterprise Dava Ieans< !e corren del lado del servidor.
7os clientes p!eden ser:
Pgina 11
*!rso de desarrollo %eb en entorno de servidor •
•
•
D!lio de &01&
)plicaciones cliente: s!elen ser aplicaciones grficas o en lnea de comandos !e se com!nican con la capa de negocio directamente o a travs de coneiones HTTP. *lientes ?eb: tienen dos partes$ pginas %eb dinmicas !e contienen varios elementos !e se generan en el %eb-tier y !n navegador %eb !e m!estra las pginas generadas. 7as tareas pesadas las e'ec!ta !n servidor Dava 88. )pplets: son pe!eGos programas escritos en Dava e inclr!stados en pginas %eb. 8stos programas se e'ec!tan en !na m!ina Dava instalada en el navegador.
8l mtodo preferido es !sar componentes %eb$ p!esto !e se desliga el diseGo de las pginas con la programaci"n$ p!dindose hacer por e!ipos diferentes o m!ltidisciplinares. 7os componentes we p!eden ser servlets o pginas creadas con tecnologas DP o Davaerver 2aces. •
•
•
ervlets: son clases 'ava !e se e'ec!tan en el servidor$ procesan peticiones y generan resp!estas de forma dinmica. Pginas DP: son ficheros de teto !e se e'ec!tan como servlets pero c!yo contenido me@cla elementos estticos con elementos interpretados. Davaerver 2aces: es !na tecnologa !e se apoya en servlets y DP para proporcionar !n con'!nto de herramientas para crear interfaces de !s!ario para aplicaciones %eb.
7os componentes de negocio son los !e implementan la l"gica de la aplicaci"n. Ees!elven los problemas para los !e se diseG" la aplicaci"n. P!eden e'ec!tarse en la capa %eb o en la capa de negocio. on los componentes !e se com!nican con el almacenamiento de datos. 8n Dava eisten las 8DI ;8nterprise Dava Ieans< !e es !na )P de Dava 88 !e indica como los servidores de aplicaciones proveen ob'etos del lado del servidor llamados 8DIs. 8s !n modelo distrib!ido del lado del servidor para abstraer al programador de varios aspectos generales.
$ontenedores de servlets 9n contenedor de servlets es !n componente de !n servidor %eb !e interactFa con los servlets. mplementa el componente %eb de la ar!itect!ra Dava 88. !s f!nciones principales son las de mane'ar el ciclo de vida de !n servlet$ mapearlo a !na 9E7 y especificar !n entorno de traba'o para el servlet. )dems se oc!pa de c!estiones como: seg!ridad$ conc!rrencia$ transacciones$ implementaci"n ;deployment<$ etc.
Pgina 1&
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
9n servlet es !na clase de Dava !e etiende las capacidades del servidor !e alo'a la aplicaci"n !sando !n modelo petici"n-resp!esta. e podra pensar como !n applet !e corre del lado del servidor. 8s conforme a la )P Dava ervlet$ no est ligado a ningFn protocolo en concreto$ pero comFnmente se !sa '!nto con HTTP. e !san en los servidores %eb para generar contenido dinmico. 9no de los contenedores de servlets mas completos y pop!lares es )pache Tomcat. )pache Tomcat es !n servidor HTTP 1.1 adems de !n contenedor de servlets$ por lo !e p!ede hacer las f!nciones de frontal K contenedor de servlets o contenedor de servlets a!t"nomo.
Mantenimiento del estado usando protocolos %stateless& 7as aplicaciones %eb !tili@an el protocolo HTTP para com!nicar el cliente con el servidor$ y tambin como mtodo de com!nicaci"n entre distintos componentes. 8ste protocolo tiene !na caracterstica importante: no mantiene el estado entre peticiones$ es !n protocolo +stateless,. 8sto !iere decir !e trata cada petici"n de forma independiente de las anteriores. 7os protocolos sin estado tienen venta'as e inconvenientes: son m!y simples pero a veces es necesario incl!ir mas informaci"n en cada petici"n y sta ha de ser procesada. 8sta caracterstica es !na gran desventa'a c!ando se necesita mantener informaci"n entre peticiones$ por e'emplo para saber el !s!ario !e est accediendo a la %eb o en ! p!nto de !n procedimiento se enc!entra. Para paliar esta desventa'a eisten varios mtodos !e ay!dan a mantener cierta informaci"n entre distintas peticiones: •
•
*ooLies: consiste en almacenar en el cliente informaci"n necesaria para relacionarlo con peticiones anteriores$ como por e'emplo !n identificador de !s!ario ! otra informaci"n relevante. 8ste mtodo tiene la desventa'a de !e el !s!ario p!ede desactivar el !so de cooLies y por lo tanto no ser vlido. ToLens: consiste en generar !n identificador Fnico y agregarlo a la 9E7$ de forma !e al leer la 9E7 el servidor p!ede ofrecer informaci"n !e relacione la petici"n act!al con peticiones anteriores.
8n ambos casos se p!ede combinar con informaci"n almacenada en el servidor$ de forma !e los datos !e se desean conservar entre peticiones se mantenga en el servidor y se !se la informaci"n del cliente para locali@ar dichos datos.
Pgina 13
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Introducción a las sesiones de usuario en entornos distribuidos 9na caracterstica importante de los leng!a'es de programaci"n del lado del servidor es el !so de sesiones de !s!ario. e entiende por sesi"n de !s!ario la informaci"n mantenida por el servidor !sada en las peticiones !e vienen de !n mismo navegador en !n intervalo de tiempo determinado. *on este mtodo se permite !na cierta forma de persistencia de la informaci"n entre peticiones de forma !e se mantiene el estado de la aplicaci"n a!n!e se !se !n protocolo sin estado. *!ando !n !s!ario accede a !na aplicaci"n %eb sta p!ede b!scar informaci"n proporcionada por el cliente para establecer !na sesi"n. 7os servlets y los programas en PHP$ por poner dos e'emplos$ p!eden establecer !n identificador de sesi"n a partir de !na cooLie almacenada en el cliente o a travs de la 9E7 !e se solicita el servidor. tros leng!a'es !tili@an otros mtodos como por e'emplo el paso de parmetros en las peticiones B8T y PT para crear man!almente !na sesi"n de !s!ario. Jormalmente las sesiones de !s!ario mane'adas por los leng!a'es de programaci"n del lado del servidor son mas fciles de !sar y s!elen ser mas seg!ras !e las sesiones creadas y gestionadas por el propio programador. 7as sesiones gestionadas por el servidor permiten almacenar informaci"n en el servidor mientras d!re la sesi"n. 7a forma de almacenar la informaci"n de la sesi"n depende de la plataforma y del leng!a'e de servidor !sado. >e todos modos si se !iere almacenar cierta informaci"n man!almente siempre se p!ede !sar el identificador de sesi"n como ndice de bFs!eda en !n almacenamiento controlado por el programador. 8n Dava 88 las peticiones HTTP !e se !san en los servlets p!eden tener asociada !na sesi"n mane'ada por el servidor. 8sta sesi"n se establece a travs de !na cooLie del navegador$ y si ello no es posible entonces se hace a travs de la reescrit!ra de la 9E7. 8n el sig!iente e'emplo se obtiene !n identificador de sesi"n en !n servlet. e han resaltado las partes de c"digo mas interesantes: import import import import import import
*a+a.io.34ception; *a+a.io.!rint-riter; *a+a.ser+let.er+letception; *a+a.ser+let.http.Httper+let; *a+a.ser+let.http.Httper+let/euest; *a+a.ser+let.http.Httper+let/esponse;
i*port ava)'servet'.ttp'$ttpSession1 %,, , 9author pedro ,% pu&lic class e*emploesion etends Httper+let { protected +oid process/euest(Httper+let/euest reuest1 Httper+let/esponse response) thro2s er+letception1 34ception { !rint-riter out 7 response.8et-riter();
$ttpSession sesion = re3uest'getSession(true#1 tr' {
Pgina 14
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
out.println(63dentificador de sesi:oacute;n 6 sesion'get4d(#); } finall' { out.close(); } } %, . . . resto del c=di8o del ser+let . . ,% }
Servlet !ue muestra el identi"icador de sesi#n asignado por el servidor.
8isten casos en los !e por la propia ar!itect!ra de la aplicaci"n o bien por el tamaGo de los datos !e mane'a el servidor no deben ser g!ardados como parte de la sesi"n$ por e'emplo c!ando se s!ben ficheros$ ya !e la informaci"n de sesi"n en Dava se g!arda como !n ob'eto en el servidor$ y oc!pa memoria$ haciendo !e los re!isitos de la aplicaci"n se disparen y degeneren en !na aplicaci"n poco eficiente. Para estos casos se s!ele !sar algFn tipo de almacenamiento sec!ndario$ como !na base de datos o !n sistema de ficheros en red$ !e permite almacenar informaci"n relacionada con la sesi"n de !s!ario pero !e no mane'a el servidor. 8n estos casos hay !e establecer mtodos !e limpien el almacenamiento sec!ndario c!ando la informaci"n de sesi"n ya no es necesaria. 8n los entornos distrib!idos en los !e eiste mas de !n servidor para e'ec!tar !na aplicaci"n como por e'emplo gr!pos de servidores y entornos de alta escalabilidad$ el mantenimiento de la sesi"n p!ede ser problemtico. 8n estos entornos se p!eden !sar varias estrategias para mantener la sesi"n c!ando se !san varios servidores: •
•
)finidad: cada sesi"n de !s!ario se asigna a !n servidor$ de forma !e siempre es el mismo servidor el !e atiende a !na sesi"n y por lo tanto el problema !eda sol!cionado. Eeplicaci"n: la sesi"n se replica entre todos o parte de los servidores de forma !e c!ando llega !na petici"n de !s!ario se rec!pera la sesi"n en c!al!iera de los servidores.
8s m!y comFn !sar varios servidores !e traba'an en paralelo para atender servicios de alta demanda o !e necesitan gran disponibilidad$ por lo !e mantener la sesi"n de !s!ario envarios servidores es !na necesidad m!y importante. e proc!ra !e los mtodos de mantenimiento de sesi"n sean transparentes para las aplicaciones$ a!n!e la implementaci"n en cada tipo de servidor sea distinta. Por s!p!esto siempre se p!ede hacer de forma man!al si el programador as lo desea. 8n el tema & se ver con mas prof!ndidad el mane'o de sesiones en Dava.
Pgina 15
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Pr'cticas Instalación de un contenedor de servlets( Tomcat 8sta prctica il!stra c"mo instalar !n servidor Tomcat en !n ordenador con ?indo%s. IMP$%&A'&() (s necesario tener instalado Java * o superior.
1
>escargar )pache Tomcat desde http://tomcat.apache.org/ 8l fichero a descargar depender de la versi"n de ?indo%s en la !e se vaya a instalar ;3& o 4 bits<. 8 recomendable descargar el +ervice nstaller, si se !iere !e corra como !n servicio de ?indo%s.
&
8'ec!tar el instalador.
3
P!lsar +Jet,.
4
)ceptar el contrato de licencia. P!lsar + )gree,.
5
eleccionar la instalaci"n completa ;2!ll< y p!lsar +Jet,. Pgina 1
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Eellenar los datos como se indica.
(
)ceptar el resto de parmetros por defecto en las sig!ientes pantallas.
2inali@ar la instalaci"n.
Pgina 1(
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
9na ve@ terminada la instalaci"n de )pache Tomcat:
Se +a creado un grupo de programas en el men, inicio tal - como muestra la "igura.
Para arrancar - parar &omcat se puede usar el gestor de servicios de indows.
Pgina 1
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
&omcat se puede gestionar desde un icono en la arra de tareas.
Para comprobar !e se ha instalado correctamente se p!ede acceder a la direcci"n http://localhost:00/ y comprobar !e no da error.
Pgina 1A
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Instalación de un entorno )#MP( )indows * #pac+e * PP * My./ e instalar el servidor )mpps descargado desde http://%%%.ampps.com/do%nload . e descarga el pa!ete ! se sig!en las instr!cciones en pantalla. 8s importante instalar el servidor #y67 p!esto !e se !tili@ar en e'ercicios posteriores.
Pgina &0
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
Tema 2 Beneraci"n dinmica de pginas %eb. b'etivos: •
•
*onocer las distintas formas en las !e se genera el contenido %eb dinmico. *onocer los mtodos y tecnologas !sadas act!almente en la programaci"n del lado del servidor.
M0todos de separación de la presentación y la lógica de negocio *on la llegada de las aplicaciones %eb empresariales y la pop!lari@aci"n del !so de nternet$ las aplicaciones han tenido !e ir evol!cionando para dar resp!esta rpida a !n elevado nFmero de !s!arios. Tambin se han tenido !e me'orar las medidas de seg!ridad y de interoperabilidad$ ya !e en m!chas ocasiones las aplicaciones %eb deben acceder a servicios ya implementados sean propios o de terceros. 9na de las principales evol!ciones ha consistido en separar las aplicaciones en varias partes$ de forma !e cada !na de ellas se especiali@a en !n cometido. 8ste tipo de ar!itect!ras presenta importantes venta'as$ como por e'emplo: •
•
•
•
•
#e'oras en el tiempo empleado en desarrollar las aplicaciones. e p!eden destinar rec!rsos distintos para las distintas partes$ p!diendo reali@ar el desarrollo de cada componente en paralelo con el resto. #ayor escalabilidad de las aplicaciones. 7os entornos de las aplicaciones p!eden crecer de forma mas rpida y ordenada al separar cada !na de las partes en servidores fsicos distintos. Por e'emplo$ se p!eden emplear gran'as de servidores %eb para la parte esttica y frontales$ y clFsteres de bases de datos para el almacenamiento y rec!peraci"n de la informaci"n. eg!ridad me'orada. 8l acceso de cada componente p!ede ser a!ditado y a!tori@ado$ de forma !e no se p!eda acceder a informaci"n a la !e no se tenga permiso. 9so de distintas tecnologas. )l !sar estndares para la com!nicaci"n e intercambio de la informaci"n se p!ede emplear en cada parte las tecnologas mas adec!adas en cada momento. #antenimiento simplificado. 7os cambios en !na de las partes no tienen por ! afectar al resto$ dems se p!eden locali@ar los errores con mayor eactit!d as como facilitar los cambios !e de deban reali@ar en las aplicaciones.
8isten varios mtodos para la separaci"n de la presentaci"n y la l"gica de negocio. 7os mas importantes son: •
*liente-servidor: el cliente interactFa con el !s!ario y el servidor procesa la informaci"n. 8s !no de los mtodos mas antig!os$ y !e ha dado l!gar a n!evas ar!itect!ras. Pgina &1
*!rso de desarrollo %eb en entorno de servidor •
•
D!lio de &01&
)r!itect!ras m!lticapa: consiste en dividir la aplicaci"n en varios niveles o capas !e reali@an tareas concretas. 7a informaci"n fl!ye entre las capas contig!as en !na organi@aci"n vertical. )r!itect!ra #odelo M Cista M *ontrolador ;#C*<: consiste en separar la aplicaci"n en tres partes$ el modelo ;datos y reglas de negocio<$ la vista ;representaci"n de los datos< y el controlador ;proceso de los datos de entrada<. 7a diferencia f!ndamental con la ar!itect!ra de tres capas reside en la forma en !e se com!nican los tres elementos.
Tecnologas P y multicapa Para lograr la separaci"n de la presentaci"n de la l"gica de negocio se !tili@an tecnologas basadas en la programaci"n orientada a ob'etos y m!lticapa. 7a combinaci"n de estas tecnologas prod!ce aplicaciones c!yas venta'as ya se han visto en el apartado anterior. >entro de las tecnologas !tili@adas destacan las basadas en Dava y en )P.net. Dava$ como leng!a'e orientado a ob'etos$ proporciona clases !e implementan tecnologas !sadas en distintas capas. 7as tecnologas mas importantes son: •
•
•
•
•
Davaerver 2aces: traba'a en la capa %eb del servidor proporcionando mtodos para separar la representaci"n y el comportamiento de las aplicaciones %eb. implifica la creaci"n de interfaces de !s!ario. Dava ervlet technology: etiende la capacidad de !n servidor %eb mediante clases !sando !n modelo de petici"n-resp!esta. Traba'a en el middle-tier. Davaerver Pages: simplifica y acelera la creaci"n de contenido %eb dinmico embebiendo c"digo Dava directamente en los doc!mentos HT#7 o =#7. Tecnologas de servicios %eb ;%eb services<: D)=-E$ D)=-?$ D)I=$ D)=-EP*$ =#7 messagging$ etc. 8nterprise Ieans: son controles del servidor !e ay!dan al programador proporcionando servicios de ba'o nivel !e ay!dan al desarrollo de aplicaciones distrib!idas.
Dava proporciona prototipos y )Ps para facilitar el !so de estas tecnologas. )P.net$ a travs de s! herramienta de desarrollo Cis!al t!dio$ proporciona controles para implementar las distintas capas basndose en tecnologas propietarias de #icrosoft y en estndares. 9n e'emplo de estas tecnologas son los controles de servidor$ como por e'emplo: •
*ontroles de servidor HT#7.
•
*ontroles de servidor %eb.
•
*ontroles %eb bsicos.
•
*ontroles de validaci"n. Pgina &&
*!rso de desarrollo %eb en entorno de servidor •
*ontroles de !s!ario.
•
*ontroles personali@ados.
D!lio de &01&
$ontroles de servidor 8n esta secci"n se disc!tir acerca de los controles de servidor en Dava$ !sando las tecnologas Davaerver 2aces$ ervlet y 8nterprise Ieans. JavaServer /aces es !n frame%orL para constr!ir interfaces de !s!ario en aplicaciones %eb. !s componentes principales son: •
•
•
2rame%orL para componentes de interfa@ grfica de !s!ario. 9n modelo fleible para renderi@ar los componentes en diferentes leng!a'es de marcas incl!yendo HT#7. 9n Lit de renderi@ado para generar HT#7 4.01.
7os componentes de la interfa@ grfica de !s!ario ;B9< soportan las sig!ientes caractersticas: •
Calidaci"n de entrada.
•
#ane'o de eventos.
•
*onversi"n de datos entre ob'etos del modelo y componentes.
•
*onfig!raci"n de la navegaci"n por la pgina.
8n la versi"n se han aGadido$ entre otras cosas: •
2acelets$ !e reempla@an a la tecnologa DP !sando ficheros =HT#7.
•
oporte )D)=.
Para ello !tili@a )Ps estndar de Dava y ficheros de config!raci"n =#7. Java Servlet permite procesar las peticiones del cliente y generar !na resp!esta. 7os servlets son programas escritos en Dava !e p!eden mantener !n estado respecto al cliente. 7os servlets son componentes de servidor !e responden a peticiones de clientes$ normalmente por HTTP.
8n este man!al se vern principalmente servlets !e f!ncionan con el protocolo HTTP. 7a estr!ct!ra de !n servlet es la de !na clase Dava !e etiende la clase abstracta Httpervlet. 7os servlets tienen !n ciclo de vida !e controla el servidor. 8ste ciclo de vida comien@a con la carga de la clase y la instanciaci"n del servlet. 9na ve@ instanciado se llama al mtodo init;< y el servlet !eda listo para atender peticiones. *ada petici"n !e se reali@a provoca !na llamada al mtodo service;<. 8l ciclo de vida del servlet termina por alg!na de las sig!ientes circ!nstancias: •
Termina la e'ec!ci"n del servidor. Pgina &3
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
e reempla@a el servlet por !na n!eva versi"n.
•
i el servidor llama al mtodo destroy;<. 8l servidor decide !e el servlet debe finali@ar s! e'ec!ci"n p!esto !e ya no se !sa$ por e'emplo.
•
7a estr!ct!ra de !n servlet se p!ede ver en el sig!iente e'emplo: import *a+a.io.,; import *a+a.ser+let.,; import *a+a.ser+let.http.,; pu&lic class *meploencillo etends Httper+let { pu&lic +oid doet(Httper+let/euest peticion1 Httper+let/esponse resuesta) thro2s er+letception1 34ception {
respuesta.set5ontent$'pe(6tet%html6); !rint-riter out 7 respuesta.8et-riter();
out.println(66); out.println(6Hola mundo<%title><%head>6); out.println(6<&od'>6); out.println(6Hola mundo6); out.println(6<%&od'><%html>6);
} }
(jemplo de servlet sencillo.
7os sig!ientes mtodos son alg!nos de los mas !sados en los servlets: •
doet(): se e'ec!ta en peticiones de tipo B8T.
•
do!ost(): se e'ec!ta en peticiones de tipo PT.
•
do!ut(): se e'ecyta en peticiones de tipo P9T.
•
ser+ice(): recibe la petici"n HTTP y la redirige a alg!na de las anteriores.
7os mtodos anteriores reciben !n par de ob'etos como parmetros: •
•
HttpervletEe!est: !n ob'eto !e almacena la petici"n. e p!ede preg!ntar al ob'eto sobre parmetros$ sesiones y en general sobre todo lo referente a las peticiones. HttpervletEesponse: es !n ob'eto !e permite manip!lar la resp!esta !e el servidor ofrecer al cliente. 7a resp!esta p!ede contener c"digos de error$ cooLies$ redirecciones a otras pginas$ se p!eden insertar cabeceras$ etc.
9n servlet$ como c!al!ier programa Dava$ p!ede crear ob'etos y !tili@ar otras clases$ teniendo en c!enta las limitaciones del servidor ;por e'emplo no se p!eden crear aplicaciones !e lean del teclado o !e !sen elementos de la librera s%ing<.
Pgina &4
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
7os (nterprise 0eans re!ieren !n servidor de aplicaciones para f!ncionar. on componentes del servidor !e encaps!la la l"gica de la aplicaci"n$ proporcionando servicios a otras partes de la aplicaci"n. 7os enterprise beans simplifican el desarrollo de grandes aplicaciones distrib!idas$ descargando al programador de tareas de ba'o nivel. Tambin permiten crear clientes mas ligeros y separar la presentaci"n de la l"gica. tra de las venta'as de los 8I es la re!tili@aci"n$ ya !e !n mismo componente se p!ede !sar varias veces en !na aplicaci"n y/o en distintas aplicaciones !e corren en !n mismo servidor de aplicaciones. e deben !sar 8I c!ando la aplicaci"n necesite crecer y distrib!irse entre varios servidores$ c!ando se necesite integridad de los datos ;los 8I soportan transacciones< o c!ando se !iera acceder desde varios clientes distintos. 8isten dos tipos de 8I: >e sesi"n: e'ec!tan !na tarea para !n cliente. pcionalmente p!eden implementar !n servicio.
•
>irigidos por mensa'es: actFa como !n oyente para !n tipo partic!lar de mensa'e. Permite procesar mensa'es de forma asncrona.
•
Mantenimiento del estado 8n Dava 88 la sesi"n se representa mediante !n ob'eto Httpession. 7a )P proporciona varios mecanismos para implementar las sesiones. 7as sesiones se mantienen con cooLies o reescribiendo la 9E7. i !n cliente no soporta cooLies o tiene el soporte de cooLies desactivado se !tili@a la reescrit!ra de 9E7. 7as sesiones tienen !n tiempo de espera ;timeo!t< de forma !e si no se accede a la informaci"n de !na sesi"n en !n tiempo determinado la sesi"n cad!ca y se destr!ye. Tambin se p!ede terminar eplcitamente !na sesi"n. 7os componentes %eb p!eden enviar y recibir informaci"n de sesi"n siempre !e mane'en !na petici"n !e pertenece a !na misma sesi"n y estn en el mismo conteto %eb. 8n el tema 1 se vio !na breve introd!cci"n al mane'o de sesiones en Dava$ con !n e'emplo !e il!straba c"mo obtener el identificador de sesi"n asociado a !n cliente. 8n la doc!mentaci"n de Dava 88 se detallan los mtodos !e p!eden !sarse en !n ob'eto Httpession: http://docs.oracle.com/'avaee//api/'ava/servlet/http/Httpession.html ) partir de la especificaci"n ervlet &.& de Dava los mtodos para el mane'o de sesiones !e se aconse'a !sar se basan en atrib!tos. 7os mas interesantes son: •
•
•
8etAttri&ute"ames(): obtiene !na en!meraci"n de los nombres de los atrib!tos almacenados en la sesi"n. 8etAttri&ute(trin8 atri&uto): dev!elve el ob'eto asignado a !na sesi"n ba'o el nombre de atrib!to dado$ o nullsi no eiste. setAttri&ute(trin8 nom&re1 4&*ect atri&uto) : asigna !n ob'eto a !na sesi"n ba'o el nombre de atrib!to dado.
Pgina &5
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
remo+eAttri&ute(trin8 nom&re) : elimina la asignaci"n del ob'eto a la sesi"n.
•
in+alidate(): misma.
•
elimina la sesi"n y todas las asignaciones de ob'etos a la
8l sig!iente e'emplo il!stra el !so de las sesiones en Dava 88: pu&lic class contador etends Httper+let { protected +oid process/euest(Httper+let/euest reuest1 Httper+let/esponse response) thro2s er+letception1 34ception { response.set5ontent$'pe(6tet%html;charset7$?@6); !rint-riter out 7 response.8et-riter();
$ttpSession sesion = re3uest'getSession(true#1 3nte8er contador 7 0; tr' { contador 7 (3nte8er) sesion'getAttribute("contador"#1 if (contador 77 null) { contador 7 0; } contador ;
sesion'setAttribute("contador"! contador#1 } finall' { out.println(6Ha +isitado esta pa8ina 6 contador 6 +eces.6); out.close(); }
}
Implementaci#n de un contador usando sesiones.
Dava 88 proporciona otros mtodos para el control de las sesiones$ incl!yendo los +ession 7istener,$ !e son clases !e p!eden +esc!char, y act!ar c!ando se crean y se destr!yen sesiones. 7os servidores modernos$ ya sean contenedores de servlets o servidores de aplicaciones$ implementan mtodos para mantener la sesi"n independientemente del servidor !e atienda la petici"n de !n cliente en entornos donde se !tili@an varios servidores traba'ando en paralelo. 9n e'emplo de toolLit !sado para replicar las sesiones entre servidores es Dgro!ps ;http://%%%.'gro!ps.org/< !e implementa !n sistema de com!nicaci"n confiable entre servidores !sando m!lticast. )pache Tomcat p!ede !sar mtodos de afinidad implementada en servidores frontales o bien !sar tcnicas de replicaci"n para el mantenimiento de la sesi"n en !n cl!ster de servidores.
M0todos de generación del contenido web 9n servidor %eb debe enviar !n contenido como resp!esta a las peticiones del cliente. 8ste contenido p!ede ser esttico o dinmico. 8l contenido dinmico se genera en el servidor y p!ede ser diferente en f!nci"n de la petici"n !e efectFa el cliente. 8isten diferentes mtodos de generaci"n de contenido %eb segFn el leng!a'e y la tecnologa empleados. Pgina &
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
)tendiendo a la forma de obtener el c"digo HT#7 se p!eden citar los sig!ientes mtodos: •
*"digo embebido. 8n !n fichero de teto con c"digo HT#7 se insertan marcas e instr!cciones !e son interpretadas por el servidor. 8l res!ltado es la s!ma del c"digo HT#7 y el res!ltado de la interpretaci"n de las marcas y c"digos embebidos en el fichero. 8'emplos tpicos de c"digo embebido son )P$ PHP y DP.
•
Beneraci"n de c"digo HT#7. 7a petici"n del cliente hace !e se e'ec!te !n programa en el servidor$ y este programa genera c"digo HT#7 como salida. 8'emplos de c"digo generado son los programas *B y los servlets$ a!n!e en general c!al!ier mtodo de e'ec!ci"n del lado del servidor es capa@ de generar c"digo HT#7.
•
•
9so de plantillas. 7os programas !e se e'ec!tan en el servidor !san plantillas en HT#7 para generar la salida !e se enva al cliente. 7as plantillas p!eden ser ficheros con c"digo HT#7$ =#7 ! otro leng!a'e de marcas$ informaci"n etrada de !na base de datos o !na combinaci"n de ambos. 2rame%orLs y libreras. 8l programador p!ede hacer !so de frame%orLs o libreras para generar el c"digo. 8s !na partic!lari@aci"n de la generaci"n de c"digo pero en este caso el programador no genera la salida directamente. 8'emplos de frame%orL y libreras son Davaerver 2aces y controles %eb de )P.net.
)tendiendo a la integraci"n con el servidor se p!eden citar: •
8'ec!ci"n en el servidor. 8l servidor %eb e'ec!ta directa o indirectamente !n programa para generar el contenido dinmico. 8'emplos: *B.
•
ntegraci"n con el servidor. 8l servidor posee !no o varios m"d!los para procesar las peticiones !e generan contenido dinmico. 8'emplos: PHP$ )P.
•
Beneraci"n por el propio servidor. 8l servidor crea !n entorno en el !e se procesan las peticiones dinmicas. 8'emplos: servidores de aplicaciones y contenedores de servlets.
•
Proy. 8l servidor actFa como intermediario y reenva la solicit!d a otros servidores !e se encargan de generar el contenido dinmico. 8'emplos: %orLers )DP.
•
)plicaciones distrib!idas. 9n servidor de aplicaciones hace !so de servicios !e residen en otras m!inas para generar el contenido dinmico. 8'emplos: aplicaciones Dava 88$ servicios %eb$ ar!itect!ras de n-capas y #C*.
Pgina &(
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
3ormularios de respuesta 7a mayora de las aplicaciones %eb !tili@a form!larios para recoger informaci"n y posteriormente procesarla. >esde pantallas de inicio de sesi"n a form!larios de registro en !n sitio %eb el !so de form!larios c!mple !na de las principales f!nciones de interacci"n con el !s!ario. P!esto !e los form!larios con principalmente !sados por personas es importante !e stas reciban informaci"n acerca del res!ltado de la introd!cci"n de datos$ bien con !n mensa'e indicando !e los datos han sido recibidos con ito por el servidor o bien informar acerca de ! datos se consideran err"neos para !e el !s!ario p!eda corregirlos. 7os form!larios de resp!esta bien hechos son capaces de procesar la informaci"n en dos fases$ !na del lado del cliente !sando Davacript y otra del lado del servidor. Tambin se p!eden !sar tcnicas como )D)= para crear form!larios inteligentes !e den resp!esta rpida al !s!ario o !e se adapten para ofrecer alternativas segFn las resp!estas !e va introd!ciendo el !s!ario. 7os form!larios se implementan como peticiones B8T o PT al servidor$ a!n!e en los form!larios inteligentes parte de las peticiones !e reali@a el cliente p!eden ser B8T. 7os form!larios simples sig!en esta sec!encia: 1. )cceso al form!lario. &. 8l !s!ario introd!ce los datos en el form!lario. 3. 7os datos se envan al servidor ;B8T o PT<. 4. 8l servidor procesa los datos. 5. i los datos no son correctos v!elve al paso 1. i los datos son correctos redirige a la pgina de resp!esta. 8n el servidor los datos del form!lario se trad!cen a variables !e p!eden ser eval!adas por el programador. *!ando se diseGa !n form!lario se deben tener en mente alg!nas recomendaciones: •
•
7imitar el tamaGo de los campos del form!lario. i se sabe !e !n campo no debe tener !n contenido !e eceda de !n nFmero determinado de caracteres se debe limitar a fin de evitar ata!es por desbordamiento de b!ffer. Procesar los valores de los campos y eliminar los caracteres !e p!edan provocar ma f!ncionamiento de la aplicaci"n. )ta!es de este tipo son los llamados +67 in'ection,$ donde el atacante inserta sentencias 67 !e alteran el f!ncionamiento de la aplicaci"n. !pongamos !na aplicaci"n de cons!lta de calificaciones donde !n al!mno inserta s! identificador de !s!ario y obtiene s!s calificaciones. 9n !s!ario malintencionado podra escribir en el campo de teto algo similar a + usuario; B/4! BA$ACA calificaciones;,$ de modo !e al e'ec!tar la sentencia 67 tambin se e'ec!ta !n +drop, de la base de datos$ de'ando sin servicio la aplicaci"n y derivando en !na prdida de datos.
Pgina &
*!rso de desarrollo %eb en entorno de servidor •
•
D!lio de &01&
8nviar siempre !na resp!esta para cada !no de los casos posibles$ si as!mir !e !n caso en concreto n!nca va a oc!rrir. 8sto evita sit!aciones en las !e la aplicaci"n !eda en !n estado desconocido o !e el !s!ario de la aplicaci"n no p!ede contin!ar !tili@ndola normalmente. 9sar campos oc!ltos solo c!ando sea necesario. 7os campos oc!ltos ay!dan e enviar informaci"n !e no se !iere !e el !s!ario cono@ca$ pero son tambin !na f!ente de problemas de seg!ridad fcilmente eplotable por !n atacante. 8s recomendable !sar datos de sesi"n en ve@ de form!larios con campos oc!ltos.
8n !n servlet los datos del form!lario se p!eden procesar en el mtodo doet() o do!ost(). 7os datos de los campos se obtienen mediante el mtodo getParameter;<. i !n parmetro tiene mas de !n valor se p!ede rec!perar !n array con todos los valores !sando el mtodo 8et!arameterDalues(). 9sar form!larios en con'!nci"n con variables de sesi"n permiten reali@ar aplicaciones con form!larios enla@ados$ como por e'emplo asistentes. ) la hora de generar !n form!lario hay !e tener en c!enta !e los form!larios estticos no sirven de m!cha ay!da c!ando se desean notificar datos dinmicos$ por e'emplo c!ando !n !s!ario ha introd!cido mal !n campo y se desea presentar de n!evo el form!lario con los datos !e el !s!ario ha introd!cido anteriormente para !e no tenga !e volver a rellenarlos. 8sto se p!ede conseg!ir mediante pginas HT#7 con c"digo embebido ;por e'emplo DP< o bien con servlets !e generen el form!lario$ bien directamente o bien mediante plantillas. 8n el sig!iente e'emplo se m!estra !n servlet !e crea y procesa !n form!lario sencillo. protected +oid process/euest(Httper+let/euest reuest1 Httper+let/esponse response) thro2s er+letception1 34ception { response.set5ontent$'pe(6tet%html;charset7$?@6); !rint-riter out 7 response.8et-riter(); tr' { trin8 nom&re 7 (trin8) reuest.8et!arameter(6nom&re6); %% 3ndica si se de&e mostrar el formulario. Coolean mostrar?ormulario 7 true; %% 3ndica si los datos del formulario son correctos. Coolean proceso5orrecto 7 true; %% Der si los datos del formulario son correctos. if(nom&re E7 null) { if(nom&re.len8th() > 0) { %% e ha escrito un nom&re en el campo del formulario. mostrar?ormulario 7 false; out.println(6Hola 6 nom&re 6E6); } else { proceso5orrecto 7 false; } } if(mostrar?ormulario 77 true) {
Pgina &A
*!rso de desarrollo %eb en entorno de servidor
D!lio de &01&
out.println(66); out.println(66); out.println(6Bi8a su nom&re<%title>6); out.println(6<%head>6); out.println(6<&od'>6); out.println(6