viernes, 1 de abril de 2016

JSP - Standard Tag Library (JSTL) Tutorial

JSP - Standard Tag Library (JSTL) Tutorial

La etiqueta de JavaServer Pages Standard Library (JSTL) es una colección de etiquetas JSP útiles que encapsula la funcionalidad básica común a muchas aplicaciones JSP.
JSTL tiene soporte para tareas comunes, estructurales como la iteración y condicionales, etiquetas para manipular documentos XML, etiquetas de internacionalización y etiquetas de SQL. También proporciona un marco para la integración de etiquetas personalizadas existentes con las etiquetas JSTL.
Las etiquetas JSTL pueden clasificarse, de acuerdo con sus funciones, en los siguientes grupos biblioteca de etiquetas JSTL que se pueden utilizar al crear una página JSP:
  • Core Etiquetas
  • etiquetas de formato
  • etiquetas SQL
  • Las etiquetas XML
  • Funciones JSTL

Instalar la biblioteca JSTL:

Si está utilizando Apache Tomcat contenedor continuación, siga las siguientes dos sencillos pasos:
  • Descargar la distribución binaria de Apache estándar Taglib y descomprimir el archivo comprimido.
  • Para utilizar el Taglib estándar de su distribución Jakarta Taglibs, simplemente copiar los archivos JAR en el directorio de la distribución 'lib' para aplicaciones web de su aplicación \ directorio ROOT \ WEB-INF \ lib.
Para utilizar cualquiera de las bibliotecas, debe incluir una directiva <taglib> en la parte superior de cada página JSP que utiliza la biblioteca.

Core Etiquetas:

El grupo central de las etiquetas son las etiquetas JSTL de uso más frecuente. A continuación se muestra la sintaxis para incluir la biblioteca JSTL Core en su JSP:
<%@ taglib prefix="c" 
           uri="http://java.sun.com/jsp/jstl/core" %>
Hay siguientes JSTL Core Etiquetas:
EtiquetaDescripción
<C: out>Al igual que <% = ...>, pero las expresiones adecuadas.
<C: set>Establece el resultado de una evaluación de la expresión en un "alcance"
<C: extraer>Elimina una variable de ámbito (de un ámbito concreto, si se especifica).
<C: catch>Atrapa cualquier Throwable que se produce en su cuerpo y, opcionalmente, la expone.
<C: if>código condicional simple que dé como su cuerpo si la condición es verdadera suministrado.
<C: choose>código condicional simple que establece un contexto para las operaciones condicionales que se excluyen mutuamente, marcada por <cuando> y <otro modo>
<C: when>Subetiqueta de <elegir> que incluye su cuerpo si su condición dé como 'verdadero'.
<C: de otro modo>Subetiqueta de <elegir> que sigue <> etiquetas y cuando se ejecuta sólo si todas las condiciones anteriores evaluados en 'false'.
<C: import>Recupera una URL absoluta o relativa y expone su contenido a la página del índice, una cadena en 'var', o un lector de 'varReader'.
<C: forEach>La etiqueta básica iteración, la aceptación de muchos diferentes tipos de colección y el apoyo de subconjuntos y otras funcionalidades.
<C: forTokens>Repite fichas, separadas por delimitadores de los suministrados.
<C: param>Añade un parámetro a la URL que contiene una etiqueta de "importación" de.
<C: redirigir>Redirige a una nueva URL.
<C: url>Crea una dirección URL con parámetros de consulta opcionales

etiquetas de formato:

Las etiquetas de formato JSTL se utilizan para dar formato y mostrar el texto, la fecha, la hora y los números para los sitios web internacionalizados. A continuación se muestra la sintaxis para incluir la biblioteca de formato en la JSP:
<%@ taglib prefix="fmt" 
           uri="http://java.sun.com/jsp/jstl/fmt" %>
A continuación se presenta la lista de formato a JSTL Etiquetas:
EtiquetaDescripción
<Fmt: formatNumber>Para hacer que el valor numérico con precisión o formato específico.
<Fmt: parseNumber>Analiza la representación de cadena de un número, moneda, o porcentaje.
<Fmt: formatDate>Formatea una fecha y / u hora utilizando los estilos y patrones suministrados
<Fmt: parseDate>Analiza la representación de cadena de una fecha y / u hora
<Fmt: bundle>Carga un paquete de recursos para ser utilizados por el cuerpo de la etiqueta.
<Fmt: setLocale>Almacena la configuración regional dada en la variable de configuración local.
<Fmt: setBundle>Carga un paquete de recursos y lo almacena en la variable llamada de ámbito o la variable de configuración paquete.
<Fmt: timeZone>Especifica la zona horaria de ninguna acción de formato de tiempo o de análisis anidados en su cuerpo.
<Fmt: settimezone>Almacena la zona horaria dada en la variable de configuración de zona horaria
<Fmt: message>Para mostrar un mensaje de internacionalización.
<Fmt: requestEncoding>Establece la codificación de caracteres de solicitud

etiquetas de SQL:

La biblioteca de etiquetas JSTL SQL proporciona etiquetas para interactuar con bases de datos relacionales (RDBMS) como Oracle, MySQL o Microsoft SQL Server.
A continuación se muestra la sintaxis para incluir la biblioteca JSTL SQL en su JSP:
<%@ taglib prefix="sql" 
           uri="http://java.sun.com/jsp/jstl/sql" %>
A continuación se presenta la lista de JSTL SQL Etiquetas:
EtiquetaDescripción
<Sql: setDataSource>Crea un origen de datos sencilla apta sólo para la creación de prototipos
<Sql: query>Ejecuta la consulta SQL definida en su cuerpo o mediante el atributo sql.
<Sql: actualización>Ejecuta la actualización de SQL definida en su cuerpo o mediante el atributo sql.
<Sql: param>Establece un parámetro en una sentencia SQL en el valor especificado.
<Sql: dateParam>Establece un parámetro en una instrucción SQL para el valor java.util.Date especificado.
<Sql: transacción>Proporciona elementos de acción de base de datos anidadas con una conexión compartida, configurar para ejecutar todas las declaraciones como una sola transacción.

Las etiquetas XML:

Las etiquetas JSTL XML proporcionan una manera JSP-céntrica de creación y manipulación de documentos XML. A continuación se muestra la sintaxis XML para incluir la biblioteca JSTL en su JSP.
La biblioteca de etiquetas JSTL XML tiene etiquetas personalizadas para interactuar con datos XML. Esto incluye analizar XML, la transformación de datos XML, y el control basado en expresiones XPath fluir.
<%@ taglib prefix="x" 
           uri="http://java.sun.com/jsp/jstl/xml" %>
Antes de continuar con los ejemplos, lo que se necesita para copiar después de dos bibliotecas XML y XPath relacionados en su <Directorio de instalación de Tomcat> \ lib:
A continuación se presenta la lista de JSTL XML Etiquetas:
EtiquetaDescripción
<X: out>Al igual que <% = ...>, pero para las expresiones XPath.
<X: analizar>Se utiliza para analizar los datos XML especificados ya sea a través de un atributo o en el cuerpo de la etiqueta.
<X: conjunto>Establece una variable para el valor de una expresión XPath.
<X: si>Evalúa una expresión XPath prueba y si bien es cierto, que los procesos de su cuerpo. Si la condición de prueba es falsa, el cuerpo se ignora.
<X: forEach>Para recorrer los nodos de un documento XML.
<X: choose>código condicional simple que establece un contexto para las operaciones condicionales que se excluyen mutuamente, marcada por <cuando> y <otro modo>
<X: cuando>Subetiqueta de <choose> que incluye su cuerpo si su expresión dé como "verdadera"
<X: de otro modo>Subetiqueta de <elegir> que sigue <cuando> etiquetas y ejecuta sólo si todas las condiciones anteriores evaluado en 'false'
<X: transformar>Se aplica una transformación XSL en un documento XML
<X: param>Utilizar junto con la marca de transformación para establecer un parámetro en la hoja de estilo XSLT

Funciones JSTL:

JSTL incluye una serie de funciones estándar, la mayoría de las cuales son funciones comunes de manipulación de cadenas. A continuación se muestra la sintaxis para incluir funciones de biblioteca JSTL en su JSP:
<%@ taglib prefix="fn" 
           uri="http://java.sun.com/jsp/jstl/functions" %>
A continuación se presenta la lista de las funciones JSTL:
FunciónDescripción
fn: contains ()Comprueba si una cadena de entrada contiene la subcadena especificada.
fn: containsIgnoreCase ()Comprueba si una cadena de entrada contiene la subcadena especificada de una manera insensible caso.
fn: endsWith ()Comprueba si una cadena de entrada termina con el sufijo especificado.
fn: escapeXml ()Escapa caracteres que podrían ser interpretados como marcado XML.
fn: indexOf ()Devuelve el índice withing una cadena de la primera aparición de una subcadena especificada.
fn: join ()Se une a todos los elementos de una matriz en una cadena.
fn: longitud ()Devuelve el número de elementos en una colección, o el número de caracteres de una cadena.
fn: replace ()Devuelve una cadena que resulta de la sustitución de una cadena de entrada todas las ocurrencias con una cadena dada.
fn: split ()Divide una cadena en una matriz de subcadenas.
fn: startsWith ()Comprueba si una cadena de entrada comienza con el prefijo especificado.
fn: substring ()Devuelve un subconjunto de una cadena.
fn: substringAfter ()Devuelve un subconjunto de una cadena después de una sub-cadena específica.
fn: substringBefore ()Devuelve un subconjunto de una cadena antes de una subcadena específica.
fn: toLowerCase ()Convierte todos los caracteres de una cadena a minúsculas.
fn: toUpperCase ()Convierte todos los caracteres de una cadena a mayúsculas.
fn: trim ()Elimina los espacios en blanco de ambos extremos de una cadena.

INDICE

JDBC,HIBERNATE  Y SPRING



 Instalacion del Jdk  Java Windows 7
Java Web: Problemas con el puerto 8080 
 Introduccion A los Orm
 JSP - Standard Tag Library (JSTL) Tutorial
 Patron Dao 
 Uso de JSTL

Hibernate Framework Introduccion




Java Web: Problemas con el puerto 8080

Java Web: Problemas con el puerto 8080 


Problema

El puerto 8080 lo utilizan por defecto los servidores JEE como GlassFish, Tomcat y JBoss para las aplicaciones Web.

Normalmente no deberíamos tener ningún problema si utilizamos uno de estos contenedores y trabajamos con MySQL (Puerto 3306) y SQL Server (Puerto 1433).

El problema se presenta en las siguientes situaciones:
  1. Si queremos utilizar dos servidores JEE al mismo tiempo en la misma maquina.
  2. Si queremos utilizar Oracle XE.

Solución

La solución está en configurar cada uno de estos servidores Java EE con un puerto diferente, en algunos casos se puede optar por cambiar el puerto de Oracle XE.

Cambiar el puerto de Oracle XE

1.- Cargamos la consola SQL*Plus
C:\Users\Gustavo> sqlplus /nolog

2.- Iniciamos sesión como super usuario.
SQL> connect / as sysdba
Connected.


3.- Verificamos el puerto actual.
SQL> select dbms_xdb.gethttpport from dual;

GETHTTPPORT
-----------
       8080

4.- Cambiamos el puerto a 8090.
SQL> begin
  2     dbms_xdb.sethttpport('8090');
  3  end;
  4  /

PL/SQL procedure successfully completed.

4.- Verificar el nuevo puerto.
SQL> select dbms_xdb.gethttpport  from dual;

GETHTTPPORT
-----------
       8090


Listo, Oracle XE ya no dará problemas.

Instalacion del JDK JAVA WINDOWS 7

 Instalacion del JDK  JAVA WINDOWS 7
Pues muchos me han pedido o me han preguntado como se instala el JDK en Windows 7, ya que anteriormente publiqué como se instalaba tanto para Windows XP y para Windows Vista.
El tutorial sigue siendo el mismo, claro algunas cosas pueden cambiar, veamos el tutorial:
Antes de empezar necesitamos descargar el Java Development Kit o mejor conocido como elJava JDK desde la página de Java o mejor dicho de la página de Sun.
Descargar  JDK – Java Development Kit
Una vez descargado dicho archivo, le damos doble clic para que empiece la instalación del mismo. Y nos aparecerá una pantalla como esta:
Leemos” el contrato de Usuario Final, y le damos Clic en Accept >
Si queremos cambiar la capeta de instalación le podemos dar clic en Change… e instalarla donde quiera, Yo la dejé en la ruta por default. Y después le damos Next.
Empezará la instalación del Java JDK y tendremos que esperar unos minutos, dependiendo del rendimiento de tu equipo de computo.
Al terminar la instalación del Java JDK, nos pedirá la carpeta de destino donde se tiene que instalar el JRE de Java, este es importante instalarlo, para que se ejecuten los programas hecho en Java.Yo dejé la ruta por defaultDamos Clic en Next >.
Empezará la instalación de Java JRE y dependerá del funcionamiento de nuestro equipo, cuanto dure esta instalación, por lo general dura unos pocos minutos.
Una vez que haya terminado la instalación del Java JRE, le daremos clic en Finish y terminará la instalación de Java JDK y Java JRE.
Todavía aquí no termina esto, si no que hay que configurar las variables de entorno para que podamos “compilar” desde la Consola de Comandos de Windows 7.
Damos Clic Derecho a Mi PC y nos vamos a Propiedades. Y nos aparecerá una ventana donde aparece la información de nuestro sistema, Damos clic en Configuración Avanzada del Sistema, que se encuentra a la izquierda. Y nos debe de aparecer una ventana como esta:
Nos vamos a la pestaña de Opciones Avanzadas y damos clic en Variables de Entorno
Buscamos en las Variables del sistema, la variable llamada Path y le damos clic en Editar
Se abrirá una nueva ventana y le agregamos esto: ;C:\Program Files\VERSION DE TU JAVA\binsi es que dejamos la ruta por default del instalador, si lo metiste en otra carpeta, deberás poner la dirección donde se encuentra instalado el JDK. Y damos Clic en Aceptar.
Después ahi mismo en Variables del Sistema, crearemos una nueva variable llamada Classpath y tendrá la dirección de nuestro src.zip en este caso sería esta: ;C:\Program Files\Java\VERSION DE TU JAVA\src.zip y le damos clic en Aceptar.
Le damos Clic en Aceptar en Variables de Entorno y en la Ventana de Opciones Avanzadas.
Ahora nos iremos a la Consola de Comandos de Windows 7, o al famoso CMD, una vez abierto escribimos javac y deberá mostrar este contenido.
Y si se muestra esto, quedó instalado el Java JDK en nuestro sistema de Windows 7, y podemos crear los programas y compilarlos desde la consola de comandos. O lo que es mejor, instalar un IDE como Eclipse  o JCreator. En lo personal uso el Eclipse.

Introducción a los ORM

En este tema vamos a empezar a explicar qué ese un ORM e Hibernate , pero empecemos con los ORM.
Las siglas ORM significan “Object-Relational mapping” 1) y en castellano es “Mapeo Objeto-Relacional”.
 El ORM es simplemente el código que escribimos para guardar el valor de nuestras clases en una base de datos relacional. Simplemente éso.
Es decir, es un framework de persistencia de nuestros datos a una base de datos.
Veamos un ejemplo en el que suponemos que estamos desarrollando el programa Itaca para la consellería de educación: 

El programa tendrá la clase Profesor tal y como vemos en el siguiente diagrama UML:
PlantUML Graph
Pero los objetos de la clase Profesor finalmente se deberán guardar en filas de la tabla de la base de datos llamada Profesor:
PlantUML Graph
El código Java que, dado un objeto Profesor , genera una fila en la tabla Profesor o la borra o la actualiza, etc, es un ORM. Así de sencillo.
Ahora te estarás preguntando, ¿y para éso necesito un curso entero del? ¡Si yo llevo años haciendo eso con JDBC!.
Si pero:

  • ¿Y qué hay del código de JDBC cuando la clase Profesor incluye un java.util.Set o un java.util.List o simplemente herencia de otras clases.? 

  • Ese código no debe tocarse mientras no se deje la empresa ya que se corre el peligro de que nada vuelva a funcionar.

  • ¿Y de hacer las validaciones antes de guardarlo?¿No estas harto de comprobar que la propiedad nombre no está vacía? 

  • La próxima vez que compruebe que un String no es null y que tras hacer un trim() aún quedan caracteres me rapo el pelo y me hago budista.

  • ¿Recuerdas el día en el que el DBA 2) te pidió que cambiaras el nombre de varias columnas de la base de datos? 

  • Estuve semanas revisando el código para estar seguro de que no me había dejado ninguna línea sin cambiar. Al volver a casa mi hijo ya no me conocía.
Dejando a parte esta pequeña broma, usar JDBC directamente tiene muchos problemas. Lo normal es que para evitar toda esta repetición de código los programadores empecemos a hacernos nuestras utilidades que nos ahorran mucho esfuerzo. Estas utilidades son el principio de un ORM. Gavin King pensó lo mismo 3) y acabó haciendo Hibernate.
Es decir que Hibernate es simplemente una serie de clases Java 4) que nos ayudaran a insertar, leer, actualizar borrar nuestros objetos en la base de datos.

Hibernate

¿Cuál ha sido el éxito de Hibernate? Mi opinión es la siguiente:
  • No depende de estándares, lo que hace que pueda añadir funcionalidades mas rápidamente.
  • Al igual que JDO no es necesario implementar interfaces o heredar de clases.
  • Realiza sólo una cosa y la hace bien: Sólo se puede persistir a bases de datos relacionales, a diferencia de JDO que permite otros tipo de repositorios.

Hibernate

Después de dar un repaso a todas las tecnologías de persistencia, ¿Por qué un curso de Hibernate en vez de un curso de JPA? Realmente este curso trata de Hibernate e Hibernate con JPA con lo que vamos a tener lo mejor de ambos mundos.
Para hacer la persistencia de nuestros objetos Java a la base de datos hay que indicar cómo se debe realizar dicha persistencia. Para ello hay dos métodos:
  • Ficheros XML
  • Anotaciones en el código.
Las anotaciones que tiene Hibernate son actualmente las del estándar de JPA. De esa forma al ver las anotaciones de hibernate estaremos viendo las de JPA.Cuando veamos los ficheros XML usaremos los ficheros propietarios de Hibernate, así también veremos cómo funciona realmente Hibernate.
En cuanto al API de Java , vamos a ver únicamente el API de Hibernate.
¿Y por qué no dar sólo JPA sobre Hibernate ?
JPA sigue siendo un estándar de JCP , lo que conlleva un proceso lento de nuevas versiones y funcionalidades. Usando Hibernate directamente tendremos acceso a las funcionalidades específicas de Hibernate que no están cubiertas en el estándar de JPA y tampoco hay que ser tan estricto.
 Hibernate ha funcionado con éxito muchos años en Java sin necesidad de JPA, así que no vamos a perder ahora todas las ventajas de ofrece Hibernate frente a JPA.
Resumiendo , éste va a ser un curso de Hibernate en el que muchas de las cosas que expliquemos será usando el estándar de JPA.

SoapUI


SoapUI


SoapUI es una de código abierto aplicación de pruebas de servicios web para arquitecturas orientadas a servicios (SOA) y las transferencias de estado representacional (REST).

Su funcionalidad abarca web del servicio de inspección, invocación, el desarrollo, la simulación y la burla , pruebas funcionales, pruebas de carga y cumplimiento.

 Una versión comercial, SoapUI Pro , que se centra principalmente en características diseñadas para mejorar la productividad, también fue desarrollado por el software Eviware .

 En 2011, SmartBear Software adquirió Eviware. [ 2 ]

SoapUI fue lanzado inicialmente en SourceForge en septiembre de 2005. Se software libre , licenciado bajo los términos de la Licencia Pública de la Unión Europea

 Desde el lanzamiento inicial, SoapUI ha sido descargado más de 2.000.000 veces.

Está construido en su totalidad en la plataforma Java , y utiliza oscilación de la interfaz de usuario . Esto significa que SoapUI es multiplataforma .

Hoy en día, también es compatible con SoapUI IDEA , Eclipse y NetBeans .

SoapUI puede probar en SOAP y REST servicios web, JMS, AMF, así como realizar cualquier HTTP (S) y llamadas JDBC.

SoapUI

Las características principales incluyen:

inspección de los servicios Web
Los servicios Web que invoca
desarrollo de servicios Web
Los servicios Web de simulación y burlones
servicios web funcional, carga, cumplimiento y de seguridad
SoapUI Pro [ editar ]
SoapUI Pro es la versión de la empresa comercial. SoapUI Pro añade una serie de mejoras en la productividad al núcleo SoapUI, que están diseñados para aliviar muchas tareas recurrentes cuando se trabaja con SoapUI.

CaracterísticaBeneficio
la cobertura WSDLAnalizar los mensajes de petición / respuesta para ver lo bien que se está probando un contrato WSDL / burlado / usa.
refactorización WSDLactualizar automáticamente las peticiones / respuestas / afirmaciones cuando el WSDL subyacente.
proyectos de compositeTrabajar juntos en un equipo en sus proyectos de pruebas de servicios web.
La gestión de requisitosAdministrar, importación y exportación de los requisitos del proyecto y vincularlos a los casos de prueba.
editor solicitud basada en formulariosPara facilitar la edición y la comprensión de los mensajes de petición tanto para usuarios técnicos y no técnicos.
Descripción general visor de mensajesPara obtener una visión general de la / maqueta de petición / respuesta correspondiente mensaje supervisado.
solicitud editor basado en árbol / respuestaPara facilitar la navegación y la comprensión de los mensajes más grandes.
inspector de la tablaPara dar rápidamente una visión general del contenido del mensaje tabular.
inspector de esquemaPara facilitar la inspección y la depuración del contenido del mensaje.
inspector de XMLPara facilitar la inspección y la depuración del contenido del mensaje.
inspector de DocPara facilitar la comprensión del contenido del mensaje.
DataSource TestStepPara facilitar la creación de pruebas basadas en datos.
DataSink TestStepFacilita la recogida de datos a utilizar en las pruebas posteriores o para la presentación de informes externos.
DataGen TestStepPara simplificar las pruebas completa de interfaces complejas.
asistentes de transferencia de la propiedadPara facilitar la creación de casos de prueba complejos / flujos de mensajes.
XPath aserción WizardsPara facilitar la creación de afirmaciones XPath para los pasos TestRequest y MockResponse.
XPath WizardsFacilita la creación de expresiones XPath en muchas situaciones.
Los informes integradosProporcionar resúmenes de las pruebas funcionales para el seguimiento y la gobernabilidad.
biblioteca de scripts GroovyFacilita la reutilización y secuencias de comandos de escenarios complejos.
escritorio con pestañasFacilita la administración de escritorio con varios editores.
Descubrimiento de la APICapacidad para crear pruebas soapUI basado en el tráfico HTTP capturada que se generan a partir de las acciones del usuario (por ejemplo, de la navegación por un sitio web)