F5 volta para o login

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;

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?

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:

&lt;%@ include file="verifica_acesso.jsp"%&gt;  

queres postar ele pra gente?

Update: aliás, pq ele tá declarado duas vezes?

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>

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&#65533;cula j&#65533; Cadastrada tente outra matr&#65533;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 :slight_smile:

Mudei o código que me falou para

<c:when test="${empty acesso}">

mas quando dou F5 volta volta igual para login.

O unico local que faz redirect para o login.jsp é o verifica_acesso.jsp, então esta sempre entrando no código abaixo:

     &lt;c:when test="${acesso eq null}"&gt;  
         &lt;%request.getRequestDispatcher("login.jsp").forward(request, response);%&gt;  
     &lt;/c:when&gt;  

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.

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.

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>

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.

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…