One idea for the magicMethod: (Just PseudoCode has never seen a
compiler)
synchronized (session) {
String mMagicSessionToken = session.get("MagicToken");
String mMagicRequestToken = request.getParameter("MagicToken");
String mRandom = <GetRandomNumber>.toString();
if ((mMagicSessionToken != null) && (!
mMagicSessionToken.equals(mMagicRequestToken))) {
// resubmit of the same page
// do what ever you want, when this happens
return; // throw new SomeException()
}
session.put("MagicToken", mRandom);
}
// create links or forms with MagicToken=<mRandom>
That's not the complete solution, but I hope you get the idea.
> -----Ursprungliche Nachricht-----
> Von: Jenya Strokin [mailto:[EMAIL PROTECTED]]
> Gesendet: Donnerstag, 18. Juli 2002 18:10
> An: Tomcat Users List
> Betreff: RE: How to close a response?
>
>
> Guys...... it works now, but I don't understand why)))
> I change code to synchronize the sharedSassionBean and didn't
> put any magic
> methods for checking, and Servlet never send the same data twice. But
> process still running two times. So I still need to write
> this magic method.
> Thanks for suggestions and help,
> Jenya
>
> -----Original Message-----
> From: Tim Funk [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, July 18, 2002 11:25 AM
> To: Tomcat Users List
> Subject: Re: How to close a response?
>
>
> There is no need to synchronize the request object. It will
> not be used
> in multiple threads concurrently. What you really need is
> synchronization of the session to prevent processing of the "double
> submit". If the user submits twice, then 2 different requests may be
> executed in different threads. Closing response streams don't help the
> main goal of preventing the double submit.
>
> This may be an alternative:
> synchronized(sharedSessionBean){
> if (magicMethodToCheckForDoubleProcessingYouNeedToWrite()){
> abstractBean.setSharedSession(sharedSessionBean);
> abstractBean.setRequest(request);
> abstractBean.setResponse(response);
> abstractBean.setServlet(this);
> abstractBean.process();
> abstractBean.footerProcess();
> } else {
> //goto double submit error page
> }
> }
>
> -Tim
>
> Jenya Strokin wrote:
> > I'm using servlet. But if you know way how to do this from
> JSP, please
> share
> > it.))
> > This is my method wich called from doGet and doPost:
> >
> > public void doGetPost(HttpServletRequest request,
> HttpServletResponse
> > response)
> > throws ServletException, IOException {
> > /*------------------------------------------------------
> > If user clicks link twice, browser will get the same screen
> two times
> mixed.
> > So, I need synchronized processes. But after that browser
> will get the
> same
> > screen one after another. So I need close output after I
> process first
> > request, and second request can not write to output string.
> > --------------------------------------------------------*/
> >
> > synchronized(request){
> > abstractBean.setSharedSession(sharedSessionBean);
> > abstractBean.setRequest(request);
> > abstractBean.setResponse(response);
> > abstractBean.setServlet(this);
> > abstractBean.process();
> >
> > abstractBean.footerProcess();
> > //---------- I'm trying to close output here, but second
> process write its
> > data anyway
> > // out.close();
> > response.getWriter().close();
> > }
> > }
> >
> > If this information is not enough, I'll provide more.
> > Thanks for any help.
> >
> > -----Original Message-----
> > From: Durham David Cntr 805CSS/SCBE
> [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, July 18, 2002 10:18 AM
> > To: Tomcat Users List
> > Subject: RE: How to close a response?
> >
> >
> > Need more detail about your problem. Are you having a
> problem with JSP?
> >
> > -----Original Message-----
> > From: Jenya Strokin [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, July 18, 2002 9:17 AM
> > To: [EMAIL PROTECTED]
> > Subject: How to close a response?
> >
> >
> > Hi,
> > I need to close the response completely. In some case I
> need to avoid any
> > process write to response output.
> > Using
> > response.getOutputStream().close();
> > response.getWriter().close();
> > response.reset();
> > do not help.
> > Thanks for any suggestions.
> >
> > Jenya
> >
> > -------------------------------------------
> > Introducing NetZero Long Distance
> > Unlimited Long Distance only $29.95/ month!
> > Sign Up Today! www.netzerolongdistance.com
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> > -------------------------------------------
> > Introducing NetZero Long Distance
> > Unlimited Long Distance only $29.95/ month!
> > Sign Up Today! www.netzerolongdistance.com
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> >
> >
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
> -------------------------------------------
> Introducing NetZero Long Distance
> Unlimited Long Distance only $29.95/ month!
> Sign Up Today! www.netzerolongdistance.com
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>