Entradas

El próximo estándar web

(Fuente: http://www.pc-actual.com/actualidad/noticia/2009/02/26/El-proximo-estandar-Web ) Desde su nacimiento, la Web ha ido evolucionando, pasando de ser una red de documentos simples entrelazados a principios de los ochenta a una granestructura para ejecutar aplicaciones y servicios En ocasiones, los fabricantes del software que permite acceder a la Web, los conocidos navegadores, han incluido en sus productos extensiones de manera unilateral, como las etiquetas propietarias en el lenguaje HTML , dando lugar a incompatibilidades entre navegadores. Éste fue el origen de todos los problemas para los diseñadores web, que tenían que comprobar el navegador empleado por el usuario para adaptar el código o bien decantarse por uno de ellos e indicar en las páginas qué programa debía ser utilizado para verlas correctamente. Aunque se trata de una excepción a la regla, en casos contados, esas extensiones unilaterales han terminado siendo aceptadas, explícita o implícitame...

Guardar imágenes en base de datos usando JPA

Hay infinidad de ejemplos de cómo guardar una imagen a base de datos con JDBC, y cómo recuperarla. Pues esta vez mostraré un ejemplo usando JPA. Supongamos que nuestra clase entidad tiene una propiedad llamada imagen que es donde se guardará la imagen. Esta propiedad debe declararse así: @Lob @Column(name = "imagen") private byte[] imagen; Para guardar una imagen (supongamos una que esté en el disco), debemos realizar lo siguiente: Entidad i = new Entidad(); // nuestra entidad File f = new File("D:/Imagen006.jpg"); //asociamos el archivo fisico InputStream is = new FileInputStream(f); //lo abrimos. Lo importante es que sea un InputStream byte[] buffer = new byte[(int) f.length()]; //creamos el buffer int readers = is.read(buffer); //leemos el archivo al buffer i.setImagen(buffer); //lo guardamos en la entidad em.persist(i); //y lo colocamos en el EntityManager Ahora, para recuperar el contenido haremos que se muestre el contenido en un JFrame: Enti...

Ya no habrá versión 7 de NetBeans

Ya no habrá NetBeans 7.0 Habrá NetBeans 6.7 para junio de 2009. El equipo de desarrollo de NetBeans - según indican en su noticia ( http://www.netbeans.org/servlets/NewsItemView?newsItemID=1346 ) - que se centrarán en cambios más pequeños, y no harán sus clásicos nuevas versiones que son dos veces cada año. (Al menos nos dará un respiro para los que traducimos el NetBeans al español) Indican también que los cambios de versiones en decimales (6.1, 6.5, 6.7..) son cambios pequeños en la aplicación y que mantienen la compatibilidad del API. Muy bueno para los desarrolladores de plugins. Mientras que las versiones de números enteros (5, 6, 7) son cambios considerables en el API de NetBeans, y en su plataforma. La versión oficial de 6.7 será lanzada en junio de este año, y entre las características importantes son las integraciones de Maven y de Kenai. La próxima semana será lanzada la versión 6.7 ML 2. Sería intersante bajarlo cuando esté disponible e irlo probando, a fin de ayudar en su ...

Resolviendo examenes

Imagen
Este post no tiene nada que ver con NetBeans ni Java, ni tecnología parecida. Me llegó un mail bastante divertido y me gustaría compartirlo. El problema de los exámenes son los profesores que no entienden las habilidades de uno: no entiendo por qué me puso cero, si la hallé! pero si la estuve expandiendo!     Aquí tuve un accidente.. y me desesperé "Profe, le juro que el elefante ya estaba ahí cuando me dió el examen!" Esta estaba regalada la respuesta.

Aprendiendo sobre Alcances de variables de Sesión en JSF

Imagen
(Versión Wiki: http://wiki.netbeans.org/AprendiendoSobreAlcancesJSF ) Introducción Sabemos que es un dolor de cabeza usar las variables de sesión a través de los objetos HttpSession y HttpRequest. No sabemos si una variable está en nivel de sesión o en nivel de request, simplemente lo ponemos y lo usamos, aunque después nos pueden dar problemas a lo largo de la aplicación Pero al usar JSF esto se hará mucho más sencillo. JSF nos permite utilizar tres tipos de alcances: Aplicación: Una variable guardada en este alcance es visible durante toda la aplicación, hasta que se repliegue la aplicación o hasta que se detenga el servidor. Sesión: Una variable guardada a nivel de sesión, puede ser visible durante el tiempo de vida del usuario en la aplicación, hasta que se invalide la sesión. Request : Una variable en nivel request dura solo hasta la siguiente página, Una página 1, guarda la variable en nivel request y redirecciona la petición a la página 2. La página 2 la utiliza, y el objet...

Convirtiendo Date a String / String a Date

Podemos convertir un objeto fecha a String de varias maneras. Cada manera es un tipo de formato establecido por el JVM instalado en nuestro computador. Consideremos este ejemplo: Date d1 = new Date(); DateFormat[] dfa = new DateFormat[6]; dfa[0] = DateFormat.getInstance(); dfa[1] = DateFormat.getDateInstance(); dfa[2] = DateFormat.getDateInstance(DateFormat.SHORT); dfa[3] = DateFormat.getDateInstance(DateFormat.MEDIUM); dfa[4] = DateFormat.getDateInstance(DateFormat.LONG); dfa[5] = DateFormat.getDateInstance(DateFormat.FULL); for (DateFormat df : dfa) { System.out.println(df.format(d1)); } En mi caso, el resultado es: 09/02/09 10:29 AM 09/02/2009 09/02/09 09/02/2009 9 de febrero de 2009 lunes 9 de febrero de 2009 Notemos el resultado del formato obtenido por DateFormat.getInstance() . Es toda la fecha en formato corto, además de la hora. Mientras que si obtenemos el formato con DateFormat.getDateInstance() la fecha se muestra en formato medio (Podemos consultar la configuració...

getParameter en JSF

En JSF todos los valores de los formularios se pasan por ManagedBeans (con más detalle lo veremos en el curso que está a punto de salir) Pero ¿qué pasa si queremos procesar una petición con parámetros? En Java web y Struts podemos acceder a los parámetros a través del objeto implícito "request", pero JSF no hay ese objeto implícito ¿qué se hace? Bueno, para acceder al objeto request debemos hacer lo siguiente: HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); A partir de allí, podemos usar el objeto request . Ahora, los nombres de los controles tendrán un ligero cambio. Estará compuesto por el "id" del formulario y del "id" del mismo control. Por ejemplo, consideremos este .jsp <h:form id="form0"> <h:outputLabel value="Escriba número:"/> <h:inputText id="numeroText" value="#{form.numero}" /><br/> ... Entonces, para acceder...