Porque se pierde la sesión?
Publicado por flor (1 intervención) el 13/08/2009 19:13:43
Hola,
Estoy liada con un proyecto en JSP y las sesiones a ver si me podeis ayudar.
Tengo el siguiente archivo:
esqueindex.jsp (llamado así porque contiene el esqueleto del sitio web). Este archivo si existe una sesión muestra en la capa "sesion" un mensaje de bienvenida y si no muestra en la misma capa dos campos usuario y contraseña para identificarse.
Os muestro parte del código de esqueindex.jsp:
<%@ page language="java" import="bd.*" %>
<%
HttpSession sesion=request.getSession(true);
Usuario usuario=(Usuario)sesion.getAttribute("usuario");
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<body onload="obtenerid('contenedor_menu')">
las 4 lineas siguientes son solo para depurar:
<script language="javascript">
if (<%=usuario%>==null)
alert ("usuario nulo");
</script>
<% if (usuario == null) {
%>
<div id="sesion">
<form id="formu" name="formu" method="post" action="login/comprobarUsuario.jsp">
<label><span class="navText">
usuario:
</span> <input name="usuario" type="text" id="usuario" size="8" maxlength="8" />
</label>
<label><span class="navText">password:</span>
<input name="password" type="password" id="password" size="8" maxlength="4" />
</label>
<input name="enviar" type="submit" class="navText" id="enviar" onclick="valida_formu();return document.valorRetorno" value="Enviar" />
</form>
</div>
<div class="pageName" id="centro"></div>
<% }
else { %>
<div id="sesion">
<form id="formu" name="formu" method="post" action="javascript:<% session.invalidate(); %>;window.location='index.jsp'">
<label><span class="navText">
Bienvenido, <%= usuario.getNombre() %></span></label>
<input name="logout" type="submit" class="bodyText" id="logout" value="Terminar Sesión" />
</form>
</div>
<div class="pageName" id="centro">
<br>
<blockquote>
<p>Administrar opciones</p>
<p> </p>
<% if (usuario.getPerfil().equals("admin")) { %>
<p><a href="#" onclick="llamarasincrono('gestionusuario/index.jsp', 'centro')">Gestionar Usuarios</a></p>
<% } %>
<p> </p>
<p><a href="#" onclick="llamarasincrono('gestionoferta/index.jsp', 'centro')">Gestionar Ofertas</a> </p>
<blockquote>
</div>
<% }%>
El archivo esqueindex.jsp contiene una capa donde van los campos de usuario y contraseña que al ser introducidos redirecciona a una página "comprobarusuario.jsp" que contiene el siguiente código:
<%@page contentType="text/html; charset=ISO-8859-15"%>
<%@page pageEncoding="UTF-8"%>
<%@ page language="java" import="bd.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
String nombrebuscado=request.getParameter("usuario");
String passbuscada=request.getParameter("password");
if(nombrebuscado==null) return;
if(passbuscada==null) return;
BaseDatos bd=new BaseDatos();
Usuario usuario=bd.getUsuarioPass(nombrebuscado,passbuscada);
bd.close();
//if (usuario != null)
HttpSession sesion=request.getSession(true);
sesion.setAttribute("usuario", usuario);
%>
<html>
<head>
<title>Demo </title>
</head>
<body>
<br>
<%
//Comprobar usuario
if (usuario== null) {
%>
<script language="javascript">
alert("Error usuario o contraseña no válidos");
window.location="../index.jsp";
</script>
<%
return;}
else {// Gestionar contenidos y usuarios
%>
<script language="javascript">
window.location="../index.jsp?id=<%= usuario.getId() %>&nombre=<%=usuario.getNombre()%>&perfil=<%=usuario.getPerfil()%>";
</script>
<% } %>
</body>
</html>
Dentro del archivo esqueindex.jsp está el menú de la web, algo como:
<div id="menu">
<div id="contenedor_menu" style="width:130px;">
<!-- inicio menu 1-->
<div class="principal" > <a href="#" onclick="ir('index.jsp')">Principal </a></div>
<div id="uno" style="display:none;">
</div>
<!--fin menu 1-->
<!--inicio menu 2-->
<div class="principal" onclick="mostrar('dos')">Catálogo</div>
<div id="dos" style="display:none;">
</div>
Mi problema es que al pinchar en el elemento "Principal" del menú, el cual redirecciona a la página index.jsp, se pierde la sesión y la página index.jsp se muestra sin los datos de sesión.
Esta página index.jsp lo único que contiene es:
<jsp:include page="esqueindex.jsp" />
<html>
<body></body></html>
Estoy liada con un proyecto en JSP y las sesiones a ver si me podeis ayudar.
Tengo el siguiente archivo:
esqueindex.jsp (llamado así porque contiene el esqueleto del sitio web). Este archivo si existe una sesión muestra en la capa "sesion" un mensaje de bienvenida y si no muestra en la misma capa dos campos usuario y contraseña para identificarse.
Os muestro parte del código de esqueindex.jsp:
<%@ page language="java" import="bd.*" %>
<%
HttpSession sesion=request.getSession(true);
Usuario usuario=(Usuario)sesion.getAttribute("usuario");
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<body onload="obtenerid('contenedor_menu')">
las 4 lineas siguientes son solo para depurar:
<script language="javascript">
if (<%=usuario%>==null)
alert ("usuario nulo");
</script>
<% if (usuario == null) {
%>
<div id="sesion">
<form id="formu" name="formu" method="post" action="login/comprobarUsuario.jsp">
<label><span class="navText">
usuario:
</span> <input name="usuario" type="text" id="usuario" size="8" maxlength="8" />
</label>
<label><span class="navText">password:</span>
<input name="password" type="password" id="password" size="8" maxlength="4" />
</label>
<input name="enviar" type="submit" class="navText" id="enviar" onclick="valida_formu();return document.valorRetorno" value="Enviar" />
</form>
</div>
<div class="pageName" id="centro"></div>
<% }
else { %>
<div id="sesion">
<form id="formu" name="formu" method="post" action="javascript:<% session.invalidate(); %>;window.location='index.jsp'">
<label><span class="navText">
Bienvenido, <%= usuario.getNombre() %></span></label>
<input name="logout" type="submit" class="bodyText" id="logout" value="Terminar Sesión" />
</form>
</div>
<div class="pageName" id="centro">
<br>
<blockquote>
<p>Administrar opciones</p>
<p> </p>
<% if (usuario.getPerfil().equals("admin")) { %>
<p><a href="#" onclick="llamarasincrono('gestionusuario/index.jsp', 'centro')">Gestionar Usuarios</a></p>
<% } %>
<p> </p>
<p><a href="#" onclick="llamarasincrono('gestionoferta/index.jsp', 'centro')">Gestionar Ofertas</a> </p>
<blockquote>
</div>
<% }%>
El archivo esqueindex.jsp contiene una capa donde van los campos de usuario y contraseña que al ser introducidos redirecciona a una página "comprobarusuario.jsp" que contiene el siguiente código:
<%@page contentType="text/html; charset=ISO-8859-15"%>
<%@page pageEncoding="UTF-8"%>
<%@ page language="java" import="bd.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
String nombrebuscado=request.getParameter("usuario");
String passbuscada=request.getParameter("password");
if(nombrebuscado==null) return;
if(passbuscada==null) return;
BaseDatos bd=new BaseDatos();
Usuario usuario=bd.getUsuarioPass(nombrebuscado,passbuscada);
bd.close();
//if (usuario != null)
HttpSession sesion=request.getSession(true);
sesion.setAttribute("usuario", usuario);
%>
<html>
<head>
<title>Demo </title>
</head>
<body>
<br>
<%
//Comprobar usuario
if (usuario== null) {
%>
<script language="javascript">
alert("Error usuario o contraseña no válidos");
window.location="../index.jsp";
</script>
<%
return;}
else {// Gestionar contenidos y usuarios
%>
<script language="javascript">
window.location="../index.jsp?id=<%= usuario.getId() %>&nombre=<%=usuario.getNombre()%>&perfil=<%=usuario.getPerfil()%>";
</script>
<% } %>
</body>
</html>
Dentro del archivo esqueindex.jsp está el menú de la web, algo como:
<div id="menu">
<div id="contenedor_menu" style="width:130px;">
<!-- inicio menu 1-->
<div class="principal" > <a href="#" onclick="ir('index.jsp')">Principal </a></div>
<div id="uno" style="display:none;">
</div>
<!--fin menu 1-->
<!--inicio menu 2-->
<div class="principal" onclick="mostrar('dos')">Catálogo</div>
<div id="dos" style="display:none;">
</div>
Mi problema es que al pinchar en el elemento "Principal" del menú, el cual redirecciona a la página index.jsp, se pierde la sesión y la página index.jsp se muestra sin los datos de sesión.
Esta página index.jsp lo único que contiene es:
<jsp:include page="esqueindex.jsp" />
<html>
<body></body></html>
Valora esta pregunta


0