Bien hace poco pidieron por ahi un login con jsp y mysql , tambien uno con access pero ese mas adelante lo hare , por hoy tengo este en mysql , viene validado con javascript , con sesiones para que de una vez las apliquemos.
Bien para empezar el login nos va servir para la seguridad de nuestra aplicacion , tambien para tener distintos usuarios dentro de nuestro , sistema yo siempre recomiendo si no es tan relevante el tipo de usuario podemos crear tablas diferente tales como administradores , usuarios etc.
Las sesiones son mas seguras que las cookies , ya que las sesiones se guardan en el servidor y no el cliente , aunque las cookies tambien son utiles.
Bien empezemos con el login , haremos un formulario tal y como se muestra en la imagen.
Este formulario esta validado con javascript a manera que no quede en blanco los objetos html , cuando los datos esten llenos se mandan al servidor para que otro archivo sirva de pasarela y verifique la informacion de la base de datos.
Bien antes que todo tenes que conectar a la base como ya hemos visto antes , luego declaramos una variable booleana para jugar al true o false , dependiendo si los datos son correctos , luego capturamos los objetos html del formulario anterior , luego hacemos un select * from a la tabla user con un where , y abrimos un while para obtener todos los datos , y comparamos si son identicos a los que acaban de introducir .
Luego de cerrar el ciclo while , hacemos un if para verificar si la informacion es correcta , si son correctos , luego creamos la sesion y le asignamos un nombre y un valor.
Luego mostramos un mensaje que se identifico correctamente y redireccionamos a la pagina protegida, si los datos son incorrectos muestra un mensaje de error y regresa al login .
Cabe recordar que tenes que importar las java util y poner las session=true .
Bien esta es la pagina protegida ya que las sesiones para esos sirven para que el contenido de la pagina sea solo visible a los usuarios registrados.
Primero tenemos que capturar el nombre de la sesion y guardarla en un objeto string , luego hacemos un if si el user es diferente de null osea nada , que me muestre todo lo protegido , todo el contenido de la web que es solo para usuarios registrados.
cuando terminemos de poner todo el html o codigo java tenemos que cerrar el if para luego abrir el else , que es cuando el usuario no se ha logeado saldra una imagen que diga usuario no registrado.
veamos una demostracion de lo que les hablo primero estaremos con un usuario debidamente logeado y registrado en nuestra base de datos lo que mostrara es esto:
Si el usuario se logeo perfectamente le mostramos el contenido solo para usuarios registrados.
si el usuario llega de bayunco y le pide la url privada a otro tipo que es registrado o simplemente empieza a probar las paginas , la sesion le bloqueara el contenido asi .
Nuevo enlace
Sean agradecidos con el codigo , compartanlo mejorenlo pero nunca se olviden de donde lo bajaron.
jueves, 28 de octubre de 2010
Login con sesiones JSP y MYSQL
Etiquetas:
bayuncadas,
chavakanada,
codigo rojo itca,
vacil mio
Suscribirse a:
Enviar comentarios (Atom)
Grande hermano lo estaba buscando desde hace tiempo...muchas gracias por tus aportes son de mucha ayuda
ResponderEliminarHey ta weno el ejemplo !!! Grax
ResponderEliminarEnlace arreglado cualquier onda comenten
ResponderEliminarMen quedo a todo dar, si me sale solo la imagen no, pero eso es lo de menos , te ganaste un 10 vientos a compartir el codigo y gracias por tomarte el tiempo saludos desde Hidalgo, Mexico.
ResponderEliminarmi correo cilox54@hotmail.com
Gracias pero ya saben que estamos para ayudar, y saludos desde el Salvador.
ResponderEliminarmi hermano como le hago para consultar una lista de calificaciones bueno el problema es para poder presentarla en la pagina web, Por ejemplo, materia, calificación 1, cali2, cali3, promedio. y asi de varias materias que este cursando en un semestre, los relaciono por medio de un id en mis tablas. saludos gracias
ResponderEliminarese reporte va depender de como tengas tu base de datos la idea te entiendo necesitas presentar calificaciones por materias, solo que son varias calificaciones , pero esa materia debe de tener un alumno asi que podrias poner mas informacion sobre la base de datos , ya que te podria decir que mostraras primero al alumno con sus materias que esta cursando luego en cada materia poner un enlace y que lleve el id de la materia por metodo get , para luego mostrar todas las calificaciones de esa materia.
ResponderEliminarhey rada me da problemas el codigo q ondas ahi
ResponderEliminarque tipo de problemas ....
ResponderEliminarHola, gracias por tu aporte pero tengo una duda, la sesión inicia obviamente al principio y me valida para poder acceder al menu, pero como le hago para que me respete a ese usuario en el resto de las paginas de mi programa, que código les pongo o como voy arrastrando la sesión entre mis servlets, lo que pasa es que quiero ponerle permisos a mis usuarios. Gracias.
ResponderEliminarok muy buena tu pregunta y es algo que se puede mejorar con este ejemplo que esta en el blog.
ResponderEliminarbien el primer punto la sesion inicia cuando el usuario es correctamente validado , osea cuando el usuario esta en la base de datos,ahora la sesion se guarda en el servidor hasta cuando tu lo desees podes ponerle un tiempo prudente de existencia a la sesion digamos unos 15 minutos en el cual obligas al usuario a logearse de nuevo.
con el segundo punto para validar al usuario en todas tus paginas solo debes de hacer un if si existe esa sesion , ya si quiere darle permisos lo puedes hacer de muchas maneras diferentes una creando otra sesion con los permisos de se usuario la otra que se me ocurre es cuando verifiques q existe hacer una consulta a traer esos permisos y validarlos con los correspondientes .
espero te sirva cualquier duda pues aca estamos.
no puedo descargar el archivo...me sale un error
ResponderEliminarel enlace esta en perfectas condiciones para que lo bajes sin ningun problema.
ResponderEliminarMuchisisimas Gracias men iras al cielo de Programacion . . . .Se te agradece :D
ResponderEliminarMuy muy buen aportee mannn Graciiaassss . . . .
ResponderEliminarque buena socio era justo lo que necesitaba
ResponderEliminarArigatou! O gracias! Oh!! me has ayudado!
ResponderEliminarGracias amigo, me sacaste de una gran duda que tenía respecto a las sesiones.
ResponderEliminardonde se coloca el archivo "localhost.sql"???
ResponderEliminarEl archivo localhost.sql ademas de contener la definicion de la base de datos lo puede ejecutar desde el servidor de mysql como tiene extencion .sql recuerdo que es importar luego te pide que subas un archivo con varias extenciones las cuales son varias y esta .sql una vez subido dale aceptar y el generara la base de datos.
ResponderEliminarla otra opcion es copiar el codigo que contiene el archivo y correr solo el sql las informacion de cabecera que contiene espero me haya explicado.
HOla para que ocupas las librerias de hibernate?
ResponderEliminarLas librerias de hibernate en este proyecto se colaron cuando se creo el proyecto,se las puedes quitar y no abra problema,no se ocupan para nada ya que no se usa este ORM.
ResponderEliminarhola gracias por tu ejemplo espero que sigas subiendo mas información interesante
ResponderEliminaratt: maria camila
hola gracias por el aporte tengo una duda lo kq pasa es ke voy a acer un sistema ke necesita privilegios de usuario si es administrador o si es un usuario normal como podria modificarlo ya que soy nuevo en esto de netbeans de antemano muchas gracaias.
ResponderEliminarpara diferenciar si es usuario normal o otro tipo de usuario en la misma tabla de usuarios indicale que es,luego guardalo en sesion,y a lo largo de tu sistema evalua si tiene los permisos para hacer X accion, es una forma hay muchas desde permisos desde un XML pero esto se usa cuando se quiere un nivel de personalizacion mas grande pero si solo quieres usuario normal o administrador puedes hacer lo anterior agarrando la idea
ResponderEliminaresta genial tu blog amigo,creo que eres muy bueno en java espero y puedas ayudarme por favor, ya que estoy desarrollando una pequeña aplicación en netbeans, mira mi problema es que en una bd de mysql almaceno una foto y deseo recuperar la a través de un jcslide, ya logre conectar el slide a la bd pero cuando hago el filtro solo me realiza una busque y solo me muestra el primer resultado que encuntra cuanto en realidad tengo varias fotos con el mismo nombre, de antemano gracias. espero y puedas ayudarme
ResponderEliminarBueno ya lograste conectar a la bd y supongo que ya se visualiza la imagen que traes desde la base ,el jcslide es un componente que hizo algun tercero ya que no lo trae swing,ahi el problema puede ser tu consulta sql probala desde mysql con valores que quieras que regreses si te devuelve lo que quieres entonces es de buscar en tu codigo java donde estara el error ,sino ese componente tendra algun Bug.
ResponderEliminarantes que nada gracias por respoder, y si ya cheque la consulta y creo q esta bien mira: "SELECT foto from tImagenes where carnet = ?;
ResponderEliminarel ? es donde espera el parámetro que introduzca el usuario no.
pero si gustas te puedo enviar el código para que lo revises.
"SELECT foto from tImagenes where carnet = ?" el carnet puede traer muchas imagenes? o solo hay una imagen por carnet? el primer comentario entendi que hacias la consulta para que devolviera un conjunto de datos,si ya probaste esa consulta en mysql y te devulver lo que quieres,es hora de irte a tu codigo java debugealo,puede ser ese componente que estas usando o tiene bug o lo estas implementando de una forma incorrecta.
ResponderEliminarsi mira me explico, el usuario va poder realizar búsquedas de las imágenes a través de diversos capos uno de esos es el carnet por decir, como anteriormente te mencione lo importante no es recuperar los demás datos de mi bd lo que me interesa es la img, lo realice por medio de paneles pero el problema que tengo que a través del panel solo puedes presentar una img y si tuvieras mas de una con el mismo carnet solo te presenta la primera q encuentra en la bd y no las de mas, por eso pensé que si usaba un jcslide podría presentarme todas sin ningún problema, pero cuando realizo la búsqueda con la sentencia anterior obtengo el mismo resultado solo me muestra una img, te dejo mi correo e_red_in@hotmail.com porque en realidad me gustaría poder desarrollar esta aplicación y gracias por tu interés carnal. espero me hallas en tendido,jajaja
ResponderEliminarbueno tu aplicacion lo que quiere hacer es por unos filros traer datos de la base en esos datos vienen las imagenes que estan asociadas a los parametros de busqueda,si ya salimos de la duda que tu consulta esta bien vamonos a Java,bien el jcslide deberia de mostrarlas todas las imagenes,pero parece q no lo hace,bien nos vamos a la idea de tus paneles que solo te muestra una"ya verificaste que en java te traiga los datos exactos que quieres deberia de traer el conjunto"si es asi es porque en tu interfaz grafica o vista lo estas implementando mal.
ResponderEliminaruna idea que se viene es que hagas un tipo carrusel que pagines esos registros y muestres solo una pero que des la opcion de recorrer las imagenes existentes y el usuario las ira viendo una por una,ya que te da problemas en mostrarlas todas.
Lo siento lo borre por error pero aca esta tu comentario
ResponderEliminarcomentario anterior_____"exacto esa era una de las soluciones que había pensado, pero ya que soy relativamente nuevo en la programación en java netbeans, no creo tener el suficiente conocimiento para poder desarrollarlo no se como programar ese botón que haga que al dar clic sobre el pasen las imágenes y poner en un label 1 de 6 para que sepa cuantas img hay, así que te agradecería mucho cualquier ayuda que puedas brindarme Radamanthys17."____
aca vamos a usar la logica de una paginacion en tu caso necesitas saber cuantos registros tiene ese carnet eso se hace con un select count te devuelve un valor entero con una consulta lo puedes verificar preguntandole a google.
ResponderEliminarCuando sepas cuantos vas a mostrar lo unico que debes hacer es poner dos botones uno que diga siguiente y anterior.aca hay reglas de validacion no puedes ir al anterior cuantos estas en el primero,no puedes ir al siguiente cuando estas en el ultimo,y el boton de siguiente se encargara de en incrementar en uno la consulta con max result y first result en mysql, el de anterior hara lo contrario le quitara uno al valor estatico que manejes como es aplicativo de escritorio no hay problema que uses valores estaticos.
Gracias Hermano realmente me fuiste de gran ayuda, no sabia usar sesiones pero ahora con lo que me diste es mas que suficiente. Gracias de nuevo de antemano.
ResponderEliminarMuy buen ejemplo ;)
ResponderEliminardisculpa quisiera saber si es necesario poner un captcha ala hora de iniciar sesión
ResponderEliminarla seguridad depende de la aplicacion,este ejemplo es muy basico solo para empesar en estas cuestiones,si tu sistema requiere de colocar un captcha lo pones,sino no algunos sitios no lo necesitan si ves hotmail,gmail.yahoo no lo implementan.
ResponderEliminarPero como te repito su tu sistema requiere un nivel mas alto de seguridad pues hay que implementar otras cuestiones.
antes que nada te agradesco tu respuesta, y quisiera saber si no sabes algo de como eliminar un softbot de tu servidor ya que en donde estoy realizando mi servicio socail, el servidor tomo un softbot o robot que ase que cuando guardamos un formulario de alabase de datos mete mucha basura y quisiera saber si lo puedo elimnar.
ResponderEliminarde eliminarlo se ha de poder mas que todo desactivarlo pero como veo que es tu servicio social es mejor no tocar esas cuestiones,lo mas logico seria investigar como desactivarlo o sino validar esa basura desde tu aplicacion.
ResponderEliminardisculpa la molestia y hoja la puedas ayudarme realice una pequeña aplicación en netbeans es una aplicacion web con jsp, la pagina muestra un contenido, pero esos contenidos se encuentran en una bd de mysql y hago la conexion pormedio de un servlet en el index.jsp mando a llamar los registros de mi tabla y los almaceno en una matriz y final mente los imprimo en una variable dentro del codigo html. en mi lap funciona perfecto pero al subirlo al servidor en un war marca un error, ya cheque la conexion y esta bien la contraseña y el usuario ala bd y las tablas que uso para la pagina estan tambien en la bd y marca este error ojala pudieras ayudarme te lo agradeceria mucho.
ResponderEliminarError:
Estado HTTP 500 -
________________________________________
type Informe de Excepción
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
causa raíz
java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.java:130)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.28.
________________________________________
Apache Tomcat/6.0.28
bueno cuando te lanza esta excepcion java.lang.NullPointerException significa que algo que vas a usar en tu codigo esta nulo,puede ser tu matriz,para recoleccion de datos de la base de datos noce xq estas usando una matriz,en Java hay un framework de colecciones en la cual puedes usar listas y set para hacerlo de una forma mas elegante y legible.
ResponderEliminartambien revisa si todos los jar externos que usas estan localizados en tu web-inf en una carpeta lib ahi pones tus jar externos en casos de usar.
que servidor de aplicaciones estas usando????en pruebas de desarrollo y en produccion????
GRACIAS POR RESPODER AMIGO CREO QUE EL ERROR ESTABA EN QUE MI CONECTOR DE MYSQL ESTABA FUERA DE ESA CARPETA, ADEMAS DE UN PEQUEÑO ERROR EN MI WEB.XML
ResponderEliminarGracias por compartir la solucion a mas de alguno le servira
Eliminarte pasaste muxas gracias creeme k me sirvio demaciado!!
ResponderEliminarSaludos!!
quisiera saber como trabajar con calendarios en jsp para ingresar fechas a un formulario?
ResponderEliminarhttp://vacilmio.blogspot.com/2010/11/calendarios-en-ajax-y-manejo-de-fechas.html
Eliminarahi tienes un ejemplo de un calendario basico y manejo de fechas desde java.El ejemplo es muy simple.Puedes buscar maneras mas optimas para hacerlo como por ejemplo integrar Jquery con JSP, o incluso usar JSF con JSP ahi ya hay componentes de calendarios muy bien hechos.
que tal amigo ojala y puedas ayudarme mi problema es que dentro de mi jsp tengo que comparar dos variables de tipo string por decir tengo un if que dice si var1 != var2 pasa y aselo lo que quiero se su ponone, pero el problema es que no me lo respeta a veses son iguales los valores de las 2 varibles y an un asi lo ase no se porque cuando se supone que ni deveria entrar al IF.
ResponderEliminarlos valores de las variables lo recupero de unos inputs anteriores de otro jsp, acontinuacion te pongo mi codigo.
codigo:
String nombre = request.getParameter("nombre");
String nombre2 = request.getParameter("nombre2");
if (nombre != nombre2) {
//agragando a la tabla visitas en el campo operacion que el nombre fue cambiado
String sql5 = "update visitas set operacion='cambio el nombre:" + nombre2 + " por " + nombre + " de su cuenta' where persona='" + rfc2 + "' and fechent='" + fecha + "' and horaent='" + hora + "'";
conexion7.ExecuteUpdate(sql5);
} else if (usuario != usuario2) {
//agragando a la tabla visitas en el campo operacion que el usuario fue cambiado
String sql6 = "update visitas set operacion='cambio el usuario:" + usuario2 + " por " + usuario + " de su cuenta' where persona='" + rfc2 + "' and fechent='" + fecha + "' and horaent='" + hora + "'";
conexion7.ExecuteUpdate(sql6);
} else if (psw != psw2) {
//agragando a la tabla visitas en el campo operacion que el psw fue cambiado
String sql7 = "update visitas set operacion='cambio el password:" + psw2 + " por " + psw + " de su cuenta' where persona='" + rfc2 + "' and fechent='" + fecha + "' and horaent='" + hora + "'";
conexion7.ExecuteUpdate(sql7);
}
compañero en java para comparar cadenas no se usa el signo = ni diferente que !=
Eliminarpara comparar cadenas que si importe que lleve mayusculas usas el metodo de la clase String equal().
String h1 = "hola";
String h2 = "HoLa";
if(h1.equals(h2)){
System.out.println("son iguales");
}else{
System.out.println(" no son iguales");
}
la salida sera no son iguales xq hola no es igual a HoLa.
si quieres comparar sin importar que esten en mayusculas sino por el contenido de la cadena se usa equalsIgnoreCase
String h1 = "hola";
String h2 = "HoLa";
if(h1.equalsIgnoreCase(h2)){
System.out.println("son iguales");
}else{
System.out.println(" no son iguales");
}
aca la salida sera son iguales esa es la solucion al problema que tienes.
ok. muchas gracias y si tenias razón de esa manera funciono bien, muchas gracias por responder.
ResponderEliminardisculpa me gustaria saber si hay alguna forma mas facil de aser las combinaciones por decir si tengo 7 valores ejemplo: a,b,c,d,e,f y g.
ResponderEliminarlas combinaciones con las letras a serian de 30 por decir no y asi para las demás letras en toces en el código por con secuencia tendría que usar muchas if y else y seria muy tedioso programar cada una de las combinaciones no crees por ese me gustaría saber si hay alguna mas fácil de aser eso ojala me entiendas lo que trato de explicar.
codigo hecho no tengo pero para esto puedes ayudarte de alguna formula matematica para obtener las combinaciones posibles y aplicarlo en java.
EliminarCorrigiendo lo anterior las combinaciones es el numero posible por ejemplo de 5 numeros hay 120 combinaciones si no estoy equivocado.
Eliminarlo que necesitas hacer es una clase que permute buscando en internet encontre un pedazo de codigo que te puede ayudar hace uso de una LinkedList, lo que permite que se agreguen o eliminen elementos en la lista al inicio o al final.
Y el metodo lo hace recursivamente hasta llegar al final de las combinaciones chekeate el codigo ojala solucione tu problema.
import java.util.LinkedList;
public class NewClass1 {
public static void main(String[] arg) {
LinkedList conjunto =new LinkedList();
conjunto.add('a');
conjunto.add('b');
conjunto.add('c');
conjunto.add('d');
conjunto.add('e');
conjunto.add('f');
conjunto.add('g');
Permuta ("", conjunto);
}
public static void Permuta(String a, LinkedList conjunto) {
if (conjunto.size()==1) {
System.out.println(a+conjunto.get(0));
}
for (int i=0;i<conjunto.size();i++) {
Character b = conjunto.remove(i);
Permuta (a+b, conjunto);
conjunto.add(i,b);
}
}
}
ok gracias lo revisare, veré si lo puede adaptar a lo que necesito y te agradezco mucho el interés.
ResponderEliminarGracias es de mucha ayuda
ResponderEliminarMuchas gracias, me sirvió al 100%
ResponderEliminarGracias por el ejemplo ta buenazo....................gracias :)
ResponderEliminarmuchas grasias
ResponderEliminarGracias amigos
ResponderEliminareres muy bueno felicidades.
Claro que si, like
ResponderEliminar