Hi,

I just looked briefly at your code, but could it be, that your filter intercepts the calls to the error page as well? So you would be redirecting, then interceptiong, redirecting, etc.

Maybe you could try a different URL pattern for the filter - something like /protected/*

Hope this helps.

Regards,
Tom

Scott Purcell wrote:
Hello,
I decided to try and implement a filter for my struts application. A filter 
that would check for a session object, and if it does not exist, send the user 
to a certain link.

Anyway, I found an example in the "Struts Cookbook" and I am implementing it. But for 
whatever reason, when I hit a page that should redirect me, I can see (by debug statements) that 
the filter is hit 10 or more times, and then I get an error stating: "Redirect limit for this 
URL exceeeded. Unable to load the requested page") in an alert Box?

I would really like to get this going:
Here is the code, and the web.xml I am using. Any help would be appreciated.

CODE
public class AppFilter implements Filter {

  private String onFailure = "index.jsp";
  private FilterConfig filterConfig;

  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    onFailure = filterConfig.getInitParameter("onFailure");
  }

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


Logger log = Logger.getLogger(this.getClass().getName()); HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; log.info("XXXXXXXXXXXXX"); log.info("AppFilter called for a request."); log.info("param onFailure=" + onFailure);

    // if the page is onFailure page continue down the chain
    if (req.getServletPath().equals(onFailure)) {
      log.info("YYYY equals YYYY");
      chain.doFilter(request, response);
      return;
    }


HttpSession session = req.getSession(); AppObject appObject = (AppObject)session.getAttribute("APP_OBJECT"); if (appObject == null) { log.info("AppObject is null, send to front door."); log.info("sending path=" + req.getContextPath() + onFailure); resp.sendRedirect(req.getContextPath() + onFailure); return; } else { log.info("DDDDDDDD"); chain.doFilter(request, response); } }

  public void destroy() {
  }
}


WEB.XML <filter> <filter-name>AppFilter</filter-name> <filter-class>com.mb.purcell.app.AppFilter</filter-class> <init-param> <param-name>onFailure</param-name> <param-value>/index.jsp</param-value> </init-param> </filter>

  <filter-mapping>
    <filter-name>AppFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Thanks,

Scott K Purcell

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to