Ejercicios UT02. Lenguajes DWES
Información
Este ejercicio se trabajará en las videotutorías, por lo cual el contenido final no estará disponible hasta la segunda semana.
Ejercicios UT02. Lenguajes de desarrollo web en servidor.
Ejercicio UT02-1.1 El lenguaje PHP
En este ejercicio vamos a aprender a publicar un fichero .php en nuestra web local que sirve Apache2.

En la imagen anterior, se puede comprobar como el archivo php que queremos publicar en nuestro servidor, ha de encontrarse en la ruta:
/var/www/html/Así nuestro navegador podrá acceder y visualizar el contenido:

Ejercicio UT02-1.2 El lenguaje PHP
En el segundo ejercicio, utilizando el archivo usuario.php, podemos ver como el lenguaje php permite crear de manera directa el código html que se "imprime" para que el navegador muestre el resultado final para el usuario.

El lenguaje PHP identifica las variables mediante el uso del símbolo del $ delante del nombre. Como se puede comprobar, el código, que se identifica por estar entre las etiquetas xml <?php y ?> es ocultado y no se visualiza en el navegador.

Aviso
A la hora de trabajar con el terminal y los archivos en Linux, hemos de tener en cuenta que el propietario y los permisos que se le otorgan son esenciales para que el servidor pueda trabajar con ellos.
Ejercicio UT02-2 Jakarta EE, estructura de directorios y generación de archivo para servidor
Ejercicio UT02-2.1 Estructura de una aplicación Jakarta
Para la construcción de aplicaciones en Jakarta EE y/o la compilación de aplicaciones Java complejas, debemos utilizar los ficheros .pom que nos permiten establecer cuál será la estructura de nuestra aplicación, las versiones de las librerías y entornos de desarrollo, etc.

Además, como se señala en la parte inferior izquierda de la imagen anterior, debemos utilizar un servidor de aplicaciones (en este caso Payara) para que el archivo .war que generamos, sea accesible desde el navegador.
En este framework/sistema Payara realiza las funciones que en php hacía Apache, además de muchas otras directamente relacionadas con el ciclo de vida de los servlets o beans que usamos en la aplicación.
La forma en la que se estructura la aplicación viene definida en el pom y permite identificar las distintas partes de la misma:
- Capa de Vista: Ficheros de tipo
.xhmtl - Capa de Controladores : Beans

Ejercicio UT02-2.2 Generación del archivo war y publicación con Payara Server.
Para poder generar el paquete .war de nuestra aplicación, hemos de realizar la llamada a Maven mediante el terminal.
¡Cuidado! el comando debe ejecutarse desde el directorio donde se encuentra el .pom que vamos a utilizar
Una vez finalizada, y si no hubo errores en la compilación, se genera el paquete:

A continuación, utilizaremos el menú contextual que aparece al pulsar el botón derecho sobre el paquete, para publicarlo en nuestro servidor Payara.
Una vez publicado, podemos acceder con nuestro navegador para ver el resultado:

Ejercicio UT02-2.3 Mapeado de datos en el xhtml desde el beam java.
El proceso de compilación y el servidor de aplicaciones, permiten realizar un mapeo del contenido de nuestro bean en el xhtml que es leído y mostrado por el navegador.

Dentro del xhtml utilizamos etiquetas propias que, junto con el identificador del bean y el uso de las funciones que ese objeto nos proporciona, permiten mostrar los datos al cliente.

Ejercicio UT02-3 Python y Django
Ejercicio UT02-3.1: Estructura de directorios de una aplicación Django
Nota
El ejercicio llevado a cabo en videotutoría se ha añadido como parte del Anexo I




Ejercicio UT02-3.2: Duración de un álbum
- Dado un
jsoncomo el siguiente, crea un programa python que calcule la duración completa del disco.
{
"album": "Songs of a Lost World",
"artist": "The Cure",
"year": 2024,
"tracks": [
{
"title": "Alone",
"duration": "6:48"
},
{
"title": "And Nothing Is Forever",
"duration": "6:53"
},
{
"title": "A Fragile Thing",
"duration": "4:43"
},
{
"title": "Warsong",
"duration": "4:17"
},
{
"title": "Drone:Nodrone",
"duration": "4:45"
},
{
"title": "I Can Never Say Goodbye",
"duration": "6:03"
},
{
"title": "All I Ever Am",
"duration": "5:21"
},
{
"title": "Endsong",
"duration": "10:23"
}
]
}