Con JSP podemos crear aplicaciones web que se ejecuten en variados servidores web, de múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Las páginas JSP están compuestas de código HTML/XML mezclado con etiquetas especiales para programar scripts de servidor en sintaxis Java. Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML habitual.
En nuestro primer ejemplo de introduccion a JSP realizaremos un login o ingreso sin utilizar ningun motor de base de datos, la validación se realizara mediante un HashMap de usuario/login y contraseñas serán agregados manualmente, la estructura que crearemos es simple tendremos una pagina de inicio llamada login.jsp la cual se preguntara por un usuario y contraseña se validara el contenido de los campos antes de pasar al servlet mediante javascript estos campos estarán formateados mediante estilos css, el servlet que validara el ingreso se llamara check.java.
Si el usuario es valido check.java redireccionara a una pagina llama welcome.jsp la cual mostrara los datos de session que fueron almacenados y esta jsp tendra un hipervinculo que ejecutara un servlet para finalizar la session el cual se llamara logout.java, se tendrán en cuenta los permisos de usuario, de manera que si no se ha iniciado alguna session este usuario invitado no tenga acceso a la pagina welcome.jsp.
Estructura de Archivos
Esta es la estructura de archivos que tendrá nuestro proyecto para realizar el ingreso o login de usuarios sin conexión a base de datos.
A continuación veremos el contenido del archivo web.xml.
web.xml
check check logout logout check /check logout /logout
En este archivo se registra la existencia de 2 servlets y una navegación que se utilizara para pasar de login.jsp a welcome.jsp, ahora veremos el código contenido en el archivo login.jsp y check.java lo cuales son los encargados de la vista para el inicio de usuarios y controlar las validación de los mismos.
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function validar(form){
var form = document.getElementById('formLogin');
var login = form.login;
var pass = form.pass;
if(login.value != '' && pass.value != ''){
form.submit();
return true;
}
alert('Por favor ingrese usuario o contraseña');
return false;
}
</script>
<style type="text/css">
body{
font-family: Verdana;
padding: 25% 50% 25% 50%;
border: thin solid #ccc;
}
.login{
}
table{
border: thin solid #ccc;
}
table tr:first-child{
background-color: blue;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div class="login">
<div id="flash">
<%
if(session.getAttribute("login") != null && !session.getAttribute("login").equals("")){
response.sendRedirect("welcome.jsp");
}
%>
</div>
<form id="formLogin" action="check" method="POST">
<table>
<tr>
<td colspan="2">Ingreso</td>
</tr>
<tr>
<td>Login:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td><input type="button" value="Ingresar" onclick="validar();"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
check.java
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class check extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String login = req.getParameter("login");
String pass = req.getParameter("pass");
HashMap users = new HashMap();
users.put("user1", "1234");
users.put("user2", "1234");
users.put("admin", "admin");
if (users.containsKey(login)) {
String tmpPass = users.get(login);
if (pass.equals(tmpPass)) {
HttpSession session = req.getSession(true);
session.setAttribute("login", login);
res.sendRedirect("./welcome.jsp");
} else {
res.sendRedirect("./login.jsp");
}
} else {
res.sendRedirect("./login.jsp");
}
}
}
Finalmente visualizaremos el código fuente de los archivos welcome.jsp y logout.java este ultimo es el que finalizara la session iniciada por el usuario en curso.
welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'welcome.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
body{
position: absolute;
padding-left: 25%;
padding-right: 25%;
}
#page{
border: thin solid black;
width: 850px;
}
#header {
border: thin solid #ccc;
height: 200px;
width: 100%;
}
#main {
border: thin solid #ccc;
height: 400px;
width: 100%;
}
#left {
border: thin solid #ccc;
height: 400px;
width: 200px;
float: left;
}
#center {
border: thin solid #ccc;
height: 400px;
width: 640px;
float: left;
}
#bottom {
border: thin solid #ccc;
height: 100px;
width: 100%;
}
</style>
</head>
<body>
<div id="page">
<div id="header">
Bienvenido
<%=session.getAttribute("login")%>
<%
if (session.getAttribute("login") != null
&& !session.getAttribute("login").equals("")) {
} else {
response.sendRedirect("login.jsp");
}
%>
<a href="logout">Logout</a>
</div>
<div id="main">
<div id="left">
Pagina Left
</div>
<div id="center">
Pagina center
</div>
</div>
<div id="bottom">
Pie de pagina
</div>
</div>
</body>
</html>
logout.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class logout extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session = req.getSession();
session.invalidate();
resp.sendRedirect("login.jsp");
}
}
Espero que sea de utilidad este ejemplo de ingreso de usuarios para la compresión rápida de la funcionalidad de la programación en JSP.

Hola,estoy haciendo algo parecido. He hecho un formulario en el que subo al datastore de APPGENGINE los datos y a partir de los datos registrados tengo una página de registro en la que dependiendo del usuario te redirige a una página u otra pero no me funciona bien. ¿Tienes algo parecido?
ResponderEliminarEn el momento pero me interesa el tema cuando consulte sobre el tema te escribio y lo público en otra entrada. Saludos.
EliminarExcelente, seguiria la pie de la letra tu tutorial pero lo necesito un logueo con base de datos, sesiones y encriptar los datos enviados en el cliente
ResponderEliminarEsta sera mi proxima entrada puedes estar pendiente. Saludos.
EliminarDisculpa, la imagen de la estructura del proyecto no se ve, y no puedo lograr que funcione, soy nuevo en esto, ¿ cres que puedas subir la imagen nueva mente?
ResponderEliminargracias
En check.java me sale un error??
ResponderEliminarif (users.containsKey(login)) {
String tmpPass = users.get(login);
type mismatch: cannot conver from object to string
Podrias indicarme por por favor?
Este comentario ha sido eliminado por el autor.
ResponderEliminartengo problemas con un metodo de comprobacion de usuario
ResponderEliminar