Recomiendo revisar el post http://appweb123.blogspot.com/2014/08/manejo-de-fechas.html
Descargar proyecto web (sin formato)
viernes, 15 de agosto de 2014
jueves, 14 de agosto de 2014
manejo de fechas
Les comparto, ahora por este medio, una utilidad para el
manejo de fechas.
Incluí lo que se utiliza a menudo: obtener fecha actual,
restar fechas, sumar días, etc.
NO conté con el tiempo suficiente para revisar bien el
código, así que cualquier detalle o sugerencia será bienvenida, tampoco
tengo el tiempo, en esta ocasión, de comentar el código...
Espero que con el ejemplo de uso sea más que suficiente para
la mayoría.
blog en proceso...
domingo, 10 de agosto de 2014
Mandar email desde java
Necesitamos JSF y JavaMail
El árbol de proyecto es el siguiente:
- Creamos un nuevo proyecto (java) con el nombre correo.
- En la carpeta "SourcePackages" agregamos un nuevo archivo de propiedades, llamado datos.
- Agregamos las claves fundamentales para JavaMail (líneas 4-8) y otras claves que utilizaremos (líneas 10-12)
NOTA: el correo debe ser uno existente de gmail
y la contraseña (línea 12) real del correo especificado
- Ahora creamos el paquete util, y dentro del mismo la clase EnviarMail que tendrá toda la lógica para el envío de correo utilizando JavaMail.
Debemos contar con el jar de JavaMail (mail.jar) para importar algunas clases a utilizar
Definimos un método que recibirá tres parámetros
Encerrando las sentencias en el bloque try-catch, iniciamos leyendo el archivo de propiedades y creando una composición de Session asignando un objecto de sesión predeterminado (getDefaultInstance) con las propiedades (claves) y valores del archivo de propiedades llamado datos.
Para crear el mensaje, será a través de una instancia de objeto MimeMessage y luego le establecemos los atributos y contenidos apropiados setFrom, setSubject, setText, addRecipient, etc.
De la imagen siguiente, línea 42 se establece el remitente del correo: setFrom
Línea 44, se establece el asunto del mensaje (correo): setSubject
Línea 45, se establece el mensaje como tal especificando la codificación a utilizar y el subtipo MIME
prop.getProperty("clave") recupera el valor de la clave indicada en el archivo de propiedades llamado datos
De la imagen anterior, en la línea 43 se declara el destinatario del correo (éste debe existir y puede ser de gmail. hotmail, yahoo, etc.), se puede incluir con copia a otro destinatario y con copia oculta
Línea 50, nos autenticamos con el usuario (correo) y contraseña válidos en el host especificado (en este caso smtp.gmail.com: clave mail.smtp.host del archivo de propiedades)
Una vez autenticados, mandamos el mensaje sendMessage
Casí para finalizar, cerramos el servicio: t.close();
Línea 55 cerramos try y añadimos dos catch específicos: si hay error en el envío del mensaje y si hay algún problema en la entrada/sálida de datos al cargar el archivo de propiedades.
Ahora utilizaremos este método desde una "Java Main Class"
Descargar ejemplo
Antes de probar el proyecto de ejemplo, debe establecer su correo y contraseña de gmail en el archivo de propiedades (en las claves mail.smtp.user y utez.gmail.pass).
Queda como creatividad que el método enviar retorne un "booleano" para informar si se envío o no el correo, validar que las direcciones de correo cumplan con el formato de correo, y agrear una interfaz gráfica con swing o web por ejemplo.
lunes, 4 de agosto de 2014
de Swing a Web
¿cuentas con una aplicación de "escritorio" (Swing) y quieres crear su equivalente en aplicación Web?
En este post proponemos una estrategia para ello:
Utilizaremos MVC pero sin el uso de algún framework para ello.
¡Tu aplicación de "escritorio" ya cuenta con BEAN´s y DAO´s y con su respecta manipulación de datos (operaciones CRUD) ?
Entonces sólo hace falta el controlador (servlet) y la vista (jsp) para tener la replica como aplicación web.
Entonces... comenzamos!!!
proyecto Swing
BD
controlador
Vista
swing
Descargar proyecto
BD
Descargar base de datos para este proyecto
Aplicación WEB:
Primero debemos crear un nuevo proyecto java web
copiar los paquetes: bean, dao y util
El resto de paquetes (considerando este proyecto) no se utiliza en una aplicación web.
Agregamos las librerías (sqljdbc4.jar)
Además en la aplicación web utilizaremos la librería JSTL para mostrar tabla de registros (en este caso autores).
Controlador
Declaramos los métodos necesarios para atender las operaciones CRUD:
Tomemos en cuenta que un Servlet puede responder a través de response (HttpServletResponse) o redireccionar a un recurso: como puede ser un html, jsp, otro Servlet e incluso a si mismo (dado que todo Servlet es un recurso).
Creamos un nuevo Servlet llamado Autor (en el paquete controlador).
Programamos processRequest (método que se ejecuta sin importar si la solicitud al Servlet es get o post):
La línea 39, recupera el parámetro llamado action el cuál contiene la información que informa de la solicitud del cliente. Sin embargo, puede suceder que no se especifique el parámetro action, en cuyo caso la variable operacion tomaría el valor de null. Razón por la que se incluye la línea 40.
La línea 61 redirecciona a un recurso especificado en la variable irA que por default es index.jsop (ver línea 38).
Si y sólo si la operacion es diferente de null (línea 40), se revisará si la operación (petición del usuario) es alguna de las siguientes:
¿cuál es la diferencia entre formAdd y crear ?
formAdd se utilizará para redireccionar al formulario que permita especificar los datos del nuevo registro, mientras que crear tomará los datos del formulario y procederá a guardar/crear/insertar el nuevo registro.
y...
¿cuál es la diferencia entre formEdit y modificar?
formEdit recuperará los datos del registro a editar (por medio de su ID) y redireccionará al formulario que permita modificar el registro, haciendo llegar los datos del registro para colocarlos por default y que el usuario ya no transcriba todos los datos y sólo modifique los campos que requiera.
modificar (semejante a crear) toma los nuevos datos del registro, indicados en el formulario, y procede a guardar los cambios.
De la imagen anterior, se puede ver como el Servlet Autor, si ejecuta la línea 79, está actualizando el recurso al que redireccionará (irA) que en este caso es a si mismo, pero con el parámetro action=consultar. Lo que resulta en que una vez que se agrega el nuevo registro, se procede a consultar y mostrar los registros, con lo que le demuestra al usuario que se eliminó el registro al "actualizar" la tabla y estar ausente el registro eliminado.
processEdit (ver siguiente imagen)
Recupera el id del registro a modificar (línea 148), convierte a el id (pID) a entero (línea 151), recupera los datos del autor a partir de su id (línea 152), agrega a request un atributo con el nombre "attAutor" cuyo valor es el autor recuperado (línea 153).
Actualiza el nombre del recurso al que se redireccionará (línea 154)
En caso de existir un error al recupera el id/convertirlo a entero, se agrega un atributo llamado "mensaje" con el valor de una cadena de texto informando del error y actualiza el recurso al que redireccionará (línea 157).
En la imagen anterior se aprecia el código del método processActualizarRegistro que es muy semejante al de crear (proccessNuevoRegistro), con la diferencia de recuperar el ID (líneas 119,125).
Y del DAO llama al método actualizar en lugar de insertar,
estos dos métodos en el DAO (actualizar e insertar) también son semejantes cambiando principalmente al preparar la sentencia SQL.
Para eliminar y consultar
prácticamente sólo se hace uso del DAO que copiamos de la aplicación de escritorio (swing)
Vistas
Creamos/diseñamos el index.jsp utilizando bootstrap
Y diseñamos el formulario para un nuevo registro en (autorC.jsp), para hacerlo rápidamente, utilizamos http://bootsnipp.com/forms?version=3 (para saber como utilizar la herramienta visite blog twitter-bootstrap)
Al terminar autorC.jsp realizamos una copia y renombramos a autorU.jsp (para editar autor) aplicando sólo algunos ajustes dado que el formulario es semejante.
En autorR.jsp se imprime la tabla con los registros.
Descargar la aplicación web
blog en proceso...
En este post proponemos una estrategia para ello:
Utilizaremos MVC pero sin el uso de algún framework para ello.
¡Tu aplicación de "escritorio" ya cuenta con BEAN´s y DAO´s y con su respecta manipulación de datos (operaciones CRUD) ?
Entonces sólo hace falta el controlador (servlet) y la vista (jsp) para tener la replica como aplicación web.
Entonces... comenzamos!!!
swing
El proyecto de escritorio "swing" es de la autoría de un alumno de 3° "C", en la DATIC-UTEZ
https://www.facebook.com/jorge.zmoke
Tomo el proyecto para abordar un ejemplo del procedimiento para replicarlo en versión Web.
Descargar proyecto
BD
Descargar base de datos para este proyecto
autoría del mismo alumno de 3° "C".
Aplicación WEB:
Primero debemos crear un nuevo proyecto java web
copiar los paquetes: bean, dao y util
El resto de paquetes (considerando este proyecto) no se utiliza en una aplicación web.
Agregamos las librerías (sqljdbc4.jar)
Además en la aplicación web utilizaremos la librería JSTL para mostrar tabla de registros (en este caso autores).
Controlador
Declaramos los métodos necesarios para atender las operaciones CRUD:
Tomemos en cuenta que un Servlet puede responder a través de response (HttpServletResponse) o redireccionar a un recurso: como puede ser un html, jsp, otro Servlet e incluso a si mismo (dado que todo Servlet es un recurso).
Creamos un nuevo Servlet llamado Autor (en el paquete controlador).
Programamos processRequest (método que se ejecuta sin importar si la solicitud al Servlet es get o post):
La línea 39, recupera el parámetro llamado action el cuál contiene la información que informa de la solicitud del cliente. Sin embargo, puede suceder que no se especifique el parámetro action, en cuyo caso la variable operacion tomaría el valor de null. Razón por la que se incluye la línea 40.
La línea 61 redirecciona a un recurso especificado en la variable irA que por default es index.jsop (ver línea 38).
Si y sólo si la operacion es diferente de null (línea 40), se revisará si la operación (petición del usuario) es alguna de las siguientes:
- formAdd
- crear
- consultar
- formEdit
- modificar
- eliminar
¿cuál es la diferencia entre formAdd y crear ?
formAdd se utilizará para redireccionar al formulario que permita especificar los datos del nuevo registro, mientras que crear tomará los datos del formulario y procederá a guardar/crear/insertar el nuevo registro.
¿cuál es la diferencia entre formEdit y modificar?
formEdit recuperará los datos del registro a editar (por medio de su ID) y redireccionará al formulario que permita modificar el registro, haciendo llegar los datos del registro para colocarlos por default y que el usuario ya no transcriba todos los datos y sólo modifique los campos que requiera.
modificar (semejante a crear) toma los nuevos datos del registro, indicados en el formulario, y procede a guardar los cambios.
De la imagen anterior, se puede ver como el Servlet Autor, si ejecuta la línea 79, está actualizando el recurso al que redireccionará (irA) que en este caso es a si mismo, pero con el parámetro action=consultar. Lo que resulta en que una vez que se agrega el nuevo registro, se procede a consultar y mostrar los registros, con lo que le demuestra al usuario que se eliminó el registro al "actualizar" la tabla y estar ausente el registro eliminado.
processEdit (ver siguiente imagen)
Recupera el id del registro a modificar (línea 148), convierte a el id (pID) a entero (línea 151), recupera los datos del autor a partir de su id (línea 152), agrega a request un atributo con el nombre "attAutor" cuyo valor es el autor recuperado (línea 153).
Actualiza el nombre del recurso al que se redireccionará (línea 154)
En caso de existir un error al recupera el id/convertirlo a entero, se agrega un atributo llamado "mensaje" con el valor de una cadena de texto informando del error y actualiza el recurso al que redireccionará (línea 157).
En la imagen anterior se aprecia el código del método processActualizarRegistro que es muy semejante al de crear (proccessNuevoRegistro), con la diferencia de recuperar el ID (líneas 119,125).
Y del DAO llama al método actualizar en lugar de insertar,
estos dos métodos en el DAO (actualizar e insertar) también son semejantes cambiando principalmente al preparar la sentencia SQL.
Para eliminar y consultar
prácticamente sólo se hace uso del DAO que copiamos de la aplicación de escritorio (swing)
Vistas
Creamos/diseñamos el index.jsp utilizando bootstrap
Y diseñamos el formulario para un nuevo registro en (autorC.jsp), para hacerlo rápidamente, utilizamos http://bootsnipp.com/forms?version=3 (para saber como utilizar la herramienta visite blog twitter-bootstrap)
Al terminar autorC.jsp realizamos una copia y renombramos a autorU.jsp (para editar autor) aplicando sólo algunos ajustes dado que el formulario es semejante.
En autorR.jsp se imprime la tabla con los registros.
recomiendo visitar el blog: recorrer-colecciones-con-jstl
Descargar la aplicación web
blog en proceso...
Suscribirse a:
Entradas (Atom)