Вы находитесь на странице: 1из 8

FICN

Facultad de Ingeniería
y Ciencias Naturales

Sesiones y Permisos Facultad de Ingeniería y Ciencias Naturales


Ingeniería en Sistemas Computacionales
Desarrollo del Software I Guía 7
Instructor: Ing. David Gildardo Rajo Castellanos
davidraxo@gmail.com (consultas)
drajo@usonsonate.edu.sv (tareas)

 Implementar la lógica de negocio en programas de inicio de sesión


 Crear una estructura de datos que permita administrar usuarios.
 Establecer opciones con permisos para usuarios de la aplicación

El desarrollo de aplicaciones requiere que se dedique tiempo para el manejo de usuarios y permisos
que estos tendrán con respecto a las operaciones que el sistema ejecutará. De manera que los
accesos se manejen en función de perfiles previamente definidos por el administrador de la
aplicación. Esto se traduce en la creación de tablas dentro de la base de datos que almacenaran
información sobre los usuarios, grupos de usuarios, opciones del menú y permisos que los usuarios
tendrán con respecto a las opciones.

Por otro lado el manejo de las operaciones con la base de datos (Lógica de Negocio), debe
estructurarse de manera que satisfaga las exigencias de los procesos.

Nota: para continuar deberá estar la base de datos aerolínea


proporcionada. Y el proyecto llamado AerolineaProject, el mismo creado
en la guía anterior con las clases funcionando.

Guía 7 1
FICN
Facultad de Ingeniería
y Ciencias Naturales

Preparando el proyecto.
Se creara dos carpetas en Web Pages para agregar los recursos proporcionados para el estilo de la
página.

En la ventana que aparece clic en otros y buscar Folder.

Guía 7 2
FICN
Facultad de Ingeniería
y Ciencias Naturales

Las dos carpetas a crear serán css y otra llamada iconos en las cuales agregaremos los archivos
proporcionados en la carpeta correspondiente.

Página Inicio. Index.jsp


Cuando se crea un sitio web la primera página que se muestra, por lo general, es la llamada Index sin
importar la extensión que esta tenga. En el caso de nuestro proyecto deberá tener la extensión jsp
por que tendrá incluido en el lenguaje HTML un poco de JSP.

Entre las etiquetas <head></head> incluir y modificar lo siguiente:

<title>Aerolinea Project</title>
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/main.css"
media="screen" />
<style type="text/css">
.login {margin: 0 auto}
.login td{padding:5px 0px}
#header >h1{margin-left: 0px;padding-top: 110px;}
#content >h1{text-align: center}
</style>
Esto nos servirá para el estilo incluido a la página.

El código para el cuerpo de la página mostrará únicamente el formulario de validación y enviará en la


por medio del método POST a la página login.jsp

<div id="header">
<h1>Aerolínea DSi</h1>
</div>

<div id="content">
<hr/>
<h1>Inicio de Sesión</h1><br/>
<form name="main" action="login.jsp" method="POST">
<table class="login">
<tr><td>Usuario</td></tr>
<tr><td><input type="text" name="txtUsuario"
size="30px"/></td></tr>
<tr><td>Contraseña</td></tr>
<tr><td><input type="password" name="txtClave"
size="30px"/></td></tr>
<tr><td>
<div class="buttons">
<ul>
<li><input type="submit" value="Entrar"
name="btnEntrar"/></li>
</ul>
</div>
</td></tr>
</table>
</form>
<br/><br/><br/><br/>
Guía 7 3
FICN
Facultad de Ingeniería
y Ciencias Naturales

<hr/>
</div>

Para el manejo de errores devueltos ya sea por error de conexión o usuario y contraseña incorrecta
agregaremos el código jsp en la posición en la que queramos mostrar el mensaje de error para este
caso la incluiremos antes del formulario:

<%
String Mensaje[] = new String[3];
Mensaje[0] = "Ha introducido usuario o contraseña Incorrecta!!!<br>";
Mensaje[1] = "Ha ocurrido un error en la conexion, Intente de nuevo<br>";
String Error = request.getParameter("error");

if (Error!=null)
out.println("<center><font color='red'
size='2'>"+Mensaje[Integer.parseInt(Error)]+"</font><br></center><br>");
%>

Este código manejará el error enviado por el método post de la variable llamada error, si es 0 usuario
o contraseña incorrecta si es 1 error de conexión.

login.jsp
Ya creada la página de inicio crearemos la página que se encargará de verificar el usuario y contraseña
son correctos y se encuentra en la base de datos y se encargará de enlazar a la página
correspondiente en caso que se necesite manejar más de un tipo de usuario.

Creamos un archivo llamado login.jsp y agregamos el código:

<%@page import="com.aerolinea.entidades.Entidad"%>
<%@page import="com.aerolinea.entidades.Usuarios"%>
<%@page import="com.aerolinea.procesos.Operaciones"%>
<%@page import="java.util.HashMap"%>
<%@page import="com.aerolinea.procesos.ConexionPool"%>
<%@page import="com.aerolinea.procesos.Conexion"%>
<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>
<%
String usuario = request.getParameter("txtUsuario");
String clave = request.getParameter("txtClave");
if (usuario==null)
usuario = "";
if (clave==null)
clave = "";
Conexion conn = new ConexionPool();
Operaciones.setConexion(conn);
if (conn == null){
response.sendRedirect("index.jsp?error=1");
}
else

Guía 7 4
FICN
Facultad de Ingeniería
y Ciencias Naturales

{
HttpSession sesion = request.getSession();
HashMap<String, String> hpUsuario = new HashMap();
hpUsuario = Operaciones.getRegistro(new Usuarios(), usuario);
if (hpUsuario.get("idusuario")!=null){
out.println(hpUsuario.get("clave"));
out.println(Entidad.getHash(clave));
if (hpUsuario.get("clave").equals(Entidad.getHash(clave))){
sesion.setAttribute("Usuario",hpUsuario.get("idusuario"));
sesion.setAttribute("Nombre",hpUsuario.get("nombres")+" "+
hpUsuario.get("apellidos"));
sesion.setAttribute("Rol",hpUsuario.get("idrol"));
response.sendRedirect("principal.jsp");
}else{
response.sendRedirect("index.jsp?error=0");
}
}
else
{
response.sendRedirect("index.jsp?error=0");
}
}
%>

Página principal
La página principal estará diseñada, para reutilizar, por una página llamada _top.jsp y _down.jsp que
tendrán el código de Encabezado y menú, y el pie de página respectivamente. Y un archivo llamado
principal.jsp que se encargará de incluir los dos archivos.

Código _top.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>


<% HttpSession sesion = request.getSession(); %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Aerolinea Project</title>
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/main.css"
media="screen" />
</head>
<body>
<div id="header">
<h1>Aerolínea DSi</h1><br/>
<h2>A Example Project for Learning</h2>
<img src="iconos/logo.png" />
</div>
<div id="sesion">
<h2>Usuario: <%= sesion.getAttribute("Nombre") %>
<strong>[<%= sesion.getAttribute("Usuario") %>]</strong> |

Guía 7 5
FICN
Facultad de Ingeniería
y Ciencias Naturales

<a href="logout.jsp">Cerrar Sesión</a>


</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="personas.jsp">Usuarios</a></li>
<li><a href="#">Aeropuertos</a></li>
<li><a href="#">Aviones</a></li>
<li><a href="#">Vuelos</a></li>
<li><a href="#">Paises</a></li>
<li><a href="#">Roles</a></li>
</ul>
</div>
<div id="content">

Código _down.jsp

</div>
<div id="footer">
<hr/>
<br/>
<p>
<a href="">Home</a> |
<a href="">Usuarios</a> |
<a href="">Aeropuertos</a> |
<a href="">Aviones</a> |
<a href="">Paises</a> |
<a href="">Roles</a> |
<a href="">Vuelos</a>
</p>
<br/>
<p>&copy; Copyright 2014 | Design by: | Developed by: </p>
</div>
</body>
</html>

Código principal.jsp

<%@include file="_top.jsp" %>


<h1>Titulo Pagina</h1>
<p>Contenido de la pagina</p>
<%@include file="_down.jsp" %>

logout.jsp
Esta página se encargará de cerrar la sesión cuando el usuario así lo desea.

<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>


<%
Guía 7 6
FICN
Facultad de Ingeniería
y Ciencias Naturales

HttpSession sesion = request.getSession();


sesion.removeAttribute("Usuario");
sesion.removeAttribute("Nombre");
sesion.removeAttribute("Rol");
sesion.invalidate();
response.sendRedirect("index.jsp");
%>

Una vez creados los elementos anteriores verificar el funcionamiento, para ello recordad el código de
la guía anterior en la que se encontraba el uso de las clases que se crearon.

“Para comenzar a utilizar las clases creadas se debe incluir a la página los paquetes que contienen las
clases generadas.”

<%@page import="com.aerolinea.procesos.*"%>
<%@page import="com.aerolinea.entidades.*"%>

En la parte que deseamos insertar los datos agregamos el código:

<%
Conexion cn = new ConexionPool();
cn.conectar();

if (cn.getConexion()==null)
out.println("not Ok");
Al ejecutar esta página se
else
out.println("Ok<br><br>"); crea un usuario llamado
usuario1

Usuarios u = new Usuarios("usuario1",


"user1",
Rol 1 Usuario "lopez",
"@", "2451", Y la contraseña es user estos
Rol 2 Administrador Usuarios.getHash("user"), son los que utilizaremos para
2,
503); acceder

Paises p= new Paises("Guatemala");

Conexion conexion = new ConexionPool();

Operaciones.setConexion(conexion);

int r = Operaciones.insertar(u);
out.println(r);
int re = Operaciones.actualizar(p, "504");
out.println(re);
%>

Guía 7 7
FICN
Facultad de Ingeniería
y Ciencias Naturales

Si se desea crear un usuario y contraseña diferente modificar esos datos y volver a ejecutar la página
para agregarlos.

1. Crear el formulario para el registro del usuario sólo permitirá registrar usuarios con rol
1 (usuario).
2. Crear una segunda página _top(_top2) la cual deberá tener el menú para los usuarios
(solamente Aeropuertos, Vuelos, Países) y validar la página principal que muestre el
menú correspondiente para el tipo de rol del usuario agregado.
3. Validar la página principal para que al cerrar la sesión o al no estar logeado no permita
mostrarla así mismo al querer ir hacia atrás no muestre la página, sino la de validación.

Guía 7 8