martes, 28 de mayo de 2013
Direct Web Remoting (DWR)
Es una librería Javascript que permite el uso de Ajax de forma mucho más simple, y sí vamos a usar Java para nuestra aplicación DWR es la mejor opción que podemos usar , otras de las ventajas de esta librería es que no necesitamos implementar servlets sino solo necesitamos clases Java POJO ya que DWR esta basado en servlets internamente.
sábado, 25 de mayo de 2013
ManagedBean
Una clase java asociada a un formulario Jsf se les denomina ManagedBean, tenemos dos formas de declarar una clase como ManagedBean:
- En el fichero face-config.xml:
- @ManagedBean:
import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped
@ManagedBean
@SessionScoped
public class NombreBean {
String mensaje="Hola";
public String getMensaje() {
return mensaje;
}
public void setMensaje(String mensaje) {
this.mensaje = mensaje;
}
public String getMensaje() {
return mensaje;
}
public void setMensaje(String mensaje) {
this.mensaje = mensaje;
}
}
Si no añadimos a la anotación (name="nombre") se utilizará por defecto el nombre de la clase en minúscula y para usarlo en la clase jsf se utiliza la siguiente sintaxis #{nombreBean.mensaje}
Si no añadimos a la anotación (name="nombre") se utilizará por defecto el nombre de la clase en minúscula y para usarlo en la clase jsf se utiliza la siguiente sintaxis #{nombreBean.mensaje}
viernes, 24 de mayo de 2013
Ciclo de vida de un JSF
Cuando un usuario pincha en un botón o un link comienza el ciclo de vida de JSF, que contiene varias fases:
- Restore View: se crea la vista con la información desde cero o la ya existente en los componentes si fue redireccionada desde otro control de jsf.
- Apply Request Values: se invocan los convertidores definidos, la funcionalidad del convertidor es transformar el dato String de la forma a uno de tipo Java y viceversa, también mantiene el dato String para seguirlo presentando en pantalla en la etapa de producir respuesta.
- Process Validations: se validan los valores pasado en la fase de aplicación llamando a los validadores de cada componente: validate(), marcando como error y creando el mensaje aquellos que no pasen la validación.
- Update Model Values: actualiza los valores del modelo con los nuevos valores pasados en la petición.
- Invoke Application: en esta fase, la implementación JSF maneja cualquier evento a nivel de aplicación, como enviar un formulario o enlazar a otra página.
- Render Response: se genera la respuesta Html.
jueves, 23 de mayo de 2013
Java Message Service (JMS)
Esta API es creada para solucionar los problemas de uso de colas de mensajería, permite a los componentes de aplicaciones basados en la plataforma Java2 crear, enviar, recibir y leer mensajes y hace posible la comunicación tanto de manera síncrona y asíncrona.
Forma parte de la plataforma J2EE para acceder a Sistemas de mensajería (MOM).
Existen 2 modelos de esta API:
Forma parte de la plataforma J2EE para acceder a Sistemas de mensajería (MOM).
Existen 2 modelos de esta API:
- Modelo Punto a Punto: uno envía el mensaje y otro lo recibe, el receptor envia un acuse de recibo y en caso de que no este disponible se queda guardado en un cola en espera.
- Modelo Publicador /Suscriptor: uno publica el mensaje y lo reciben todos los usuarios que estén suscripto al servicio donde se envió ese mensaje.
- Clientes JMS: aplicaciones que envian o reciben mensajes a través de JMS
- Mensajes: los mensajes que se intercambian, se componen de 3 elementos:
- Header.
- Properties.
- Body.
- Objetos administrados: para enviar o recibir mensajes los clientes tienen que conectarse por medio de los objetos. Hay dos tipos de objetos administrados en JMS:
- ConnectionFactory: Se usa para crear una conexión al proveedor del sistema de mensajes.
- Destination: Son los destinos de los mensajes que se envían y el recipiente de los mensajes que se reciben.
- Conseguir un objeto ConnectionFactory a través de JNDI.
- Conseguir un destino, mediante el objeto Destination a través de JNDI.
- Usar ConnectionFactory para conseguir un objeto Connection.
- Usar Destination para crear un objeto Session.
Desde la versión 1.3 de la plataforma J2ee viene integrado esta API:
lunes, 20 de mayo de 2013
Colecciones
Tenemos 2 interfaces centrales:
- java.util.Collection,permite básicamente añadir, eliminar y recorrer la estructura gracias a un Iterator:
- List: son listas, estructura de datos secuencial, en la que cada elemento tiene una posición o índice, y que permite elementos duplicados.
- ArrayList: el tamaño de la lista se aumenta dinamicamente, permite valores nulos y se pueden realizar búsquedas rápidas, localizar cualquier elemento de la lista sin tener que recorrerla.No esta sincronizada.
- LinkedList: permite grandes inserciones y eliminaciones de elementos rápidos y permite que se agreguen o eliminen elementos en la lista al inicio o al final pero no se puede acceder a elementos intermedios sin recorrer antes la lista.
- Vector: igual que ArrayList pero esta sincronizado..
- Set: son conjuntos,los elementos no tienen un orden, y no se permiten elementos duplicados.
- HashSet:almacena sus elementos en una tabla Hash(estructura clave valor) y su orden es aleatorio.
- TreeSet:guardar sus elementos en un árbol, ordenando sus elementos en base a sus valores, y por lo tanto es más lento que un HashSet.
- SortedSet --> interfaz que almacena elementos sin duplicados y ordenados.
- LinkedHashSet: versión ordenada de HashSet.
- java.io.Map no se trata de una colección sino de un mapeo, es la que define la interfaz Map
,cada valor tiene asociado una clave, tenemos la posibilidad de sobreescribir los métodos equals() y hashcode().
- HashMap: es una tabla en la que podemos insertar claves. Implementa el interface Map, lo cual nos permite utilizar los métodos relativos a los mapas,los valores que se van insertando en la colección internamente no tendrán un orden especifico,no están sincronizados, no permite claves duplicadas,una clave nula y múltiples valores nulos.
- TreeMap: un mapa ordenado de forma natural, puede definir un tipo de orden (a través de las interfaces Comparable y Comparator)
- SortedMap --> sus elementos están ordenados.
- LinkedHashMap:version ordenada de HashMap, pero mantiene los elementos ordenados. Y porque es un poco más lento para agregar o quitar elementos de la colección. Pero permite una iteración más veloz
- List: son listas, estructura de datos secuencial, en la que cada elemento tiene una posición o índice, y que permite elementos duplicados.
- ArrayList: el tamaño de la lista se aumenta dinamicamente, permite valores nulos y se pueden realizar búsquedas rápidas, localizar cualquier elemento de la lista sin tener que recorrerla.No esta sincronizada.
- LinkedList: permite grandes inserciones y eliminaciones de elementos rápidos y permite que se agreguen o eliminen elementos en la lista al inicio o al final pero no se puede acceder a elementos intermedios sin recorrer antes la lista.
- Vector: igual que ArrayList pero esta sincronizado..
- Set: son conjuntos,los elementos no tienen un orden, y no se permiten elementos duplicados.
- HashSet:almacena sus elementos en una tabla Hash(estructura clave valor) y su orden es aleatorio.
- TreeSet:guardar sus elementos en un árbol, ordenando sus elementos en base a sus valores, y por lo tanto es más lento que un HashSet.
- SortedSet --> interfaz que almacena elementos sin duplicados y ordenados.
- LinkedHashSet: versión ordenada de HashSet.
- HashMap: es una tabla en la que podemos insertar claves. Implementa el interface Map, lo cual nos permite utilizar los métodos relativos a los mapas,los valores que se van insertando en la colección internamente no tendrán un orden especifico,no están sincronizados, no permite claves duplicadas,una clave nula y múltiples valores nulos.
- TreeMap: un mapa ordenado de forma natural, puede definir un tipo de orden (a través de las interfaces Comparable y Comparator)
- SortedMap --> sus elementos están ordenados.
- LinkedHashMap:version ordenada de HashMap, pero mantiene los elementos ordenados. Y porque es un poco más lento para agregar o quitar elementos de la colección. Pero permite una iteración más veloz
Para cada una de las interfaces tenemos una clase abstracta.
viernes, 17 de mayo de 2013
Instalar wysiwyg y CKEditor
Para instalar wysywyg lo he hecho desde el panel de administración, primero de la web drupal.org me he descargado el módulo y luego me he ido a la pestaña Módulos --> Instalar nuevo módulo, le he indicado donde estaba la carpeta y se ha instalado.
El segundo paso ha sido descargarme el plugin CKEditor instalarlo igual que wysywyg y luego nos descargamos el editor y descomprimimos la carpeta en sites/all/libraries,(en caso de no existir la carpeta crearla.)
Nos vamos a la pestaña módulos, buscamos los componentes instalados y los activamos, una vez hecho esto podemos entrar en cada uno y configurar su apariencia,perfiles, quien tiene acceso etc...
El segundo paso ha sido descargarme el plugin CKEditor instalarlo igual que wysywyg y luego nos descargamos el editor y descomprimimos la carpeta en sites/all/libraries,(en caso de no existir la carpeta crearla.)
Nos vamos a la pestaña módulos, buscamos los componentes instalados y los activamos, una vez hecho esto podemos entrar en cada uno y configurar su apariencia,perfiles, quien tiene acceso etc...
jueves, 16 de mayo de 2013
Modificar texto
A trabajar con algún tema , los textos que contienen no son los que necesitamos, para modificar estos textos nos vamos a la parte de Administración --> Configuración --> Traducir Interfaz, buscamos la palabra que queramos modificar editamos y la cambiamos por la nueva.
Tenemos que tener en cuenta que para poder hacer esto tenemos que tener activado el Módulo Locale.
martes, 14 de mayo de 2013
Instalando Drupal en local (Windows)
He decidido aprender Drupal, así que me instalé todo lo que necesitaba para comenzar.
Tenia instalado anteriormente el servidor XAMPP así que es el que he utilizado, primero me descargué de la url http://drupal.org/project/drupal la última versión de drupal (en mi caso la 7.22), lo descomprimí en la carpeta xampp/htdocs y renombre la carpeta que se crea a prueba, ya cada uno le pone el nombre que más le guste.
Luego me cree la base de datos, lo primero que hice fue mover la carpeta phpMyAdmin de xampp a xampp/htdosc, luego puse en la url http://localhost/phpMyAdmin y me cree la base de datos.
Una vez terminado ponemos en la url http://localhost/prueba y accedemos a la configuración de drupal, primero nos sale el idioma que queremos instalar, por defecto solo está inglés, si queremos instalarlo en español debemos irnos a la url http://drupal.org/project/es y descargarnos la versión española y lo descomprimimos en xampp\htdocs\drupal_prueba\profiles\standard\translations\ recargamos la página y ya vemos que nos sale la opción de español.
Seguimos los pasos que nos van indicando y al final poniendo localhost/prueba nos debe salir el panel de control y un tema por defecto, en el siguiente post explicaré que significa temas, módulos etc....
Tenia instalado anteriormente el servidor XAMPP así que es el que he utilizado, primero me descargué de la url http://drupal.org/project/drupal la última versión de drupal (en mi caso la 7.22), lo descomprimí en la carpeta xampp/htdocs y renombre la carpeta que se crea a prueba, ya cada uno le pone el nombre que más le guste.
Luego me cree la base de datos, lo primero que hice fue mover la carpeta phpMyAdmin de xampp a xampp/htdosc, luego puse en la url http://localhost/phpMyAdmin y me cree la base de datos.
Una vez terminado ponemos en la url http://localhost/prueba y accedemos a la configuración de drupal, primero nos sale el idioma que queremos instalar, por defecto solo está inglés, si queremos instalarlo en español debemos irnos a la url http://drupal.org/project/es y descargarnos la versión española y lo descomprimimos en xampp\htdocs\drupal_prueba\profiles\standard\translations\ recargamos la página y ya vemos que nos sale la opción de español.
Seguimos los pasos que nos van indicando y al final poniendo localhost/prueba nos debe salir el panel de control y un tema por defecto, en el siguiente post explicaré que significa temas, módulos etc....
Suscribirse a:
Entradas (Atom)