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.
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
esta é a minha página de usuario.jsp
<%@includefile="verifica_acesso.jsp"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>JSP Page</title></head><%@includefile="verifica_acesso.jsp"%><scriptlanguage="javascript"type="text/javascript">functionvalidarCampos(){vari;vartotal=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();returnfalse;break;}}}functionSomenteNumero(e){vartecla=(window.event)?event.keyCode:e.which;if((tecla>47&&tecla<58))returntrue;else{if(tecla!=9)returnfalse;elsereturntrue;}}</script><body><h3>Cadastro de Usuários</h3><formname="frm_usuario"id="frm_usuario"method="post"action="UsuarioServlet"><table><tr><td>Nome:</td><td><inputtype="text"name="nome_usuario"id="nome_usuario"maxlength="40"size="50"></td></tr><tr><td>Matrícula:</td><td><inputtype="text"name="matricula"id="matricula"maxlength="8"onkeypress="return SomenteNumero(event)"></td></tr><tr><td>Senha:</td><td><inputtype="password"name="senha_usuario"maxlength="8"></td></tr><tr><td>Acesso:</td><td><selectid="acesso_usuario"name="acesso_usuario"><option>- Selecione -</option><optionvalue="Administrador">Administrador</option><optionvalue="Usuário">Usuário</option></select></td></tr></table><br><inputtype="submit"id="acao"name="acao"value="Salvar"onclick="return validarCampos()"><inputtype="submit"id="acao"name="acao"value="Listar"></form></body></html>
leoramos
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
Na verdade eu errei ao postar ele, esta só uma vez declarado, segue o meu include:
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><%@pagecontentType="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:whentest="${acesso eq 'Usuario'}"><%request.getRequestDispatcher("principal.jsp").forward(request,response);Stringalerta=newString();alerta="Você não tem direitos de Administrador!";session.setAttribute("alerta",alerta);%></c:when><c:whentest="${acesso eq null}"><%request.getRequestDispatcher("login.jsp").forward(request,response);%></c:when></c:choose>
aleck
Se vc possuir algum tipo de servlet é provavel que o “problema” esteja lá.
Guinter
Sim tenho…segue a servlet do usuário:
publicclassUsuarioServletextendsHttpServlet{/** * 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 */protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException,SQLException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();try{Stringacao=request.getParameter("acao");Stringid=request.getParameter("idusuario");UsuarioBeanusuario=newUsuarioBean();UsuarioBDusuarioBD=newUsuarioBD();Stringalerta=newString();if(acao.equals("Salvar Edicao")){Stringid_usu=request.getParameter("id");ArrayList<UsuarioBean>lista=newArrayList<UsuarioBean>();lista=(ArrayList<UsuarioBean>)usuarioBD.listaUsuario();for(UsuarioBeanusu:lista){if(usu.getId_usuario()==Integer.parseInt(id_usu)){Stringnome_usuario=(String)request.getParameter("nome_usuario");Stringmatricula=(String)request.getParameter("matricula");Stringsenha_usuario=(String)request.getParameter("senha_usuario");Stringacesso=(String)request.getParameter("acesso_usuario");usu.setNome_usuario(nome_usuario);usu.setMatricula(matricula);usu.setSenha_usuario(senha_usuario);usu.setAcesso_usuario(acesso);booleanret=usuarioBD.alteraUsuario(usu);}}}if(acao.equals("Salvar")){Stringnome_usuario=(String)request.getParameter("nome_usuario");Stringmatricula=(String)request.getParameter("matricula");Stringsenha_usuario=(String)request.getParameter("senha_usuario");Stringacesso=(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=newArrayList<UsuarioBean>();verifica=(ArrayList<UsuarioBean>)usuarioBD.listaUsuario();for(UsuarioBeanusuarioBean: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);}}elseif(acao.equals("Listar")){ArrayList<UsuarioBean>listusu=newArrayList<UsuarioBean>();listusu=(ArrayList<UsuarioBean>)usuarioBD.listaUsuario();request.setAttribute("lista_usuario",listusu);request.getRequestDispatcher("lista_usuario.jsp").forward(request,response);}elseif(acao.equals("Editar")){ArrayList<UsuarioBean>edita=newArrayList<UsuarioBean>();edita=(ArrayList<UsuarioBean>)usuarioBD.listaUsuario();for(UsuarioBeaneditausu:edita){if(editausu.getId_usuario()==Integer.parseInt(id)){request.setAttribute("edita",editausu);request.getRequestDispatcher("editar_usuario.jsp").forward(request,response);}}}elseif(acao.equals("Excluir")){ArrayList<UsuarioBean>lista=newArrayList<UsuarioBean>();lista=(ArrayList<UsuarioBean>)usuarioBD.listaUsuario();for(UsuarioBeanusu:lista){if(usu.getId_usuario()==Integer.parseInt(id)){usuarioBD.deletaUsuario(usu);}}}}finally{out.close();}}
leoramos
Já tentou usando empty?
test="${emptyacesso}"
dentro do when, entendeu?
Qualquer coisa, avisa
Guinter
Mudei o código que me falou para
<c:whentest="${emptyacesso}">
mas quando dou F5 volta volta igual para login.
aleck
O unico local que faz redirect para o login.jsp é o verifica_acesso.jsp, então esta sempre entrando no código abaixo:
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
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
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.