Dae galera.. estou passando por um problema.... tenho um sistema web utilizando servlets, jsp, etc.... e criei um filtro pra verficar se o cara ta logado e tal.... na minha pagina eu tenho a principal e dentro da principal tem um iframe.. nesse iframe que é aberto todas as janelas do menu.. , só que se eu tentar acessar uma pagina sem me logar.. ele redireciona para o login.. até aí tudo certo.. o problema é que ele redireciona dentro do iframe.. e eu quero que ele abra apenas a pagina do login.. do jeito que esta fica o topo(menus) e o login abaixo.... Segue as minhas classes:
Tenho um command que é o meu login, ele é chamado por um servlet controlador:
public void doAction(HttpServletRequest request, HttpServletResponse response, ServletContext context) throws ServletException {
try {
/*response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<script>parent.location.href='" + request.getContextPath() + "/jsp/frmLogin.jsp'</script>");
out.flush();
out.close();
return; */
RequestDispatcher disptcher = context.getRequestDispatcher("/jsp/frmLogin.jsp");
disptcher.forward(request, response);
} catch (Exception e) {
throw new ServletException(e.getMessage());
}
}
O meu Filtro de controle:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
boolean isValid = false;
try {
isValid = verifyAccess((HttpServletRequest) request);
} catch (Exception e) {
throw new ServletException(e.getMessage());
}
if (!isValid) {
//request.setAttribute("url_login", getNextURL(( HttpServletRequest)request));
String url = ((HttpServletRequest)request).getContextPath()+"/jsp/frmLogin.jsp";
filterConfig.getServletContext().getRequestDispatcher("/ServDocumentoController?command=login").forward(request,response);
//((HttpServletResponse) response).sendRedirect("ServDocumentoController?command=login");
((HttpServletResponse)response).getWriter().flush();
((HttpServletResponse)response).getWriter().close();
return;
}
chain.doFilter(request, response);
}
public void destroy() {
}
protected boolean verifyAccess(HttpServletRequest request) throws Exception{
UsuarioVO usuario = ( UsuarioVO ) request.getSession().getAttribute("user");
boolean isInvalidSistema = false;
if( usuario!= null)
isInvalidSistema = true;
return isInvalidSistema;
}
<table style="height:100%;" width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#FFFFFF" style="height:50;">
<jsp:include page="frmHeader.jsp" />
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" style="height:100%;">
<iframe id="iframePrincipal" name="iframePrincipal" frameborder="0" height="100%" width="100%" allowtransparency="true">corpo</iframe>
</td>
</tr>
</table>
PrintWriter out = response.getWriter();
out.println("<script>parent.location.href='" + request.getContextPath() + "/jsp/frmLogin.jsp'</script>");
out.flush();
out.close();
Coloquei esse códido no lugar do forward do filter e no lugar do forward do command.. só que ele fica como se estivesse tentando abrir varias vezes... como se entrasse em loop... alguem sabe como fazer isso??
Como eu posso redirecionar apenas para a pagina de login sem aparecer o resto da minha pagina??
Abraço!!