aspose file tools*
The moose likes JSP and the fly likes ServletOutputStream is not working? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » JSP
Bookmark "ServletOutputStream is not working?" Watch "ServletOutputStream is not working?" New topic
Author

ServletOutputStream is not working?

Maruli Lee
Greenhorn

Joined: Dec 09, 2004
Posts: 11
I had a previous program which is working fine so I just copied the chunk of code and paste it on the new program which I am building. Basically my program will generate a report using JExcel API and then I will try to display it on the web so that user can Open/Save/Cancel it (the normal IE notification window). Furthermore, there is no error message on the tomcat log.



[ November 27, 2007: Message edited by: Maruli Lee ]
[ November 27, 2007: Message edited by: Bear Bibeault ]
Ben Souther
Sheriff

Joined: Dec 11, 2004
Posts: 13410

Is this code in a servlet or a JSP?


Java API J2EE API Servlet Spec JSP Spec How to ask a question... Simple Servlet Examples jsonf
Maruli Lee
Greenhorn

Joined: Dec 09, 2004
Posts: 11
Hi Ben,

It's in JSP, that's why I posted it under the JSP forum.

Additional info, this chunck of codes are embedded within

<form name="frm" method="POST">
//Code goes here
</form>
[ November 27, 2007: Message edited by: Maruli Lee ]
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61768
    
  67

So you are embedding the output in the middle of some HTML? Of course that won't work. What are you really trying to do?


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Maruli Lee
Greenhorn

Joined: Dec 09, 2004
Posts: 11
No no no. The codes are within the JSP tags <% %>

Actually my JSP will be calling a Java program which will generate a report in Excel (Using JExcel API). After the report is created it will be stored in C:\tomcat\webapps\SnetReport\REPORT

What I am trying to do is to pop up a save file dialog box so that the user can retrieve the file from the web instead of having to go into the folder to get it manually.
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42945
    
  68
A good rule of thumb is to not use the servlet output stream in a JSP, ever. As Bear said, it won't work. Theoretically, it might, but practically, it won't. Moving the code into a servlet will help.
William Brogden
Author and all-around good cowpoke
Rancher

Joined: Mar 22, 2000
Posts: 12835
    
    5


Of course it won't - JSP has automagically already gotten the output stream for character output - thats what JSP do. You are undoubtedly getting a java.io.IllegalStateException thrown at that point. See the JavaDocs.

Bill
Maruli Lee
Greenhorn

Joined: Dec 09, 2004
Posts: 11
I have modified my code to avoid using OutputStream since it will cause a lot of problem. Now my modified code looks like this:



After I ran through this code my JSP page will refresh and show me this screen:



In addition, Tomcat shows following message:

Nov 29, 2007 10:44:38 AM org.apache.jasper.runtime.PageContextImpl release
WARNING: Internal error flushing the buffer in release()
Stefan Evans
Bartender

Joined: Jul 06, 2005
Posts: 1029
As has been mentioned, JSPs are designed for output of text.
Sending a binary file via JSP is tricky for a number of reasons.

I would recommend you read Bear's excellent article on this subject: The Secret Life of JavaServer Pages where he answers the question "Why does everyone tell me to use a servlet to send binary data to the browser? I wanna use a JSP!"

You've written it all in java code anyway - it SHOULD be a servlet.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: ServletOutputStream is not working?