TECNOLOGÍAS WEB





¿ QUE ES JSP ? 

 Java Server Pages es una tecnología que nos permite mezclar HTML estático con HTML generado diatónicamente.  Se escribe el HTML regular de la forma normal, usando cualquier herramienta de construcción de paginas Web y se encierra el código de las partes dinámicas en unas etiquetas especiales, la mayoría de las cuales empiezan con "<% y termina con "%>.

ZK JSP Snapshot


Otra Definición:

         Es un lenguaje para la creación de sitos web dinámicos. Este esta orientado a desarrollar paginas web con Java. JSP es un lenguaje multiplafaforma. Creado únicamente para ejecutarse del lado del servidor. JSP fue desarrollado por Sun Microsystems. 

              La tecnología de JSP le permite a los desarrolladores y a los diseñadores web desarrollar rápidamente y mantener fácilmente paginas dinámicas, ricas en información como son las que soportan a sistemas de negociación.



¿ Ventajas y Desventajas de JSP ?

VENTAJAS :
  • CONTRA ACTIVE SERVER PAGES (ASP) :
    • ASP  es una tecnología similar a Microsoft. Las Ventajas de JSP estan duplicadas. Primero la parte dinamia esta escrita en Java, no en Visual Basic, otro lenguaje especifico de MS, por eso es mucho mas poderosa y fácil de usar. 
  • CONTRA LOS SERVLETS :
  • CONTRA JAVASCRIPT : 
    • JavaScript puede general HTML dinamicamente en el cliente. Este tiene una capacidad útil, pero solo maneja situaciones donde la información dinámica esta basada en el entorno del cliente. 
Sin embargo es posible aprovechar las ventajas de JSP y JavaScript si se utilizan conjuntamente.Una ventajas principales de JavaScript es el manejo de entornos visuales.

DESVENTAJAS :

  • Una de las Desventajas de JSP tiene es que no posee una interfaz ya que la interfaz web es limitada, la codificación de interfaces elaboradas lleva muchas lineas de código. 
  • Otra Desventaja es que permite que la mayor parte de la lógica de la aplicación se ejecuta en el servidor por lo que se corre el riesgo de sobrecargar al mismo, y la aplicación no esta disponible si ocurre algún problema con el servidor o con la conexión de red.

¿ QUE ES UNA API DE JSP ? 


API significa Interfaz de Programación de Aplicaciones que permite a los programadores crear aplicaciones de Software en Java. La API de JSP se clasifica en los siguientes paquetes.

Otra Definición :

Una API es una colección de paquetes, clases, interfaces y subpaqutes. Y el subpaquete es también  una colección de interfaces de clases y subpaquetes, etc.



¿ FORMAS DE UTILIZAR JSP ?

Expresión JSP

Se usan para mandar valores directamente a la pagina web resultante de la JSP, <%= expresión %>, la expresión es ejecutada, se convierte a una cadena de caracteres (String) y insertada en la pagina. En las expresiones se usan gran cantidad de variables predefinidas, los mas usados son:
  • request, de la clase HttpServletRequest
  • response, de la clase HttpServletResponse
  • session, de la clase HttpSession que esta asociada al request, si es que trabajamos con sessions
  • out, se trata de una clase PrintWriter usada para imprimir directamente en la pagina resultante.
Sintaxis: <%= expression %> 

Scriptlet JSP

El código se inserta en el método service. Con los Scriptlets tambien podemos escribir en la pagina resultante sin usar las expresiones, la manera de hacerlo es usar la variable out con su método println. Los scriptlets ofrecen la posibilidad de ser combinados facilmente con codigo html, ya que el mismo es como si se metiera dentro de un out.println. Sintaxis: <% code %> 

Declaración JSP

Las declaraciones JSP nos permiten configurar variables para su uso posterior en expresiones o scriptlets. También podemos declarar variables dentro de expresiones o scriptlets en el momento de usarlas. El ámbito es toda la página JSP, no hay concepto de variables de ejemplar, es decir, no tenemos que declarar variables de ejemplar para usar en más de una expresión o scriptlet. 
Sintaxis: <%! code %> 

Comentario JSP

Comentario ignorado cuando se traduce la página JSP en un servlet. 
Sintaxis: <%-- comment --%> 


¿ DIRECTIVAS DE JSP ?

Directiva Include

Esta directiva se usa para incluir un fichero dentro de la propia pagina JSP en construcción. Se pueden añadir páginas JSP, HTML o ficheros de texto, incluso ficheros con código Java. Sobre todo hay que tener cuidado que los ficheros de texto que anexemos no incluyan las etiquetas , , , o , ya que podrian confundirse con las propias de nuestra página JSP. Hay dos tipos de Include, estatico o dinamico:
  • Estatico: Es un fichero que es analizado y su contenido es anexado a la página JSP resultante.
  • Dinamico: La página JSP realiza una solicitud a la URL indicada que envia de vuelta un resultado que es anexado a la página JSP.
La manera de realizar un include en una posicion especifica de una página JSP es:
<%@ include file="URL" %>

Directiva Page

Esta directiva se usa para definir las propiedades de la página JSP que estemos realizando. Esta directiva la podemos usar varias veces a lo largo de la pagina JSP, pero solo podemos asignar el valor de un atributo una vez por cada uno excepto para el atributo import; este es similar al import que usamos cuando hacemos programas en java. La directiva page la podemos poner en cualquier sitio de la pagina JSP, ya que su valor se aplicara a toda la pagina.

Síntaxis de Page

Los valores por defecto se muestran en negrita. Los corchetes ([...]) indican un término opcional. La barra vertical (|) proporciona una elección entre dos valores como true y false.
Sintaxis: 
<%@ page 

  [ language="java"] 
  [ extends="package.class"] 
  [ import= "{ package.class|package.*}, ..." ] 
  [ session="true|false"] 
  [ buffer="none|8kb|sizekb"] 
  [ autoFlush="true|false"] 
  [ isThreadSafe="true|false"] 
  [ info="text"] 
  [ errorPage="URLrelativa"] 
  [ contentType="text/html; charset=ISO-8859-1"] 
  [ isErrorPage="true|false"]

%>

Directiva TagLib.

Esta parte es un poco más complicada. Pero básicamente, la directiva TagLib nos permite utilizar librerías de etiquetas creadas por el propio programador en nuestra pagina jsp. (Sonó confuso… cierto?) Podemos usar nuestras propias etiquetas (llamadas también etiquetas personalizadas o Custom Tags) en nuestra JSP y también nos permite usar etiquetas JSTL (verás eso en otro post).
Para mostrarte como funciona esto de las etiquetas personalizadas, haremos este ejemplo. Digamos que en mi jsp, yo escribiera mi propia etiqueta asi <nuestraEtiqueta:muestaHolaMundo/>, como ves, dicha etiqueta tiene un nombre (o prefijo, o prefix en ingles) el cual es nuestra Etiqueta y la parte muestra Hola Mundo es simplemente una operación que puede realzar nuestra etiqueta, es decir cuando la ejecutemos en nuestra JSP se mostrará un mensaje, tal vez el “Hola Mundo”.

¿ QUE ES JSTL ?

La tecnología JavaServer Pages Standard Tag Library(JSTL) es un componente de Java EE. Extiende las ya conocidas JavaServer Pages (JSP) proporcionando cuatro bibliotecas de etiquetas (Tag Libraries) con utilidades ampliamente utilizadas en el desarrollo de páginas web dinámicas.
Estas bibliotecas de etiquetas extienden de la especificación de JSP (la cual a su vez extiende de la especificación de Servlet). Su API nos permite además desarrollar nuestras propias bibliotecas de etiquetas.
Las bibliotecas englobadas en JSTL son:
  • CORE :  iteraciones, condicionales, manipulación de URL y otras funciones generales.
  • XML :  para la manipulación de XML y para XML-Transformation.
  • SQL : ,para gestionar conexiones a bases de datos.
  • FMT :  para la internacionalización y formateo de las cadenas de caracteres como cifras.


¿ IMPORTANCIA DE JSTL ?

  • SIMPLIFICAR Y AGILIZAR EL DESARROLLO DE APLICACIONES WEB.
  • IMPLEMENTA LA GENERACIÓN DINÁMICA DE PAGINAS WEB.
  • TRANSFORMACIÓN DE APLICACIONES JSP QUE REALIZADAS CON JSTL.


¿ ETIQUETAS JST? 

Bucle ForReach




Bucle If-Else




Bucle For



Bucle While



¿ QUE ES UNA SESION ?

La sesión se crea automáticamente al ingresar a la página web, o bien cuando una sesión termine.

Usar variables de sesión es más rápido, pero cuesta memoria RAM.

Usar la base de datos es más lento pero no consume RAM.

En la RAM del servidor se almacenará el identificador de sesión y los objetos vinculados a ella.

En una COOKIE del cliente se almacenará dicho identificador de sesión.

Una sesión establecida es el requisito básico para realizar una comunicación orientada a conexión. También es el paso básico para transmisión en modos de comunicación sin conexión. Sin embargo, cualquier transmisión unidireccional no define una sesión.1
El transporte de comunicación puede ser implementado como parte de protocolos y servicios en la capa de aplicación, en la capa de sesión o en la capa de transporte en el modelo OSI.
  • Ejemplos de capa de la aplicación:
    • Sesiones HTTP, los cuales dejan asociar información con visitantes individuales
    • Una sesión de login remoto mediante telnet
  • Ejemplo de capa de sesión:
    • Un Protocolo de Iniciación de la Sesión (VOIP) en el que se basa una llamada de teléfono de Internet
  • Ejemplo de capa de transporte:
    • Una sesión TCP, la cual es sinónimo a un circuito virtual TCP, una conexión TCP, o un socket TCP establecido.

¿ QUE ES UN JAVABEANS ?

Los JavaBeans son un modelo de componentes creado por Sun Microsystems para la construcción de aplicaciones en Java.
Se usan para encapsular varios objetos en un único objeto (la vaina o Beanen inglés), para hacer uso de un solo objeto en lugar de varios más simples.
La especificación de JavaBeans de Sun Microsystems los define como "componentes de software reutilizables que se puedan manipular visualmente en una herramienta de construcción".
A pesar de haber muchas semejanzas, los JavaBeans no deben confundirse con los Enterprise JavaBeans (EJB), una tecnología de componentes del lado servidor que es parte de Java EE.
  • Introspection: Permite analizar a la herramienta de programación o IDE como trabaja el bean
  • Customization: El programador puede alterar la apariencia y la conducta del bean.
  • Events: Informa al IDE de los sucesos que puede generar en respuesta a las acciones del usuario o del sistema, y también los sucesos que puede manejar.
  • Properties: Permite cambiar los valores de las propiedades del bean para personalizarlo (customization).
  • Persistence: Se puede guardar el estado de los beans que han sido personalizados por el programador, cambiando los valores de sus propiedades.
En general, un bean es una clase que obedece ciertas reglas:
  • Un bean tiene que tener un constructor por defecto (sin argumentos)
  • Un bean tiene que tener persistencia, es decir, implementar el interface Serializable.
  • Un bean tiene que tener introspección (instrospection). Los IDE reconocen ciertas pautas de diseño, nombres de las funciones miembros o métodos y definiciones de las clases, que permiten a la herramienta de programación mirar dentro del bean y conocer sus propiedades y su conducta.
Ejemplo

@Entity
public class Empleado implements Serializable{

   @Id
   private int id;
   private String nombre;   
   private int salario;  

   // Constructor sin argumentos
   public Empleado () {}

   // Constructor del JavaBean
   public Empleado (String nombre, int salario) {
      this.nombre= nombre;
      this.salario= salario;
   }

   //Getters y Setters
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getNombre() {
      return nombre;
   }
   public void setNombre( String nombre) {
      this.nombre= nombre;
   }
   public int getSalario() {
      return salario;
   }
   public void setSalario( int salario) {
      this.salario= salario;
   }
}


¿ PATRON MVC ?

La rama de la ingeniera de Software se preocupa por crear procesos que aseguren calidad en los programas que se realizan y esa calidad para atender diversos parámetros que son deseables para todo desarrollado, como la estructuración de los programas o reutilizacion del código, lo que debe influir positiva mente en la facilidad de desarrollo y mantenimiento de Software.

Modelo-vista-controlador (MVC) es un patrón de arquitectura de software, que separa los datos y la lógica de negocio de una aplicación de su representación y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario.

Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento

  • El Modelo: Es la representación de la información con la cual el sistema opera, por lo tanto gestiona todos los accesos a dicha información, tanto consultas como actualizaciones, implementando también los privilegios de acceso que se hayan descrito en las especificaciones de la aplicación (lógica de negocio). Envía a la 'vista' aquella parte de la información que en cada momento se le solicita para que sea mostrada (típica mente a un usuario). Las peticiones de acceso o manipulación de información llegan al 'modelo' a través del 'controlador'.
  • El Controlador: Responde a eventos (usualmente acciones del usuario) e invoca peticiones al 'modelo' cuando se hace alguna solicitud sobre la información (por ejemplo, editar un documento o un registro en una base de datos). También puede enviar comando a su 'vista' asociada si se solicita un cambio en la forma en que se presenta el 'modelo' (por ejemplo, desplazamiento o scroll por un documento o por los diferentes registros de una base de datos), por tanto se podría decir que el 'controlador' hace de intermediario entre la 'vista' y el 'modelo' .
  • La Vista: Presenta el 'modelo' (información y lógica de negocio) en un formato adecuado para interactuar (usualmente la interfaz de usuario), por tanto requiere de dicho 'modelo' la información que debe representar como salida.




¿ FRAMEWORKS MVC ?

  • Django
  • Ruby on Rails
  • Laravel
  • Spring
  • Monorail
  • Sails JS
  • Yii
  • Zend
  • Cake PHP
  • Codeigniter
  • Symfony
  • Entre Otros