Justin is of course completely correct.  When you submit a form to the server, you are 
getting a response back.  That response could be in a number of forms, but there's no 
such thing as creating a second response on the server and sending back both.

If you want to avoid client-side scripting (which is how soemthing like this would 
typically be done) what you can do is return your form page simply with a link to the 
file to download.  This link would in fact be a call to your server-side process that 
will "push" the file through THAT response.  Be sure to set the content-disposition 
headers on the response and you'll get a Save As dialog on the client WITHOUT 
overwriting what's in their browser.

As an alternative to the link, call a Javascript function on the pages' onLoad() event 
that does the same thing as clicking the link would.  Or, if you really don't want to 
use the scripting, do it with a meta redirect (or refresh, I forget off-hand) to do 
the same thing.  The pertinent point is that the content-disposition header will 
result in the Save-As dialog rather than overwriting what's on the browser already.

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

On Mon, November 1, 2004 3:17 pm, Luc Foisy said:
> I know there is only a single response, thats why I want to create a new
> one :)
> 
> I don't even want to get into opening other windows nor do I want to rely
> on javascript for required operation.
> 
> I am not sure what you are refering to as atypical or robustness...
> 
> How do other sites generate files on the fly (take it out of a database,
> or a report just run), on form submit, and send them down the line and not
> run into this problem?
> 
> I see many people posting many places on the net that they are using the
> response to send a file, a lot of them are getting this IllegalState, but
> I never really found a followup solution that really fit my needs.
> 
> Why would the possibility exist to push a file through the response if it
> leaves you with the ability to go nowhere after?
> 
> (not really questions possed to you Justin, just hoping to keep it alive)
> 
> -----Original Message-----
> From: Justin Ruthenbeck [mailto:[EMAIL PROTECTED]
> Sent: Monday, November 01, 2004 2:56 PM
> To: Tomcat Users List
> Subject: Re: Response and file downloads
> 
> 
> 
> Luc,
> 
> At 11:42 AM 11/1/2004, you wrote:
>>I am having a wee problem with using the response.
>>
>>I have a form on a page, with a submit button to download a file. That
>>file is being pulled from a database and pushed to the response.
>>The problem I am having, I just used that response to submit the page,
>>so I am getting and IllegalStateException, even though it is still
>>pushing the file to the browswer
>>I also want to be able to send a redirect after the file is downloaded
>>(so I can refresh the page so the form submit page is regenerated, since
>>we are using a string to determine unique submits are only coming from
>>the pages we generated, and not the browser address bar)
>>
>>Can we get a new response from the session variable (the one available
>>to jsp writing) to send the file, then get another new response to
>>perform a redirect....
>>Basically I want to be able to do something like
>>
>>the form submits, and passes to the applications perform methods through
>>the jsp catching the submit
>>response = new Response
>>response.sendFile
>>response = new Response
>>response.sendRedirect
>>(yes I know those are not actual methods and classes, just trying to
>>explain what I want)
> 
> Your understanding of how, exactly, the http protocol works is
> incorrect.  Because it is a (single) request, (single) response protocol,
> what you're asking for cannot be done.
> 
> It seems like what you want is for a user to fill out a form, click
> submit, then be presented with a new, fresh, form again ... with the file
> download on the side.  If you have determined that you absolutely want
> this behavior (it's atypical, so doing it won't be particularly robust),
> consider programmatically opening another browser window on form submit
> from which the download will happen ... and reload your form in your
> "main" browser window.  This will, of course, subject you to any
> headaches associated with javascipt window opening.
> 
> justin
> 
> 
> 
> ______________________________________________
> Justin Ruthenbeck
> Lead Software Engineer, NextEngine Inc.
> justinr - AT - nextengine DOT com
> Confidential. See:
> http://www.nextengine.com/confidentiality.php
> ______________________________________________
> 
> 
> ---------------------------------------------------------------------
> 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]
> 
> 

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

Reply via email to