Problema um pouco estranho com RequestDispatcher

Pessoal,

Seguinte…estou trabalhando com SessionListener e Filters…

Ai, faço uma verficação qualquer se for true continua normal … caso contrario eu mando o usuario pra tela de login, utlizando o RequestDispatcher desta maneira:

RequestDispatcher view = request.getRequestDispatcher("../login.jsp");
view.forward(request, resp);

Até ai blza ele manda pra tela de login, porem esta tela, vem sem formatacao nenhuma, as imagens nao aparecem, nem o css… ué ?

ahh ja tentei response.sendRedirect("…/login.jsp") … mas este nao adianta pois utilizo

Obrigado…

cara, é bem simples (mas eu já apanhei com isso tbm)

Acontece que os links para os arquivos de javascript e/ou css estão com a referencia alterada.

Quando tem algum código do tipo: <link rel="stylesheet" type="text/css" href="[arquivo css]" />
Ele procura pelo arquivo em relação a URL.

Quando você abre a página de login pela primeira vez, aparece a URL da página de login; logo, os arquivos de css serão procurados com o caminho relacionado a partir da URL da página de login.

Após fazer o submit do dados de login, a URL é alterada para a URL de alguma Servlet e isso faz com que os arquivos passem a ser ser procurados a partir de outro caminho (o caminho do atributo action do form de login), daí os arquivos não são encontrados.

Para resolver isso você deve deixar todos os arquivos de css e javascript sendo referenciados a partir da raiz de seu site.

:wink:

obrigado bernardo …

resolvi o problema da seguinte maneira

no lugar do

 response.sendRedirect("../login.jsp");

eu coloquei

response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<script>parent.location.href='../login.jsp'</script>"); out.close();

isso faz com que a pagina va para o _parent ao inves de ser processada no iframe.

espero ter ajudado, ja que me ajudei =]]]