[Opensource] Forward to another jsp if session timeout

larry hamel expresso at codeguild.com
Fri Sep 27 18:13:30 PDT 2002


> We are using Expresso 4.0 version. So how do I have the timeout feature to bring
>back to my login page?

I'm not sure I understand your question. I suppose you can change to expresso version 4.1, or back-port the new feature to an older version, assuming that you're using a version of 4.0 that precedes the auto-redirect feature.  The main code for the auto-redirect feature is in Controller.perform(), after this special case "catch":

            /**
         * special case: when there is no login, redirect to login screen
         */
        } catch (SecurityException securExcep) {


>Anyway, how do I access the global forward in my controller? 

in a controller, Controller.getServlet().findForward() may help.

do you know that you can forward any request to any jsp by using 

response.setStyle();
or by adding a "style=" parameter to a URL?

If you don't know about setStyle(), then please search the archives of this mailing list BEFORE you ask your next questions.

for a true redirect (301), the following method on Controller was added at the same time as the auto-redirect feature:

        Controller.redirectRequest();


>Innovest
>
>--- larry hamel <expresso at codeguild.com> wrote:
>> perhaps I don't understand your end goal, but be
>> advised that expresso  (since about 4 months ago)
>> automatically redirects a person who has (just)
>> timed out right back to the login page, as commented
>> in the that's-config.XML file:
>> 
>>         <global-forwards>
>>                 <!-- logon is the redirection target
>> when a user who isn't logged tries
>>              to access a secured page -->
>>                 <forward name="logon"
>> path="/Login.do"/>
>> 
>> if the user authenticates successfully, the user is
>> redirected automatically to the original
>> destination.
>> 
>> larry
>> 
>> At 04:36 PM 9/25/2002, you wrote:
>> 
>> >Hi Ken 
>> >
>> >This may help 
>> >
>> >We co-ordinate the session timeout on the server
>> (using tomcat) with the jsp page timeout 
>> >
>> >for tomcat - set the connectionTimeout value in the
>> server.xml file 
>> >
>> >    <Connector
>>
>className="org.apache.catalina.connector.http.HttpConnector"
>> 
>> >               port="80" minProcessors="5"
>> maxProcessors="75" 
>> >               enableLookups="true"
>> redirectPort="8443" 
>> >               acceptCount="10" debug="0"
>> connectionTimeout="60000"/> 
>> >    <!-- Note : To disable connection timeouts, set
>> connectionTimeout value 
>> >     to -1 --> 
>> >
>> >we created an include file with one line 
>> ><meta http-equiv="refresh"
>>
>content="1800;URL=/expresso/cal/SessionTimeout.do?state=timeout">
>> 
>> >
>> >content is the time (i.e. 30 minutes above) 
>> >Include this file in your jsp 
>> >
>> >When the 30 minute inactive time is reached, then
>> the session object on the server will also have
>> invalidated. 
>> >
>> >Simply make the above servlet accessible to anybody
>> (ass the session details will be invalid) and call a
>> generic timeout script on the server
>> >
>> >SessionTimeout.java 
>> >
>> >public class SessionTimeoutCont extends
>> DBControllerExt 
>> >
>> >{ 
>> >  public SessionTimeoutCont() 
>> >  { 
>> >    super(); 
>> >    
>> >    State timeout = new State("timeout", "Process a
>> timeout"); 
>> >      addState(timeout); 
>> >  } 
>> >
>> >  public String getTitle() 
>> >  { 
>> >      return new String("Our Session Timeout
>> Controller"); 
>> >  } 
>> >
>> >  protected void runTimeoutState(ControllerRequest
>> request, 
>> >    ControllerResponse response) throws
>> ControllerException 
>> >  { 
>> >    /* 
>> >     * in the request object add params 
>> >     * errormsg 
>> >     * formaction - i.e /cal/CcsExpress.do 
>> >     * tostate - DONT add if you want to go to the
>> main page by default 
>> >     * error - simply include this if this is an
>> error - else is success message 
>> >     *  i.e. repquest.setParameter("error", "true")
>> 
>> >     */ 
>> >    String myName=thisClass+"runTimeoutState() "; 
>> >
>> >    try 
>> >    { 
>> >      request.setParameter("formaction",
>> DefaultParams.sHomeCont); 
>> >      request.setParameter("tostate", "homePage"); 
>> >      request.setParameter("error", "true"); 
>> >      String sMsg = "<div align=\"center\">Your
>> session has remained inactive for " + 
>> >        DefaultParams.iSessionTimeout + "
>> minutes<br>" + 
>> >        "and you have been timed out.<br><br>" + 
>> >        "Please login again to continue.</div>"; 
>> >      request.setParameter("errormsg", sMsg); 
>> >      Transition outcome = new Transition(); 
>> >      outcome.addParam("state", "outcome"); 
>> >      outcome.addParam("controller",
>> DefaultParams.sContPkg + "OutcomeCont"); 
>> >      outcome.transition(request,response); 
>> >    } 
>> >    catch (Exception dbe) { 
>> >        throw new ControllerException( 
>> >        myName+ "Session Timeout Controller
>> exception: " 
>> >        +dbe.getMessage()); 
>> >    } 
>> >  } 
>> >} 
>> >
>> >We simply have a jsp that displays the above
>> message and creates the transition (Back to a home
>> page to login again ??) 
>> >
>> >Good luck 
>> >Eddie Lewis 
>> >
>> >-----Original Message----- 
>> >From: Innovest Ken
>>
>[<mailto:innovest_11 at yahoo.com>mailto:innovest_11 at yahoo.com]
>> 
>> >Sent: Wednesday, 25 September 2002 12:33 PM 
>> >To: opensource at jcorporate.com 
>> >Subject: [Opensource] Forward to another jsp if
>> session timeout 
>> >
>> >hi all, 
>> >
>> >If session timeout, I need to forward to another
>> jsp. 
>> >Currently, I check at all the individual jsp and
>> all 
>> >controller. Instead of putting the codes in all the
>> 
>> >states in all controllers, I put the codes in
>> newstate 
>> >of the controller, so that all states will also do
>> the 
>> >check. But to forward to the jsp, I need controller
>> 
>> >response, so I'm stuck here. 
>> >
>> >Any other way to forward to jsp? 
>> >
>> >Thanks 
>> >
>> >Innovest 
>> >
>> >__________________________________________________ 
>> >Do you Yahoo!? 
>> >New DSL Internet Access from SBC & Yahoo! 
>> ><http://sbc.yahoo.com>http://sbc.yahoo.com 
>> >_______________________________________________ 
>> >Opensource mailing list 
>> >Opensource at jcorporate.com 
>>
>><http://mail.jcorporate.com/mailman/listinfo/opensource>http://mail.jcorporate.com/mailman/listinfo/opensource
>> 
>> >Archives:
>>
><http://mail.jcorporate.com/pipermail/opensource/>http://mail.jcorporate.com/pipermail/opensource/
>> 
>> 
>> _______________________________________________
>> Opensource mailing list
>> Opensource at jcorporate.com
>>
>http://mail.jcorporate.com/mailman/listinfo/opensource
>> Archives:
>http://mail.jcorporate.com/pipermail/opensource/
>
>
>__________________________________________________
>Do you Yahoo!?
>New DSL Internet Access from SBC & Yahoo!
>http://sbc.yahoo.com
>_______________________________________________
>Opensource mailing list
>Opensource at jcorporate.com
>http://mail.jcorporate.com/mailman/listinfo/opensource
>Archives: http://mail.jcorporate.com/pipermail/opensource/




More information about the Opensource mailing list