Problema com Filtro de login JSP e Servlets

salve galera,

estou com um problema com o filtro de login da minha aplicação.

um formulario recebe o login e a senha e joga neste Servlet:

[code] String nome = request.getParameter(“login”) ;
String senha = request.getParameter(“senha”);
HttpSession session = request.getSession();

   if(verificaSenha(nome,senha)){

       session.setAttribute("logado", true);
        mensagem = nome + "Logado com sucesso";
        caminho = "/adm/index.jsp";

   }else{

       caminho = "index.jsp";
       mensagem = "erro ao tentar logar";
   }

   request.setAttribute("msg", mensagem);
   
   RequestDispatcher rd = request.getRequestDispatcher(caminho);
   rd.forward(request,response);

[/code]

para bloquear acesso a algumas páginas sem estar logado crie um Filter:

 public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
	throws IOException, ServletException {

	

           HttpSession session = ((HttpServletRequest)request).getSession();

            boolean logado = Boolean.parseBoolean(String.valueOf(session.getAttribute("logado"))) ;

            if(!logado){

                  request.setAttribute("msg","Você não está  logado no sistema!");

                  ((HttpServletResponse)response).sendRedirect("../index.jsp");

            }else{

                   chain.doFilter(request, response);

            }

    }

o filtro funciona para quem não está logado, ao fazer login consigo acessa a index do admin, porém ao tentar outra página perco o status de logado e caio no filtro de novo.

por exemplo:

loguei a passei para index do admin. Ao tentar acessar outra página do admin caio no filtro e volto pro login.

alguma idéia ou corre~ção no meu código?

valeu

Vê se isso presta,

substitua a linha 15 por

dispatcher = getServletContext().getRequestDispatcher("../index.jsp"); dispatcher.forward(request, response);

na verdade eu já havia feito alteração semelhante:

                 RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
                 rd.forward(request,response);

só que estou com problemas nas minhas url’s:

na página de login tem um link assim:

 <a href="adm/adm_index.jsp">Tentar acessar direto</a>

meu url:

http://localhost:8084/sessaocomservlets/

ele faz o filtro e volta pro index

porém o url fica assim:

http://localhost:8084/sessaocomservlets/adm/adm_index.jsp

se clicar no link de novo:

http://localhost:8084/sessaocomservlets/adm/adm/adm_index.jsp

e para cada clique um adm a mais.

alguém sabe onde está o erro?