Pessoal, gostaria de ver com vocês se alguém poderia me dar uma dica para resolver o seguinte problema: tenho o seguinte código de um formulário de cadastro.
Conexao conexao = new Conexao();
Connection conn = null;
PreparedStatement pstmt = null;
conn = conexao.getConnection();
String SQL = "";
String nomeusuario = "";
nomeusuario = String.valueOf(session.getValue("nomeusuario"));
try {
        if (!("".equals(nomeusuario)) && (!("null".equals(nomeusuario)))){
            %><tr><center><b>Groups:</b>
            <table align="center">               
                    <td>Nome do Grupo:</td>
                    <td><input type="text" name="nomegrupo" size="40" maxlength="40" ><font size="1"> </font></td>
                            <td>Tipo do Grupo:</td>
                            <td><select name="tipogrupo">
                            <%SQL  = "Select codtipogrupo, nome from tipogrupo order by nome";
                            pstmt = conn.prepareStatement(SQL);
                            ResultSet rs = pstmt.executeQuery();
                            while (rs.next()){
                                String codtipogrupo = rs.getString(1);
                                String nomegrupo = rs.getString(2);%>
                                <option value="<%=codtipogrupo%>"><%=nomegrupo%></option>
                            <%}
                            %></select></td>
                
            </table>
                                <table align="center">
                        <td align="left"><input type="submit" name="Submit" value="Salvar"></td>
                        <%session.putValue("nomeusuario",nomeusuario);
                        %>
                    </form>
                    <form name="form1" method="post" action="listagem.jsp">
                        <td align="left"><input type="submit" name="Submit2" value="Voltar"></td>
                        <%session.putValue("nomeusuario",nomeusuario);
                        %>
                    </form>
                </table>
                    <%
        }
        else{%><td align="center"><font size="4" color="#AA0000">A sessão expirou, você precisa conectar novamente</font></td>
                    <script language="Javascript"><!--
                    var timer = 2;
                    function countdown(){
                        if(timer > 0){
                            timer -= 1;
                            setTimeout("countdown()",1000);
                        }
                        else{
                            location.href='index.html';
                        }
                    }
                    countdown();
                    --></script>
                    <%
        }%></center><%
}catch (Exception e) {%>
    //out.println("Não foi possível conectar ao banco" + e.getMessage());
}
finally{
    try{
        pstmt.close();
        conn.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}Após o seu preenchimento o usuário clica em salvar e os dados do mesmo são enviados para uma página onde os dados são inseridos numa tabela.
String nome      = request.getParameter("nomegrupo");
String tipo      = request.getParameter("tipogrupo");
String nomeusuario = "";
nomeusuario = String.valueOf(session.getValue("nomeusuario"));
Conexao conexao = new Conexao();
Connection conn = null;
PreparedStatement pstmt = null;
conn = conexao.getConnection();
String SQL = "";
try {
        if (!("".equals(nomeusuario)) && (!("null".equals(nomeusuario)))){
            if (!("".equals(nome))){
                SQL  = "Insert into grupo(codtipogrupo, nome) values ('"+tipo+"', '"+nome+"')";
                pstmt = conn.prepareStatement(SQL);
                pstmt.executeUpdate();
                %><td align="center"><font size="4" color="#AA0000">Grupo cadastrado com sucesso</font></td>
                <script language="Javascript"><!--
                var timer = 2;
                function countdown(){
                    if(timer > 0){
                        timer -= 1;
                        setTimeout("countdown()",1000);
                    }
                    else{  
                        location.href='listagem.jsp';
                        <%session.putValue("nomeusuario",nomeusuario);
                        %>
                    }
                }
                countdown();
                --></script>           
                <%
            }
            else{
                %><td align="center"><font size="4" color="#AA0000">Não existem dados a serem salvos</font></td>                        
                <script language="Javascript"><!--
                var timer = 2;
                function countdown(){
                    if(timer > 0){
                        timer -= 1;
                        setTimeout("countdown()",1000);
                    }
                    else{  
                        location.href='cadGrupo.jsp';
                        <%session.putValue("nomeusuario",nomeusuario);
                        %>
                    }
                }
                countdown();
                --></script>
                <%
            }
        }
        else{%><td align="center"><font size="4" color="#AA0000">A sessão expirou, você precisa conectar novamente</font></td>
                    <script language="Javascript"><!--
                    var timer = 2;
                    function countdown(){
                        if(timer > 0){
                            timer -= 1;
                            setTimeout("countdown()",1000);
                        }
                        else{
                            location.href='index.html';
                        }
                    }
                    countdown();
                    --></script>
                    <%
        }%></center><%
} catch (Exception e) {
    //out.println("Não foi possível conectar ao banco" + e.getMessage());
}
finally{
    try{
        pstmt.close();
        conn.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}Acontece que após este procedimento, existe a possibilidade do usuário de utilizar os botões de Voltar e Avançar do navegador e com isto a possibilidade de o usuário salvar várias vezes o mesmo dado, é claro que com chave primária diferente, pois ao utilizar os botões do navegador, o formulário permanece preenchido. Gostaria de ver se alguém teria uma dica de como posso resolver este problema.