Está en la página 1de 7

Sesiones en JSP

Respuesta de
txerra
Cerrar
a
vladtepes
Cerrar
en
JSP
13/03/2003
09/03/2010

Usuario
Anuncios Google
Programa WebExpert Google
Formación Gratuita en AdWords
¡Consigue Clientes Hoy mismo!
Google.com/WebExpert
Hola!!!!
Estoy desarrollando un sito con tecnologia JSP, pero para accesar a este sitio es necesario un login y password; esto lo tengo en una base
de datos MySql, si puedo pasar el valor del objeto de la sesion a otra pagina, pero no se como hacer que no permita la entrada a paginas
que requieren el password (sin antes introducirlo) creo que debo usar redireccion, pero no se como, podrias explicarme con un pequeno
ejemplo como es que se redirecciona si el valor de la sesion es null
09/03/2010

Experto
Hola. Para lo que tu quieres hacer la manera más fácil es que cuando el usuario existe en la BBDD creas una variable de sesión que se
llame por ejemplo "autenticado" y que tenga el valor "true". Así:

<%//GESTION DE LA SESION
HttpSession sesion = request.getSession(true);
if (clienteRegistrado){
sesion.putValue("autenticado","true");
response.sendRedirect("paginaSiguiente.jsp");
}
%>

Vale, ahora supongamos que queremos hacer el control de la variable de sesion en la "paginaSiguiente.jsp".Lo hacemos de la siguiente
manera:

<%//GESTION DE LA SESION
HttpSession sesion = request.getSession(true);
if (sesion == null){
response.sendRedirect("paginaDeError.jsp");
}else{
if (sesion.getValue("autenticado") == null || !sesion.getValue("autenticado").equals("true")){
response.sendRedirect("paginaDeError.jsp");
}
}
%>

Bajate el Javadoc del Jsdk2.0 para que veas tanto los métodos disponibles el la clase javax.servlet.http.HttpSession como en la clase
javax.servlet.http.HttpResponse
Estoy haciendo una aplicacion JSP que
permita ingresar un usuario y contraseña?
pero no se como hacer el boton "Entrar" es decir que codigo debe llebar (el boton) para
que me verifique si los datos ingresados coinsiden con la base de datos...

gracias!

• hace 3 años
• Notificar un abuso

by Mariana Mijail
Miembro desde el

02 noviembre 2007

Puntos totales:

15.034 (Nivel 6)

• Añadir contacto
• Bloquear

Mejor respuesta - Elegida por la comunidad


Así NO lo debes hacer pero te dejo este ejmplo para que entiendas lo básico:

suponiendo que tienes funcionando MySQL,


ejecuta en la línea de comandos las siguentes instrucciones, para crear la tabla de
usuarios:

> mysql -u root -p test


mysql> CREATE TABLE usuarios (
mysql> usuario varchar(16) NOT NULL PRIMARY KEY,
mysql> contrasena varchar(16) NOT NULL,
mysql> );
mysql> insert into usuarios
mysql> set usuario='usuario1',
mysql> contrasena='password1';
mysql> insert into usuarios
mysql> set usuario='usuario2',
mysql> contrasena='password2';
mysql> exit

Después dentro de tu directorio de proyecto crea la siguiente estructura de archivos:


${directorio de tomcat} / webapps / ${tu proyecto} / WEB-INF / lib
En la carpeta lib coloca el JDBC para MySQL, es un archivo llamado mysql-connector-java-
X.X.X-bin.jar, bájalo en
http://dev.mysql.com/downloads/connector…

Ahora crea los siguientes archivos JSP de ejemplo:

----- Archivo: ${directorio de tomcat} / webapps / ${tu proyecto} / login.jsp -----


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
// Leemos la variable de sessión 'validado'
Boolean validado = (Boolean) session.getAttribute( "validado" );
// Si la variable de session 'valiadado' ya
// ha sido creada o el valor es 'true'
if( validado!=null && validado.booleanValue())
// Redireccionamos a la página bienvenido.jsp
response.sendRedirect( "bienvenido.jsp" );
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<%
// Leemos la variable de sesión 'usuario'
String usuario = (String) session.getAttribute( "usuario" );
// Si las variable de sesión 'validado'
// y 'usuario' ya habia sido creadadas
if(validado!=null && usuario!=null)
// Mostramos mensaje de advertencia
out.println("<p>Usuario o contraseña incorrectos</p>");
// Si la variable de sesión usuario
// no ha sido creada
if(usuario==null)
// Instanciamos la variable local 'usuario'
usuario = "";
// Borramos la variable de sesión 'usuario'
session.setAttribute( "usuario", null);
%>
<form method="post" action="bienvenido.jsp" name="formLogin">
<input type="text" name="usuario" value="<%=usuario%>"><br>
<input type="password" name="contrasena"><br>
<input type="submit" name="enviar" value="enviar">
</form>
</body>
</html>
---- Fin de Archivo ---

---- Archivo: ${directorio de tomcat} / webapps / ${tu proyecto} / bienvenido.jsp ---


<%@ page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
// Leemos la variable de sesión 'validado'
Boolean validado = (Boolean) session.getAttribute( "validado" );
// Si la variable de sesión 'validado' no ha
// sido creada o contiene un valor 'false'
if( validado==null || !validado.booleanValue() )
{
// Leemos la variable POST 'usuario'
String usuario= request.getParameter( "usuario" );
// Leemos la variable POST 'contrasena'
String contrasena = request.getParameter( "contrasena" );
// Si las variables POST 'usuario' y 'contrasena'
// existen y 'usuario' contiene texto
if(usuario!=null && contrasena!=null && !usuario.equals("") )
{
// Establecemos la variable de sessión 'usuario'
session.setAttribute( "usuario", usuario);
// Cargamos el Driver de MySQL
Class.forName( "com.mysql.jdbc.Driver" );
// Creamos una conección a MySQL, Sintaxis:
// jdbc:mysql://[servidor]:[puerto]/[base de datos], usuario, contraseña
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/test" , "root",
"tu_contraseña" );
// Creamos un Statement
Statement stmt = conn.createStatement();
// Cramos un Resultado de Consulta SQL
ResultSet rs = stmt.executeQuery(
"SELECT usuario FROM usuarios " +
"WHERE usuario='" + usuario + "' " +
"AND contrasena='" + contrasena + "'"
);
// Si el resultado contiene filas
if( rs.next() )
// Establecemos la variable local
// 'validado' a true
validado = new Boolean(true);
// Cerramos el Statment
stmt.close();
// Cerramos la conexión
conn.close();
}
}
// Si la variable de sesión
// 'validado' no ha sido creada
if(validado==null)
// Establecemos la variable local
// 'validado' a true
validado = new Boolean(false);
// Añadimos la variable de sesión 'validado'
// con el contenido de la variable local
session.setAttribute( "validado", validado);
// Si la variable local 'validado' es false
if( !validado.booleanValue() )
// Redireccionamos a la página login.jsp
response.sendRedirect( "login.jsp" );
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Bienvenido</title></head>
<body>Bienvenido</body>
</html>

--- Fin de Archivo ---

Listo echa a andar tomcat y dirígete en el navegador a


http://localhost:8080/${tu proyecto} /login.jsp

• hace 3 años
• Notificar un abuso
67% 2 votos
¿No es lo que buscabas? Intenta con Yahoo! Search
Principio del formulario
ans_qp_1

Buscar en Yahoo! Buscar

Final del formulario

Búsquedas relacionadas:
• 0 minutos
• 0 principales

Pool
hola muy bueno tu ejemplo. sabes quisiera saber como podrías implementar perfiles
suponiendo que tienes un campo mas en la tabla cod_acc ej: usuarios con codigo 1 seran
administradores y con codigo 2 seran clientes es obio que este codigo hara que se
redireccionen a distintas paginas
gracias

Notifica un abuso

luis manuel

estoy en busca de un ejemplo parecido..para cargar diferentes paginas dependiendo si es


admon cliente ,etc

Notifica un abuso
* Tienes que estar registrado para poder añadir comentarios. Entra o regístrate.
Otras respuestas (1)

• by Betux
Miembro desde el
21 febrero 2008

Puntos totales:

2.352 (Nivel 3)

○ Añadir contacto
○ Bloquear
Hola deberias hacer un jsp que tenga el formulario html en el que pides la
contraseña y el usuario.
Tendrias otro jsp en el que validarias los datos ingresados, deberias usar beans,
por ejemplo un bean BaseBD (que se conecte a la base de datos y tenga un
metodo que devuelva un boolean, de acuerdo a los parametros ingresados
(nombre y clave)) de acuerdo a eso mostrarias un mensaje de error en la pagina o
las acciones disponibles

La pagina jsp de inicio basicamente lo mas importante seria esto:


...
< % if(request.getParemeter("usuario")!=null &&(request.getParemeter("clave")!
=null){ %>

<!-- formulario html-->


<%} else { %>
<jsp:forward page="validacion.jsp"/>
<%} %>
.....

Ahora en validacion.jsp harias algo asi:

agregas la directiva arriba (BeanDatos seria la clase que se conecta a la basede


datos y tiene metodos utiles)
...
<jsp:useBean id="datos" scope="request" class="beans.BeanDatos" />
en el body ...
<% String usuario = request.getParameter("usuario");
String id=request.getParemeter("clave");
boolean b = datos.validarUsuario(usuario,id);
if (b==true){
out.println(Logueo con exito)
}
else { %>
Loguearse de nuevo <a href="inicio.jsp">
<% } % >

Bueno esta es la idea.. cualquier cosa si te puedo ayudar...mandame msj.. Exitos y


saludos!
○ hace 3 años
○ Notificar un abuso