Filtro + JSP

0 respostas
D

Ola Pessoal, estou com um problema com Filtros, vou explanar meu problema abaixo.

Bem eu tenho o layout da minha pagina inicial o qual contem img's e texto aonde e realizado o login.

O Servlet que realiza a criação da sessao do usuario funciona perfeitamente.

Agora quero usar um Filtro para fazer o controle de Sessao o qual era pra ser ativado para todas as requisições "/*", para caso o usuario queira entrar direto na pagina de menu do sistema, entao o filtro vai intervir verificar se ele tem sessao valida, se tiver deixa proseguir com o comando
chain.doFilter(request, response);
, senão ele envia para o login.jsp com o codigo a seguir
out.println("<h2> Login obrigatório para acesso a esse recurso! </h2>");
                req.getRequestDispatcher("login.jsp").include(request, response);

Codigo Inteiro do Filtro de Sessao a seguir:

System.out.println("Entrou no filtro de Sessao");
            
            HttpServletRequest req = (HttpServletRequest) request;
            HttpSession sessao = req.getSession();
            
            if (sessao.getAttribute("login") != null                    
                && sessao.getAttribute("password") != null) {
                //usuario tem sessão válida e pode acessar o recurso...
                chain.doFilter(request, response);
                
            } else {
                
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                
                out.println("<h2> Login obrigatório para acesso a esse recurso! </h2>");
                req.getRequestDispatcher("login.jsp").include(request, response);
como esse filtro de sessao e para todas as paginas eu tenho que burla ele caso a requisição da url que o usuario tenha feito foi direto para a "login.jsp", entao criei o filtro com o seguinte codigo
System.out.println("Entrou no filtro de Login");
            
            HttpServletRequest req = (HttpServletRequest)request;
            req.getRequestDispatcher("/login.jsp").
                    forward(request, response);

bom ai começa todo meu problema, pelo que entendo de filtros se uma requisição fosse feita direto para pagina login.jsp o primeiro filtro que deveria intervir seria o de Login, e como dentro do meu filtro de login eu mando ele dispachar direto para a login.jsp ele nao deveria passar pelo de sessao!? correto?

mas nao é isso que aconteçe, sempre que faço essa resquisição para login.jsp direto ele entra no filtro de login 1x e no de sessao 2x sendo que nao era pra entrar nenhuma, como vcs podem ver o erro na img a seguir :

[IMG]http://img607.imageshack.us/img607/5875/erroapachefilter.jpg[/IMG]

e alem de ele passar pelo filtro de sessao, ele redireciona para a login.jsp so que destruindo meu layout.

como e para ser:

[IMG]http://img804.imageshack.us/img804/5491/paginasemerro.jpg[/IMG]

Como fica apos passar pelo filtro :

[IMG]http://img96.imageshack.us/img96/6546/paginacomerro.jpg[/IMG]

Alguem pode me dar uma luz POR FAVOR?

Att Diego

Criado 5 de maio de 2012
Respostas 0
Participantes 1