This week's book giveaway is in the JDBC forum.
We're giving away four copies of Make it so: Java DB Connections & Transactions and have Marcho Behler on-line!
See this thread for details.
The moose likes JSP and the fly likes refreshing the BLOB Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Make it so: Java DB Connections & Transactions this week in the JDBC forum!
JavaRanch » Java Forums » Java » JSP
Bookmark "refreshing the BLOB" Watch "refreshing the BLOB" New topic

refreshing the BLOB

Gert Cuppens
Ranch Hand

Joined: Jul 13, 2003
Posts: 87
I've made a small web application about movies. For those interested
to see it work : go to
The web app works with servlets and JSP's.

Now the problem is this : in the local version, I can select on the first
page the letter "B" to get all movies starting with a B. When I select
, say, "Bad Santa" in thsi list, I can see the detail screen containing
the poster of the movie (a BLOB).
If I go back to the list and select "the Blob" from 1958, I see the poster
with the photo of Steve Mc QUeen. If I go back to the list once more,
I can select "the Blob" from 1988, and I see the poster from this movie.

So locally, everything is OK. Then I published the web application on my
web site, and this still keeps on working.
But when I go to the office, and try to go to my web application at work,
whichever poster I see first, this is the poster that will be shown on all
the other detail screens.
So, for instance, with the above scenarion, I see the data from "bad santa"
and its poster. If I go to the blob, I see the data of the blob (title, year)
but still the poster of "bad santa".

So, at work, I can only view the first poster, even though I select other
movies. Can anyone tell me where the error is ?
Kristian Breifossmo

Joined: Mar 01, 2005
Posts: 9
I might be trying to shoot in the dark here, but anyway...

Have you checked it's not a caching issue? Try turning caching off and on
on the browser, restarting the browser each time and maybe emptying the
cache. I don't know much about your system so I can't make any better guess right now.

It could also be a session issue (shoot me if I'm wrong anyone), do you have cookies enabled at work/home?
[ March 12, 2005: Message edited by: Kristian Breifossmo ]

<ul type="square"><br /><li><a href="" target="_blank" rel="nofollow">Kristian Breifossmos hjemmeside</a><br /> <br /><li><a href="" target="_blank" rel="nofollow">Marthe Buseths hjemmeside</a><br /></ul>
Gert Cuppens
Ranch Hand

Joined: Jul 13, 2003
Posts: 87
Frankly, after reading your answer, I think it must be a cache problem. I already had this before at work with another web application. Then, the JSP's never changed. To solve this, I had to add the following lines to each JSP :

response.setHeader("Expires", "0");
response.setHeader("Pragma", "No-cache");
response.addHeader("Cache-control", "no-store"); // tell proxy not to cache
response.addHeader("Cache-control", "max-age=0"); // stale right away

But now it's different. The JSP's are all right, but the image shown is made by a servlet which is called inside a JSP with the following code

<td width="200" rowspan="6"><div align="center"><img src="/gco/cluifimg" width="150" height="200"></div></td>

the /gco/cluifimg is referred to a servlet which takes care of the translation from the blob into an array of bytes. This works fine at home, but at work, I suppose the proxyserver is only calling this servlet once, putting it into the cache, and never bother again to see if it has changed. So, I have to look for a way to prevent the caching of the output of this servlet.
Kristian Breifossmo

Joined: Mar 01, 2005
Posts: 9
I would also check if there is a possibility that only the generated image is cached. When viewing the image, what filename (url) does the image have when appearing in the browser?

Let's say I have a servlet generating an image which always will have the name "img.jpg".

The browser sees

every time! Since there is a possibility it has cached an image with that name/size already it doesn't bother to check if it in fact is the same image.

Try making a random filename for the generated image and you should see the problem disappearing.
Gert Cuppens
Ranch Hand

Joined: Jul 13, 2003
Posts: 87
Kristian, you were right. It is the caching that showed me the first poster
all over again. I changed the line of code into this :

and with adding a superfluous parameter, I forced the proxyserver to show
me every poster I asked for. I tested it today at work and this did the trick. Thanks again.
kira yamato

Joined: Mar 24, 2005
Posts: 7
i also have this problem..but instead of using servlet..mine is just printing out the filename
Something like <img src="<%=request.getContexxtPath()%>/images/<%=imageFileName%>" /> where imageFileName is the fileName i took from database..but cos i can edit my the filename when the same...just that..the picture image changes...

cos when i tried toggle between .jpg and .gif file...the image changes..but when i save .jpg..the image won't change when reload..then i have to press F5 to refresh then it reload..

when i edit and save the image file name will be like 1000001.jpg so when i save to .gif it will be 1000001.gif but when i save a .jpg becomes somename.jpg to 100001.jpg

how to solve it ?
Gert Cuppens
Ranch Hand

Joined: Jul 13, 2003
Posts: 87
Kira, I advise you to start a new topic if you won't get an answer to your question soon. It is my experience that people think that the topic is solved as soon as it gets a number of replies.

So, don't wait too long. If you haven't got a good answer to your problem, start a new topic.
I agree. Here's the link:
subject: refreshing the BLOB
It's not a secret anymore!