- Bom pessoal!!!
-Estou estou desenvolvendo um aplicativo utilizando JSP e Servlets que possui algumas páginas que são de acesso restrito, por isso eu faço o seu controle de acesso através do login dos usuários e utilizo uma session para verificar se o usuário está logado ou não, mas quando eu faço o logout do sistema o usuário consegue visualizar as páginas que foram acessadas anteriormente por ele utilizando os botões de navegação do browser. Eu tentei colocar na página JSP acima da tag os comando:
response.setHeader(“Cache-Control”,“no-cache”); //HTTP 1.1
response.setHeader(“Pragma”,“no-cache”); //HTTP 1.0
response.setDateHeader (“Expires”, 0); //nao salva cache no servidor proxy
-Mas mesmo assim ficou salvo no cache do browser a página.
-Desde já eu agradeço!!!
Abaixo segue o código do servlet que faz o controle de acesso e o que faz a o encerramento da sessão.
Controle de acesso as páginas:
public class SistemaAvaliacaoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SistemaAvaliacaoServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String url="";
String cmd= request.getParameter("cmd");
String NomeCat="";
int total_categoria=0;
String cat=request.getParameter("categoria");
System.out.println(cat);
int categoria=0;
if(cat!=null && !cmd.equals("acessar"))
{
categoria=Integer.parseInt(cat);
}
InterfaceSistemaAvaliacaoDAO perguntasDAO;
UsuarioDAO usuarioDAO;
ConsultaDAO consultasDAO;
HttpSession sessao;
sessao=request.getSession(true);
Usuario usuarioSessao=(Usuario)sessao.getAttribute("usuario");
try
{
perguntasDAO=new SistemaAvaliacaoDAO();
usuarioDAO=new UsuarioDAO();
consultasDAO=new ConsultaDAO();
RequestDispatcher rd=null;
total_categoria=perguntasDAO.getQuantCategorias();
NomeCat=perguntasDAO.getNomeCategoria(categoria);
if(usuarioSessao==null)
{
System.out.println("Passou aqui no sair");
if(cmd.equalsIgnoreCase("acessar"))
{
String nomeAcesso=request.getParameter("nome");
String senhaAcesso=request.getParameter("senha");
Usuario usuario=usuarioDAO.Usuarios(nomeAcesso,senhaAcesso);
request.removeAttribute("nome");
request.removeAttribute("senha");
System.out.println(nomeAcesso);
if(usuario==null)
{
String mensagem="Usuário ou senha inválidos";
request.setAttribute("mensagem",mensagem);
url="/TelaLogin.jsp";
rd=request.getRequestDispatcher(url);
}
else
{
sessao.setAttribute("usuario",usuario);
System.out.println("Sessão foi criada");
if(consultasDAO.getQuantConsultas(usuario.getCodigo(),0)==0)
{
int quantConsultas=consultasDAO.getQuantConsultas(usuario.getCodigo(),1);
url="/CadConsulta.jsp?categoria=0&consulta="+quantConsultas;
rd=request.getRequestDispatcher(url);
}
else
{
url="SistemaAvaliacaoServlet?cmd=FormConsult";
rd=request.getRequestDispatcher(url);
}
}
}
else
if(cmd.equalsIgnoreCase("FormCadUsuario"))
{
int quantUsuarios=usuarioDAO.getQuantUsuarios();
url="/CadUsuario.jsp?quantUsuarios="+quantUsuarios;
rd=request.getRequestDispatcher(url);
rd=request.getRequestDispatcher(url);
}
else
if(cmd.equalsIgnoreCase("CadUsuario"))
{
Usuario usuarioCad=new Usuario();
usuarioCad.setNome(request.getParameter("nome"));
usuarioCad.setLogin(request.getParameter("login"));
usuarioCad.setSenha(request.getParameter("senha"));
usuarioCad.setEscolaridade(request.getParameter("escolaridade"));
usuarioCad.setTipo(request.getParameter("tipo"));
usuarioDAO.salvarUsuario(usuarioCad);
url="/TelaLogin.jsp";
rd=request.getRequestDispatcher(url);
}
else
{
String mensagem="A sessão expirou ou o usuário não está logado no sistema.";
request.setAttribute("mensagem",mensagem);
url="/TelaLogin.jsp";
rd=request.getRequestDispatcher(url);
}
}
else if(usuarioSessao!=null)
{
if(cmd.equalsIgnoreCase("sair"))
{
Consulta catUltConsulta=(Consulta)sessao.getAttribute("consulta");
int catConsulta=0;
int codConsulta=0;
if(catUltConsulta!=null)
{
catConsulta=catUltConsulta.getCategoria();
codConsulta=catUltConsulta.getCodigo();
int pontConsulta=perguntasDAO.getPontuacao(codConsulta);
}
rd=request.getRequestDispatcher("/FecharSessaoServlet");
}
}
}
rd.forward(request,response);
}
catch(Exception e)
{
e.printStackTrace();
throw new ServletException(e);
}
}
}
//
Sevlet responsável por fechar a sessão
public class FecharSessaoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FecharSessaoServlet() {
super();
// TODO Auto-generated constructor stub
}
public void destroy()
{
super.destroy();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession sessao=request.getSession(true);
sessao.removeAttribute("usuario");
RequestDispatcher rd=null;
sessao.invalidate();
rd=request.getRequestDispatcher("/TelaLogin.jsp");
rd.forward(request,response);
System.out.println("Saiu do Sistema!!!");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}