Olá pessoal tenho uma aplicação web com banco mysql usando jstl e servlet uso netbeans, quando estou logado no sistema e clico no botão F5 não atualiza a própria página e sim volta para a tela do login como se eu tivesse feito logout. Não sei onde posso resolver isso.
Desde já agradeço;
Guinter
Agosto 28, 2009, 10:09am
#2
Pessoal em cada página jsp eu verifico o login e senha do usuário, quando dou um F5 ele mata a minha sessão? eu quero que fique na mesma página e não que volte para a tela do login. Tem alguma regra, filtro?
Guinter
Agosto 28, 2009, 10:49am
#3
esta é a minha página de usuario.jsp
<%@ include file="verifica_acesso.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>JSP Page</title>
</head>
<%@ include file="verifica_acesso.jsp" %>
<script language="javascript" type="text/javascript">
function validarCampos(){
var i;
var total=document.getElementById("frm_usuario");
for(i=0;i<total.elements.length;i++){
if(total.elements[i].value==0){
alert("Campo em branco!");
total.elements[i].focus();
return false;
break;
}
}
}
function SomenteNumero(e){
var tecla=(window.event)?event.keyCode:e.which;
if((tecla > 47 && tecla < 58)) return true;
else{
if (tecla !=9) return false;
else return true;
}
}
</script>
<body>
<h3>Cadastro de Usuários</h3>
<form name="frm_usuario" id="frm_usuario" method="post" action="UsuarioServlet">
<table>
<tr>
<td>Nome:</td><td><input type="text" name="nome_usuario" id="nome_usuario" maxlength="40" size="50"></td>
</tr>
<tr>
<td>Matrícula:</td><td><input type="text" name="matricula" id="matricula" maxlength="8" onkeypress="return SomenteNumero(event)"></td>
</tr>
<tr>
<td>Senha:</td><td><input type="password" name="senha_usuario" maxlength="8"></td>
</tr>
<tr>
<td>Acesso:</td><td><select id="acesso_usuario" name="acesso_usuario">
<option>- Selecione -</option>
<option value="Administrador">Administrador</option>
<option value="Usuário">Usuário</option>
</select></td>
</tr>
</table>
<br>
<input type="submit" id="acao" name="acao" value="Salvar" onclick="return validarCampos()">
<input type="submit" id="acao" name="acao" value="Listar">
</form>
</body>
</html>
Tô achando que tem algo a ver com aquele teu include ali:
<%@ include file="verifica_acesso.jsp"%>
queres postar ele pra gente?
Update: aliás, pq ele tá declarado duas vezes?
Guinter
Agosto 28, 2009, 12:10pm
#5
Na verdade eu errei ao postar ele, esta só uma vez declarado, segue o meu include:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<c:choose>
<c:when test="${acesso eq 'Usuario'}">
<%request.getRequestDispatcher("principal.jsp").forward(request, response);
String alerta = new String();
alerta = "Você não tem direitos de Administrador!";
session.setAttribute("alerta", alerta);
%>
</c:when>
<c:when test="${acesso eq null}">
<%request.getRequestDispatcher("login.jsp").forward(request, response);%>
</c:when>
</c:choose>
aleck
Agosto 28, 2009, 12:27pm
#6
Se vc possuir algum tipo de servlet é provavel que o “problema” esteja lá.
Sim tenho…segue a servlet do usuário:
public class UsuarioServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String acao = request.getParameter("acao");
String id = request.getParameter("idusuario");
UsuarioBean usuario = new UsuarioBean();
UsuarioBD usuarioBD = new UsuarioBD();
String alerta = new String();
if (acao.equals("Salvar Edicao")) {
String id_usu = request.getParameter("id");
ArrayList<UsuarioBean> lista = new ArrayList<UsuarioBean>();
lista = (ArrayList<UsuarioBean>) usuarioBD.listaUsuario();
for (UsuarioBean usu : lista) {
if (usu.getId_usuario() == Integer.parseInt(id_usu)) {
String nome_usuario = (String) request.getParameter("nome_usuario");
String matricula = (String) request.getParameter("matricula");
String senha_usuario = (String) request.getParameter("senha_usuario");
String acesso = (String) request.getParameter("acesso_usuario");
usu.setNome_usuario(nome_usuario);
usu.setMatricula(matricula);
usu.setSenha_usuario(senha_usuario);
usu.setAcesso_usuario(acesso);
boolean ret = usuarioBD.alteraUsuario(usu);
}
}
}
if (acao.equals("Salvar")) {
String nome_usuario = (String) request.getParameter("nome_usuario");
String matricula = (String) request.getParameter("matricula");
String senha_usuario = (String) request.getParameter("senha_usuario");
String acesso = (String) request.getParameter("acesso_usuario");
usuario.setNome_usuario(nome_usuario);
usuario.setMatricula(matricula);
usuario.setSenha_usuario(senha_usuario);
usuario.setAcesso_usuario(acesso);
ArrayList<UsuarioBean> verifica = new ArrayList<UsuarioBean>();
verifica = (ArrayList<UsuarioBean>) usuarioBD.listaUsuario();
for (UsuarioBean usuarioBean : verifica) {
if (usuarioBean.getMatricula().equals(matricula)) {
alerta = "Matr�cula j� Cadastrada tente outra matr�cula!";
request.getSession().setAttribute("alerta", alerta);
request.getRequestDispatcher("principal.jsp").forward(request, response);
}
}
if (alerta.equals("")) {
usuarioBD.insereUsuario(usuario);
request.getRequestDispatcher("usuario.jsp").forward(request, response);
}
} else if (acao.equals("Listar")) {
ArrayList<UsuarioBean> listusu = new ArrayList<UsuarioBean>();
listusu = (ArrayList<UsuarioBean>) usuarioBD.listaUsuario();
request.setAttribute("lista_usuario", listusu);
request.getRequestDispatcher("lista_usuario.jsp").forward(request, response);
} else if (acao.equals("Editar")) {
ArrayList<UsuarioBean> edita = new ArrayList<UsuarioBean>();
edita = (ArrayList<UsuarioBean>) usuarioBD.listaUsuario();
for (UsuarioBean editausu : edita) {
if (editausu.getId_usuario() == Integer.parseInt(id)) {
request.setAttribute("edita", editausu);
request.getRequestDispatcher("editar_usuario.jsp").forward(request, response);
}
}
} else if (acao.equals("Excluir")) {
ArrayList<UsuarioBean> lista = new ArrayList<UsuarioBean>();
lista = (ArrayList<UsuarioBean>) usuarioBD.listaUsuario();
for (UsuarioBean usu : lista) {
if (usu.getId_usuario() == Integer.parseInt(id)) {
usuarioBD.deletaUsuario(usu);
}
}
}
} finally {
out.close();
}
}
Já tentou usando empty?
test="${empty acesso}"
dentro do when, entendeu?
Qualquer coisa, avisa
Mudei o código que me falou para
<c:when test="${empty acesso}">
mas quando dou F5 volta volta igual para login.
aleck
Agosto 28, 2009, 2:32pm
#10
O unico local que faz redirect para o login.jsp é o verifica_acesso.jsp, então esta sempre entrando no código abaixo:
<c:when test="${acesso eq null}">
<%request.getRequestDispatcher("login.jsp").forward(request, response);%>
</c:when>
Verifique se a propriedade está sendo colocada na sessão ou request, para testar, remova o código do include e coloque na pagina principal, após isto, coloque um input text com o value apontando para a variavel “acesso”, verá que ela está nula.
Guinter
Agosto 28, 2009, 2:46pm
#11
Fiz o teste e o valor acesso vem correto no meu caso vem como Administrador, pois o login foi feito com tal usuário. Mas mesmo retirando o include de validação da página usuario.jsp se der um F5 volta para o login.
Guinter
Agosto 28, 2009, 2:56pm
#12
Pessoal junto com as respostas de vocês acabei vendo um detalhe que acho ser o problema pois as jsp eu mostro sempre dentro de iframe ou seja sempre dentro da minha página index, então imaginei quando dou um F5 eu atualizo a index inteira e não a página que esta no iframe.
Vou colocar o código da index pra vocês verem e dar uma ajuda nisso.
<html>
<head>
<link rel="stylesheet" type="text/css" href="CSS/style.css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ENQUETE</title>
</head>
<body>
<h3 align="center"><font color="red">WEB ENQUETE</font></h3>
<div id="menu">
<ul>
<li><a href="usuario.jsp" target="login">Usuário</a></li>
<li><a href="curso.jsp" target="login">Curso</a></li>
<li><a href="DisciplinaServlet" target="login">Disciplina</a></li>
<li><a href="EnqueteServlet" target="login">Enquete</a></li>
<li><a href="login.jsp" target="login">Logoff</a></li>
</ul>
</div>
<iframe name="login" src="login.jsp" marginheight="150" marginwidth="20" width="100%" height="600" frameborder="0" scrolling="yes"></iframe>
</body>
</html>
Guinter
Agosto 28, 2009, 3:03pm
#13
Como faço então para que o F5 só atualiza o iframe e não a index inteira?
Grato.
Tinha postado código errado aqui, desculpa.
Guinter
Agosto 28, 2009, 3:22pm
#15
Bem capaz leoramos tuda a ajuda é bem vinda e com a respostas de vcs eu acabei em tocando nisso grato por enquanto.
Creio que um javascript com keyevent, mas não dá pra garantir o funcionamento no IE…