PUBLICADO EL 28 DE JULIO DEL 2008
MODIFICADO EL 28 DE SEPTIEMBRE DEL 2008
INTRODUCCIÓN
Hoy inicio una serie de tutoriales para trabajar con JSF y mostraré lo sencillo que resulta trabajar con esta relativamente reciente tecnología de SUN, y espero que los lectores puedan encontrarle el gusto a Java Server Faces y vean por si mismos el por que yo en lo personal prefiero JSF a otras tecnologías como ASP .NET y a ese otro lenguaje que no recuerdo su nombre…. ah si! ya recorde! PHP!
En este primer ejemplo será hacer un sencillo formulario de lógin con Java Server Faces y verémos los sencillo que resulta trabajar con el Visual Web Pack de NetBeans.
HERRAMIENTAS:
- NetBeans 6.1 con el plugin para Visual Web Pack
- Servidor de Aplicaciones GlassFish
- MySQL 5.0
- Aqua Data Studio 6.5
DESARROLLO
Si se usa la versión 6.1 de NetBeans, ya se trae por default el plugin para trabajar con Visual Web Pack, en caso contrario, tendràs que descargarlo desde el menú Tools-plugins.
Primero creamos una tabla como la indicada por el Diagrama E-R
donde los campos indican: id de usuario AUTO_INCREMENT, A. Paterno, A. Materno, Nombre, Nombre de usuario o nick, Contraseña, Correo y los ultimos 4 campos son campos AUDITORES.
Una vez que tenemos lista la tabla en la BD, regresamos a NetBeans y crearemos un nuevo proyecto que será una Web Application, y seleccionamos el servidor de aplicaciones que trabaja por defecto NetBeans, GlassFish!. y a la hora de seleccionar los Frameworks, escogeremos Visual Web Java Server Faces.
Hecho esto, tendrémos una página lista para arrastrar los componentes visuales de JSF y comenzar a diseñar!
Después proseguimos a realizar un pequeño formulario como el mostrado en la imàgen de abajo. Insertamos un Layout Panel y en su propiedad PanelLayout seleccionamos Grid Layout. Y dentro de este panel colocaremos la caja de texto del user y el Pasword Field para la contraseña junto con un botón.
Además y fuera del Layout Panel, colocaremos un Group Message! (Observesé que también existe otro Layout Panel de color verde más obscuro que contiene a los demás componentes). Seleccionamos el Group Message y en su propiedad Title ponemos «ERROR DE AUTENTICACIÓN».
Es de suponerse que necesitamos una pequeña tabla donde esten nuestros usuarios con sus respectivas claves encriptadas! Para ello y en MySQL disponemos de varias funciones, entre las más recomendadas esta AES_ENCRYPT.
Una vez que ya se tiene la BD, regresamos a NetBeans y en la pestaña de Services realizamos la conexión a la Base de Datos dando click derecho en Data Bases y seleccionando New Connection… En caso de no tener el driver de MySQL ya instalado, deberemos entonces dar click derecho sobre la carpeta de drivers y seleccionar New Driver…
Si ya tenemos todo listo, podemos dar click derecho sobre nuestra conexión y seleccionar Connection. Después ya podremos navegar sobre las distintas tablas que tengamos. Entonces pues, seleccionaremos nuestra tabla de usuarios y arrastramos al «Page1».
Con esto se insertará en el SessionBean1 un RowSet y en el Page1 un DataProvider. El RowSet es el encargado se obtener los datos, ejecutar las sentencias SQL, y el DataProvider es algo así como un Puntero al RowSet y generalmente este último es el que usaremos para insertar y obtener valores.
Seleccionamos el RowSet creado en el SessionBean1 y damos click derecho para seleccionar Edit SQL Statement. Ahi modificaremos nuestra consulta SQL para traer únicamente los campos que necesitamos, que son usuario y password. En mi caso, como las contraseñas estan encriptadas, la sentencia SQL queda algo así:
SELECT ALL tacusu.`USU_CNOM`, AES_DECRYPT(USU_CPAS,’abc123′) as USU_CPAS
FROM tacusu
donde ‘abc123’ es la clave para desencriptar la contraseña que fué encriptada con esa misma clave. Guardamos los cambios y listo. Ah y para insertar la contraseña encriptada es algo asi:
INSERT INTO tacusu
VALUES(‘windoctor’, AES_ENCRYPT(‘aqui_contraseña’,’aqui_clave_secreta’));
Ahora seleccionamos la caja de texto, click derecho y escogemos «Add binding Attribute» para que podamos hacer referencia a él dentro del código. Hacemos esto mismo para el Password Field y el Botón. Además podemos cambiar su nombre con el cual harémos referencia en el mismo código, cambiando la propiedad id.
Seleccionamos el boton y dando doble click sobre el, pasaremos a la vista de código en donde se habrá creado un método «action». Ahi pondrémos el código mostrado en la figura de abajo.
Observese que tenemos:this.getSessionBean1().setMensaje(«Bienvenido » + user);
Con esto, estamos pasando dicho mensaje a la sesión del usuario y esto nos permitirá conservar esos valores a lo largo de la estancia del usuario en nuestra página.
Como se observa, dicho método retorna un valor «null» en el caso de que row sea igual a null, en caso contrario retorna un «index». Esto es por que dentro del archivo faces-config.xml ubicado en la carpeta de WEB-INF tenemos las dichosas «reglas de navegación» que nos permiten indicar el flujo de direcciones entre las páginas de nuestra aplicación. Entonces, vamos a ese archivo y veremos que NetBeans nos provee de una bonita vista de gráfica. Aquí únicamente debemos expandir al Page1.jsp y veremos que tendrémos ahi el botón que insertamos, seleccionamos dicha área y arrastrando el mouse hacia la página index.jsp (se me paso decirles antes que crearan una nueva «Visual Web JSF Page» con el nombre de index, así que agreguenla). Con esto, veremos que se ha trazado una línea con una flecha apuntando de Page a index, veremos que tiene un nombre de «case1».. del lado izquierdo en la propiedad outcome cambiaremos este nombre por «index» que fué el que pusimos en el código. Esta es nuestra regla de navegación. Cuando nuestro usuario de click al boton iremos al index.jsp pero si el usuario es incorrecto el método action nos retornará un null por lo cual nos quedaremos en la misma página. Guardamos los cambios y cerramos faces-config.
Ahora vamos al SessionBean1 y ahi declaramos una variable String como esta:
private String mensaje;
Luego, dando un click derecho ahi mismo en la ventana de código seleccionamos Refactor–Encapsulate Fields, e indicamos que deseamos crear sus métodos get y set de la variable mensaje.
Con esto se crearán dichos métodos. Ahora volvemos a la página index.jsp e insertamos un Static Text y cambiamos el tamaño y color de letra alterando la propiedad style. Seleccionamos el Static Text y damos click derecho, seleccionamos Property Bindings, y en la ventana que se nos abre. establecemos los valores indicados por la siguiente figura y damos click al botón de apply y cerramos la ventana.
Finalmente con esto tendrémos nuestra aplicación funcionando! Al inicio, cuando queramos ejecutar la aplicación, tardará alrededor de 1 minuto y fracción pues primero se iniciará el servidor de aplicaciones glassfish.
SI ESTA INFORMACIÓN TE FUÉ ÚTIL, TÓMATE LA MOLESTIA DE DEJAR UN COMENTARIO, QUEJA O SUGERENCIA, AL MENOS PARA SABER QUE LO QUE ESCRIBO LE ES ÚTIL A ALGUIEN Y ASÍ SEGUIR ESCRIBIENDO MÁS TUTORIALES.
Saludos!!
Gracias por este turorial, especialmente por utilizar el paquete VISUAL de NetBeans, ya que cuesta mucho conseguir información de este.
Te agradecería si hicieras un ejemplo de cómo utilizar un ingreso/despliegue de datos utilizando Visual JSF + Hibernate.
Saludos.
Muchas gracias, me has salvado la vida. Soy profesor y tenia que hacer justo estoy hoy en case y no tenia ni idea.
Gracias!!!!
Juajajaja ahora comprendo por que aveces al hacerle una pregunta en clase a los profes se salen por la tangente!!
Muchas gracias por la información. Coincido en que no hay mucho acerca de Visual JSF.
Ahora tengo que hacer ingreso de datos y listar información de bd, me sería util que publicara algo sobre esto.
De todas formas, este tutorial es un buen comienzo.
me gusto la expicacion de este texto muchas gracias
a ver si alguien me puede ayudar con codigo o q tengo que configurar para mostrar una tabla de sqlserver con dropdown (arrastrar una tabla de sql server a una tabla de visual web)
Buen dia.
Necesito ayuda por favor
Ya llevo investigando por mucho tiempo a mi problema, no encontrado la solucion. (Soy nuevo)
Necesito filtrar para mostrar esa informacion en una tabla
en el diseño arrastre una Tabla, TextField, Boton
Arrastre una tabla de la base de datos en la Tabla del diseño, En sessionBeans Tengo un RowSet con Select * from MITABLA, Modifique en criteria Ahora queda Select * from Where ID = ?, como hago el filtro.
al presionar boton necesito que tome lo que hay en TexField y que me muestre los datos relacionados al ID que esta en TextField.
Por Favor
Mil Gracias.
Mi Correo es gomezcos@gmail.com
Ayuda
Buen dia.
Necesito ayuda por favor
Ya llevo investigando por mucho tiempo a mi problema, no encontrado la solucion. (Soy nuevo)
Necesito filtrar para mostrar esa informacion en una tabla
en el diseño arrastre una Tabla, TextField, Boton
Arrastre una tabla de la base de datos en la Tabla del diseño, En sessionBeans Tengo un RowSet con Select * from MITABLA, Modifique en criteria Ahora queda Select * from Where ID = ?, como hago el filtro.
al presionar boton necesito que tome lo que hay en TexField y que me muestre los datos relacionados al ID que esta en TextField.
Por Favor
Mil Gracias.
Hola, ante todo enhorabuena y gracías por estos tutoriales que son muy bueno, en mi caso tengo un problema cuando ataco el rowset con la función AES_DECRYPT me devuelve un valor como este [B@1f3d226, y por tanto nunca encuentra al usuario ni el password,
Me podeis ayudar porque ya no se si es un problema de MySql o de Netbeans.
En mi caso teno MySql server 5.0
Y NetBeans 6.5 Beta.
Muchas gracías de antemano un saludo a todos
Estoy aprendiendo a utilizar hibernate en netbeans con visual JSF ya actualizo e inserto datos pero como puedio recorrerlos uno por uno y mostrar en pantalla con unos botones inicio, fin, sig, ant
Muchas gracias si me Puede ayudar por favor
oye me podrias ayudar con una aplicacion para insertar datos en netbeans. todos los datos son insertados por el usuario desde la aplicacion estoy trabajando de forma visual. te agradeceria mucho tu ayuda. de antemano gracias
amigos en el session bean no me crea el row set
solo me crea un row set data provider
Pues la verdad que me fue muy util, aqui descubri que lo del data binding…. que ya me estaba volviendo loco pues no sabia que teniamos que hacer eso para poder manejar los componentes en el codigo java… en fin,. muy bueno, me sirvio mucho…
Saludos
Hola, buenos datos. Puedo desde la vista JAVA, poner una sentencia SQL para sacar un campo d la tabla?. Quero visualizar en una pagina el codigo generado en otra pagina :S
muy bueno el tutorial mi duda ahora es una vez entrada al index como ago para poder cerrar session estilo hotmail por ejemplo. cosa de q me salga del index y no pueda a volver a entrar si no me autentifico nuevamente.
Hola? estoy intentano utilizar JSF con EJB y netbeans. en un formulario tengo unos textField. cuendo en la vista de código los quiero invocar(a los textField) es como que no existen. por que????
Hola,
estoy trabajando con jsf, manejando el ingreso de los usuarios al sistema mediante una base de datos, necesito saber como cerrar sesion de usuario, y que al intentar regresar a la pagina nuevamente o entrar directamente me pida iniciar sesion… por favor es algo urgente.. he intentado hacerlo como en jsp pero no me funciona =)…Gracias..
Q tal catalina buenas tardes., como te encuentras.,
Oye tuviste suerte con tu problema ya q ando buskando el mismo tema y no encuentro nada.
Si lograste resolverlo no te molestaria en compartirlo.
Saludos y gracias.
Tienes q crear un objeto de tipo HttpSession en el session bean y preguntar por el estado de dicho objeto en el init de cada pagina,
Gracias por el comentario, eran mis comienzos en el interezante mundo de java. Ahora viendo tu manual y picandole un poco me he interezado en jsf, si tienes tiempo ojala puedas sacar otro tutorial como este, muy bueno felicidades!.
Hola,
Tengo una duda, estoy creando una aplicacion java para el control del sensor de gas pero no se d donde descargar la libreria que necesito en netbeans 6.1 para que me funcione el puerto serial o paralelo que necesito. y poder realizar las pruebas con el circuito.
Si alguien puede ayudarme le agradesco..
Hola Ana!
Para el puerto serie, se tiene una libreria por parte de sun que puede bajar de su página. Busque API DE COMUNICACIONES. Sin embargo, el soporte es únicamente para Linux, ya que windows ha puesto muchas trabas para trabajar bajo su OS con los puertos.
Para el puerto paralelo, esta el parport. Puede revisar los tutoriales que tengo de LPT.
SI necesita ayuda y puedo darsela, escribame un correo.
saludos!!
Espero me ayuden, es algo simple…
Tengo una tabla amarrado a una tabla, esta tabla tiene solo codigos y mi proposito es pasar el mause por una fila y sacar los valores de las celdas y en la parte inferior mostrar las descripciones de los codigos de la fila…
Esto necesita activar un evento en la fila, pero no se como hacerlo….
quisiera saber como hacer para que la aplicacion envie la pagina del login por https pero luego de la autenticacion vuelva a usar http para el resto de la paginas.
he configurado mi login.jsp con la opcion CONFIDENTIAL del web.xml, entonces login.jsp es enviada en https pero no encuentro la manera de hacer que el resto de paginas usen http.
cualquier ayuda es bienvenida, gracias
Muchas Gracias, he buscado mucho el como realizar un login adecuado con JSF, sabes ¿Donde puedo encontrar más información sobre el trabajo con bases de datos y el VW del NetBeans?
Gracias… estuvo bueno el tutorial
Muy bueno, y facil de entender gracias.
buen tutorial
Hola!
Quien ya ha intentado realizar este ejemplo que describo y tienen el problema de que jamás les autentica como válida la contraseña pues al realizar la consulta les devuelve un valor extraño, les comento lo siguiente:
Recien note algo muy extraño, con SQL Server 2005 este problema no se da, por el contrario, todo funciona a la perfección, pero en efecto, con MySQL surge el problema… la razón? aun no la conozco con certeza, de hecho, si bien recuerdo, al realizar este tutorial, lo probe en una máquina ajena a la mia y me funcionó correctamente (por ello lo escribi) pero al correrlo sobre mi máquina habitual de trabajo, se me presento el problema de no reconocerme la contraseña.
En cuanto sepa el por que de esto, lo escribiré.
saludos!!
Buen tutorial, muchas gracias.
Hola, en primer lugar… agradecerte, estoy iniciando en jsf. Pero tengo un problema con tu ejemplo, tu colocas:
this.getSessionBean1().setMensaje(”Bienvenido ” + user);
Pero en mi codigo no existe .setMensaje….
Donde declaro esta funcion o procedimiento.
Alguien puede ayudarme?
hola soy Herlan:
Me gustaria que alquien me ayude con un problemita que tengo lo que pasa es que estoy haciendo un buscador de palabras asi como en Google, bueno todo funciona bien lo unico que no puedo hacer es que cada ves que yo introdusca una palabra y encuentre mas de 10 iguales a esa palabra los vaya cargando en diferentes paginas..osea mi problema esta en generar paginas de acuerdo a la cantidad de palabras que encuetre, si son 30 palabras solo tiene que aver 10 Hyperlik en esa pagina todo es igual a Google.
Esto tiene que ser utilizando Visual Web Pack de NetBeans 6.0
solo quiero un ejemplito que cargue una lista de Page y luego que adicione los HyperLink a cada pagina , osea asuman que estan haciendo un buscador de palabras y que tienen que funcionar asi como Google que con un Boton Next pueda pasar a otra pagina, pero esto tiene que ser en codigo Java no HTML. por que asi lo estoy aciendo osea que no estoy escribiendo nada de codigo HTML por que asi es mejor
Si es que alguien me puede ayudar se los agradecere muchisimo..les dejo mi correo barin_2@hotmail.com
Me parece interesante el tutorial pero, estoy Probando tu ejemplo y me genera un error RowKey me lo marca en Rojo, y tambien setMensaje()
Y si tenes ejemplos de de mantenimiento a tablas con consultas preparadas te lo agradecere.
Muy bueno el ejemplo, pero el netbeans no me aceptar la sentencia del tipo: SELECT ALL tacusu.`USU_CNOM`, AES_DECRYPT(USU_CPAS,’abc123′) as USU_CPAS
FROM tacusu ya que siempre me tira error (parse error) .. Evidentemente he cambiado el nombre de las tablas y todo ese rollo
HUY MUCHISIMAS GRACIAS!!! ME FUNCIONO TODO Y ESTO ERA LO Q NECESITABA…
Excelente y muchas gracias por este turorial, note puedes imaginar la ayuda que fue para mi proyecto.
Saludos.
Hola, muchas gracias por el trabajo. Doy detalles de los problemas que tuve por los comentarios de errores que lei arriba para ver si les ayudo en algo.
En primer lugar utilizo netbeans 6.5 y mysql 5.1, y funciona bien. El unico problema fue cuando trato de utilizar .setMensaje ….. y es porque no esta bien descrito el tutorial en esa parte… deben seguir leyendo el tutorial para que se den cuenta que deben poner esos metodos al hacer refactor del sessionBean1 con el parametro mensaje… eso es lo unico que no ando muy bien, pero tampoco es para tanto.
Saludos, gracias por este tutorial. Primeramente para ayudar a los amigos que tienen un error con el .setmensaje, para solucionar esto deberia de crear la variables private String mensaje en el SessionBean1 justo despues de la seccion public class SessionBean1 extends AbstractSessionBean {, y luego haces click con el boton derecho del mouse sobre el nombre de la variable mensaje y seleccionas refactor, y luego le das para que cree los metodos get y set. Ahora el problema que yo tengo es con un error del rowkey, y no estoy muy seguro de la cadena Select, alguien sabe un poco mas de esto?
Me sirvio bastante. Muchas Gracias!!!
Buen Tuto y, con respecto a el error con el RowKey, es muy probable que te falte:
import com.sun.data.provider.RowKey;
Prueba agregandolo.
SALUDOS
Muy buena información, gracias por la molestia. Es grato saber que alguien que sabe un poco más está dispuesto a colaborar.
Hasta pronto.
Muy bueno el contenido, me ha servido mucho.
Saludos
hola, tengo un problema cuando escribo parte de this.getSessionBean1().setMensaje(«Bienvenido»+user);
me sale error en setMensaje, aunque crea ese metodo en SessionBean1.
Aun así marca error, me puedes ayudar.
te lo agradecería.
Y… si no tengo netbeans???? lo bueno de jsp es que haciamos todo en un editor sencillo como el jcreator… pero como trabajar sin netbeans a puro codigo???
SI ALGUIEN ME PUEDE AYUDAR…
dentro del if…
if (row == null)
{
error |»Usuario/Contraseña incorrecta, Intente de nuevo»|;
return null;
}
no me reconoce «error», donde lo creo, o si necesito importar algo… bueno luego lo puse como comentario…
lo corri pero cuando le doy «Ingresar» me sale una pagina como titulo «Exception Handler» con….
Possible Source of Error:
Class Name: com.sun.sql.rowset.CachedRowSetXImpl5
File Name: CachedRowSetXImpl5.java
Method Name: getConnection
Line Number: 4125
Possible Source of Error:
Class Name: com.sun.data.provider.impl.CachedRowSetDataProvider
File Name: CachedRowSetDataProvider.java
Method Name: getMetaData
Line Number: 1319
Possible Source of Error:
Class Name: javax.faces.component.MethodBindingMethodExpressionAdapter
File Name: MethodBindingMethodExpressionAdapter.java
Method Name: invoke
Line Number: 102
Possible Source of Error:
Class Name: com.sun.faces.application.ActionListenerImpl
File Name: ActionListenerImpl.java
Method Name: processAction
Line Number: 118
Possible Source of Error:
Class Name: com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl
File Name: ViewHandlerImpl.java
Method Name: cleanup
Line Number: 603
Hola,
El tutorial es fatástico pero necesito hacer un logout de la aplicación. En Index.jsp tengo unos enlaces a las diferentes páginas que la componen mas el enlace de logout.
Pero no se como anular la sesión desde Index.jsp.
¿Puedes incluirlo en el tutorial, o que alguien me responda?
Saludos y gracias por el tutorial.
Hola, por favor necesito su ayuda, el tutorial esta buenisimo pero tengo unos problemillas, estoy trabajandolo con postgree, y bueno en SessionBean1.java me marca error en esta parte
private void _init() throws Exception {
usuarioRowSet.setDataSourceName(«java:comp/env/jdbc/public_PostgreSQL»);
usuarioRowSet.setCommand(«SELECT ALL public.\»Usuario\».\»NickUsu\», public.\»Usuario\».\»ContrasenaUsu\» FROM public.\»Usuario\»»);
usuarioRowSet.setTableName(«Usuario»);
}
y creo es la razon por la que no me aparece la opcion SessionBean1 al mostrar el Property Bindings del Static Text ….
Mi otra duda es tambien en el buton_action, al crear las variables user y pass, no me da la opcion get…. por lo que use la siguiente
String user = (String) this.textUser.getValue();
String pass = (String) this.textPass.getValue();
aunq no se si eso funcione y tenga que ver con el error anterior
por favor espero me ayudes, soy nueva en esto y necesito crear el login..
Millon gracias por hacer este tipo de tutoriales, por tu tiempo y por la ayuda que se me brindara
Gracias
Buen Dia
Hola, bueno ya arregle unas partes del error, lo que si es que en la parte del buton_action, al crear las variables user y pass, aun no me da la opcion get…. por lo que sigo usando
String user = (String) this.textUser.getValue();
String pass = (String) this.textPass.getValue();
ahora al correr el proyecto en la salida me devuelve lo siguiente
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
Building jar: C:\ControlSeguimiento\dist\ControlSeguimiento.war
In-place deployment at C:\ControlSeguimiento\build\web
Initializing…
deploy?path=C:\ControlSeguimiento\build\web&name=ControlSeguimiento&force=true&properties=keepSessions=true running on GlassFish V3
Connection refused: connect
C:\ControlSeguimiento\nbproject\build-impl.xml:556: The module has not been deployed.
BUILD FAILED (total time: 3 seconds)
por favor ayudeme a resolver el problema…
ah estoy utilizando
NetBeans IDE 6.5
PostgreSQL 8.3
Servidor de Aplicaciones GlassFish 3
Java EE 5 SDK
Por favor respondame
Gracias
Estubo buenisimo el pequeño tutorial, muy interesante, tengo muy poca experiencia en el IDE de NetBeans, ni siquiera sabia que existia esta herramienta. Sugerencia: por favor si puedes poner un poquito mas sobre este tema que resulta interesante…
Muchas gracias por la Data….Me sirvio Mucho!
Muchisimas gracias, tengo que hacer algo similar para la facu, me sirve muchisimo la data.
Genio
Si todas las personas tendrian el compromiso y la generosidad de compartir sus conocimientos en el mundo no existiria la ignorancia.
Muchas gracias y por fa sigue escribiendo sobre otros temas
CHRISTIAN
Muy buen tutorial. Puntual y conciso.
Excelente tutorial, fue de gran ayuda. Gracias
Hola excelente tutorial ya q no hay mucho material acerca de los JSF
tengo problemas con
String [] param = {«USU_CNOM»,»USU_CPAS»};
Gracias por la ayuda
Excelente Tutorial muchísimas gracias…
Pero ahora necesito manejar privilegios o roles de usuarios, he buscado por muchos lados pero no se encuentra este tipo de información.
Agradecería mucho si tuvieras esta información, puedes contactarme al correo…
mil gracias.
Gracias una vez mas, otro acertado tutorial, es dificil conseguir información y ejemplos claros de este Framework en español, saludos desde Bogotá – Colombia
Buen tutorial, pero no subestimes ASP (mas sabe el diablo por viejo que por diablo).
Mmmmm, yo la verdad trabajo con ASP y es como todo: uno de ASP A JSP es dificil o al reves. Pero bueno.
Tengo que hacer una aplicacion en JSP pero uso NetBeans 6.5. La verdad no se como utilizar componentes importantes para la creación de WebServices en JAVA. Mis preguntas seriasn:
Como puede declararse variables de sesion?
Como hereda la forma Web al code behin de JAVA (hasta donde he programado cuando digito this. (Algo). No hereda los controles del Web Form).
Como puede o en que parte cargar todos los componente importantes de una web Page en JAVA (Funciones, variables de session)?
No se pero lo que llevo de JAVA (JSP) sinceramente el GANADOR es ASP. Asi que sería bueno que se comentara como se puede dar solución a las cuestiones planteadas.
Gracias y de nuevo buen post
Esta muy bueno el ejercicio
es bastante compresible
y pude comprender como paso un valor a otra pagina
Muchas Gracias
Gracias por el post…. pero….
Creo todo el proyecto y programo la lógica, pero al ejecutarlo no me muestra en el explorador lo que tengo en la vista «Diseño» sino lo que tengo en la vista «JSP», que es NADA.
idea de como solucionar esto???
No sale ningun error, pero no lee la BD (creo), siempre sale «Usuario/Contraseña incorrecta» invariablemente, uso glassfish, Derby y Netbeans 6.7.
Como comprobar si realmente lee la BD ?
Alguna idea ?
gracias
Que modificaciones debo hacer para utilizar Apache_Derby ?
quiero hacer un inicio de sesió como este pero mi base de datos es sql Server.. la función Aesdecrypt es igual??
Muy útil!, me funcionó a la perfección, espero que hayan más ejemplos de este tipo.
Muy buena explicación, es justo lo que necesito, muchas gracias.
De casualidad sabes como restringir el acceso de una o mas paginas a un usuario.
yo te puedo ayudar con eso
hola primero felicitarte por el tutorialmuy bueno algunos detalles se te fueron como la creacion de la variable para llamar al mensaje y importar la libreria de sun data ya la corri y pues tengo problemas me manda un error y quisiera que me ayudaras estoy utilizando posgre como bacede datos y bueno noce cual puede ser el error alguien que me ayude
Exception Handler
Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.
Exception Details: java.lang.ArrayIndexOutOfBoundsException
-1
Possible Source of Error:
Class Name: com.sun.data.provider.impl.AbstractTableDataProvider
File Name: AbstractTableDataProvider.java
Method Name: findFirst
Line Number: 237
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
Stack Trace:
com.sun.data.provider.impl.AbstractTableDataProvider.findFirst(AbstractTableDataProvider.java:237)
com.sun.data.provider.impl.AbstractTableDataProvider.findFirst(AbstractTableDataProvider.java:145)
demo.login.cmdingresar_action(login.java:198)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.sun.el.parser.AstValue.invoke(AstValue.java:187)
com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:337)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
Exception Details: javax.faces.el.EvaluationException
java.lang.ArrayIndexOutOfBoundsException: -1
Possible Source of Error:
Class Name: javax.faces.component.MethodBindingMethodExpressionAdapter
File Name: MethodBindingMethodExpressionAdapter.java
Method Name: invoke
Line Number: 102
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
Stack Trace:
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:337)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
Exception Details: javax.faces.FacesException
#{login.cmdingresar_action}: java.lang.ArrayIndexOutOfBoundsException: -1
Possible Source of Error:
Class Name: com.sun.faces.application.ActionListenerImpl
File Name: ActionListenerImpl.java
Method Name: processAction
Line Number: 118
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
Stack Trace:
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:387)
com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:337)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
Exception Details: com.sun.rave.web.ui.appbase.ApplicationException
#{login.cmdingresar_action}: java.lang.ArrayIndexOutOfBoundsException: -1
Possible Source of Error:
Class Name: com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl
File Name: ViewHandlerImpl.java
Method Name: cleanup
Line Number: 603
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
Stack Trace:
com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:603)
com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:311)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:337)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
dale doble click en Page1 ay encuentras un «tacusuaDataProvider» eliminalo y arratra nuevamente la tabla a la pagina te preguntara si de seas conservar el row le das si y aceptar y listo
Hola! super bueno el tutorial… pero les tengo una pregunta, si quisiera hacer lo mismo con jdeveloper como seria?? alguien tiene alguna idea o tutorial que pueda utilizar? la verdad soy nueva en esto de java… Todas mis aplicaciones las he trabajado en .Net.
Gracias
Buenas tardes y gracias por el tutorial!!
Tengo una duda no se si me puedan ayudar
Ya realice todos los pasos del tutorial pero al dejar los campos en blanco no me manda ningun error e incluso cuando los datos son correctos no hace nada me manda la pagina internet explorer no puede encontrar la pagina. Ojala alguien pueda ayudarme espero su respuesta
A mi criterio asp.net y dxperience son mucho más poderosas y eficientes se diseña interfaces en tiempo record robustas. Este netbeans no le llega ni a los talones
Que poco sabes sobre programacion…
jajaaja seguro sobre todo con el ajax ke trae .net ke se cae hasta por mirarlo , ah y con tu otra herramienta no la conosco pero la revisé y tiene una gran diferencia con jsf $$$$$$ jaajaja , ademas me tinca a ke no sabes ni ocupar netbeans.
ademas es muy de gay amarrarse con una empresa que vende un determinado producto como dxperience
Lo Probe y funciono al peluche… alguien sabe si esto me encapsula los datos q ingreso?
Muy buen tutorial, tengo un par de consultas:
¿Qué pasa si alguien intenta entrar directamente a la página index.jsp sin pasar por la pagina de logueo (Page1.jsp)?
¿Cómo podría redirigir a Page1.jsp a alguien que intente entrar a indes.jsp directamente sin iniciar sesión?
Teniendo tu variable de sesion en el session bean y preguntado por el estado de esta variable en el init de la pagina , saludos
wow, gracias realmente me salvaste la vida, me sirvio muchisimo, y especialmente por subir este tutorial usando principalmente visual web es perfecto para unas consultitas que ahora mismo voy a probar
gracias amigo
muy bueno el tutorial, queria pedirte un favor , saber si puedes hacer uno hacer de manejo de sesiones de usuarios en jsf y netbenas o si tienes algun tutorial libro o lo que sea, es que en mi trabajo me estan pidiendo que haga un sistema y la verdad como recien estoy comenzando no le entiendo mucho, weno gracias de antemano
hola…
estoy empesando con jsf y la verda me facina esta tecnologia asi que muchas gracias por el tutorial y me encantaria que publicaras mas tutoriales
Gracias por el tutorial, me ayudo mucho a resolver lo que estoy haciendo….
Hola… bueno al parecer en la v2 del glassfish funciona correctamente el ejemplo… pero existen errores al usar el glassfish v3 y no encontre informacion sobre eso.. talvez alguien tenga info sobre trabajar vjsf con glassfish v3….
muy bue material
hola en primer lugar quiero decirle que este tutorial me ha ayudado bastante y en segundo lugar le queria preguntar donde podría encontrar mas informacion al respecto sobre dicha tecnologia . He estado buscando y he encontrado un link pero esta roto http://webdev2.sun.com/example/. Espero atentamente su respuesta y que me pueda ayudar soy principiante en esto. Sin más, un saludo.
Hola, esta muy bueno el tutorial seria grandioso que lo hiciera en vídeo y lo subiera aquí para hacerlo paso a paso, ya que estoy empezando en el mundo de la web y la programación. y me seria de gran ayuda.. Saludos desde Costa Rica…
Gracias!!!!
Me ayudo muchísimo este tutorial… Excelente!!!
excelente el tutorial!!
Excelente el tutorial…felicitaciones. Quería saber como personalizar una consulta sobre el Provider, es decir, si quiero pasar parametros como rango de fechas, o un nombre incompleto como Econo%. Como recupero esa información. Gracias
Compañero, Muchas Gracias, pues es bien sabido que se necesito tiempo para esto y sobretodo el hecho de compartir un pequeño tutorial de JSF es muy agradable. Saber que hay personas con las que se puede contar, como es usted, para los novatos que estamos en este nuevo framework.
Muchas Gracias.
Me parece muy bien el ejemplo.
no me salio el ejercicio recien estoy intentanto programas en esto y no tengo idea porque sale esos errores y para colmo el netbeans se hace la pantalla negra que hago
Hola, quisiera saber si tiene alguna idea de como controlar que algún usuario escriba en la barra de dirección http://xxxxxxxx/MyFaces/faces/index.jsp y lo redireccione automáticamente a la pagina de inicio.
Gracias
Que tuto tan bueno… gracias!!!
Gracias Amigo, me ayudaste bastante
Muchas gracias! Muy bien explicado! Y útil.
Saludos
Hola muchas gracias por el aporte! me sirvio de mucho!
Pero ahora lo que hice fue poner un boton de SALIR en la index.jsp y le puse un return hacia la pagina de inicio… pero me di cuenta de que si en el navegador le doy clic en el boton de regresar una pagina! me retorna a la pagina de index! que puedo hace para que esto no suceda?
gracias!
No se bien como se hace pero deberías cerrar la sesión.
Supongo que será algo asi:
public String btnSalir_action()
{
this.getSessionBean1().destroy();
}
No se si destroy es el método adecuado pero la documentación dice algo así:
/**
* This method is called when this bean is removed from
* session scope. Typically, this occurs as a result of
* the session timing out or being terminated by the application.
*
* You may customize this method to clean up resources allocated
* during the execution of the
init()
method, or* at any later time during the lifetime of the application.
*/
@Override
public void destroy() {
}
Saludos
Windoctor, gracias por tu aporte, me ha sido de gran utilidad, pero tengo el problema de que estoy ocupando una BD en red, es decir, no es localhost. Uso el Driver de OracleThin y no me autentica el usuario.
Se que el tema ya tiene tiempo de haber sido publicado, pero necesito ayuda
GRACIAS!!
Hola
me interesa obtener un programa donde se implemente seguridad, en java, pero que se pueda mostrar en la web, no tengo idea, si tienes un programa me gustaría que me lo pasaran, debe tener login, y contener roles de usuario, etc..
mi correo es emanueletrix_xd@hotmail.com
gracias el manual esta super my facil de entender
WinDoctor felicidades… eres super… pero ya no haz escrito nada? plisss sigue.. sigue…