You can extend RequestProcessor using a intercepting filter pattern for
preprocessing
(http://java.sun.com/blueprints/patterns/InterceptingFilter.html), so you
don't have to check the session in every jsp.



public class MyRequestProcessor extends RequestProcessor {

    PreProcessingFilter firstPreProcessingFilter;

    public MyRequestProcessor() {

        firstPreProcessingFilter =
                new SessionPreProcessingFilter(
                new AuthenticationPreProcessingFilter(null));

    }

    protected ActionForward processActionPerform(
            HttpServletRequest request, HttpServletResponse response,
            Action action, ActionForm form, ActionMapping mapping) throws
            IOException, ServletException {

        ActionForward actionForward = firstPreProcessingFilter.process(
                request, response, action, form, mapping);

        if (actionForward == null) {
            return super.processActionPerform(request, response, action,
                                              form, mapping);
        } else {
            return actionForward;
        }

    }

}



/**
 * A base clase for all preprocessing filters. Usually, concrete filters
only
 * need to provide an implementation of <code>doProcess</code>.
 */
public abstract class PreProcessingFilter {

    private PreProcessingFilter nextFilter;

    public PreProcessingFilter(PreProcessingFilter nextFilter) {
        this.nextFilter = nextFilter;
    }

    /**
     * Calls upon <code>doProcess</code>, and if necessary, continues to
call
     * <code>process</code> on the next filter.
     */
    public ActionForward process(HttpServletRequest request,
                                 HttpServletResponse response, Action
action,
                                 ActionForm form,
                                 ActionMapping mapping) throws IOException,
            ServletException {

        ActionForward actionForward = null;

        /* Process this filter. */
        actionForward = doProcess(request, response, action, form, mapping);

        /* Process next filter in the chain. */
        if ((actionForward == null) && (nextFilter != null)) {
            return nextFilter.process(request, response, action, form,
mapping);
        } else {
            return actionForward;
        }

    }

    /**
     * Does the processing of this filter.
     *
     * @return <code>null</code> if the next filter must be processed; an
     *         <code>ActionForward</code> otherwise
     */
    protected abstract ActionForward doProcess(HttpServletRequest request,
                                               HttpServletResponse response,
                                               Action action, ActionForm
form,
                                               ActionMapping mapping) throws
            IOException, ServletException,
            InternalErrorException;
}





> -----Mensaje original-----
> De: koen boutsen [mailto:[EMAIL PROTECTED] 
> Enviado el: viernes, 10 de octubre de 2003 13:32
> Para: Struts Users Mailing List
> Asunto: redirect problem
> 
> 
> Hi
> If my httpsession is invalid, I want to send the user to the 
> logon page.  I tried it in different ways, but get an error 
> everytime I tried it like this : (sessionIsValid is a 
> attribute in the session. If this attribute is null, it means 
> that my session does no longer exist).
> 
> 
> <logic:notPresent name="sessionIsValid" scope="session"> 
> <logic:forward name="/sessionTimedOut"/> </logic:notPresent>
>     
> 
> This is the error I get :
> javax.servlet.jsp.JspException: Exception redirecting for 
> name /sessionTimedOut: java.lang.IllegalStateException
> [10/10/03 13:08:25:033 CEST] 5355efea SystemErr     R         
> at 
> org.apache.struts.taglib.logic.ForwardTag.doEndTag(ForwardTag.
> java:164)
> [10/10/03 13:08:25:033 CEST] 5355efea SystemErr     R         
> at org.apache.jsp._specialCode1._jspService(_specialCode1.java:164)
> [10/10/03 13:08:25:033 CEST] 5355efea SystemErr     R         
> at 
> com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJs
> pBase.java:89)
> [10/10/03 13:08:25:033 CEST] 5355efea SystemErr     R         
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> [10/10/03 13:08:25:043 CEST] 5355efea SystemErr     R         
> at 
> com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapp
> er.service(JspServlet.java:344)
> [10/10/03 13:08:25:043 CEST] 5355efea SystemErr     R         
> at 
> com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(
> JspServlet.java:598)
> [10/10/03 13:08:25:043 CEST] 5355efea SystemErr     R 
> 
> Thanks for any help.
> 
> Koen
> 
> 
> ____________________________________________________________
> Get advanced SPAM filtering on Webmail or POP Mail ... Get 
> Lycos Mail! http://login.mail.lycos.com/r/referral?aid=27005
> 
> ---------------------------------------------------------------------
> 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