Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2007

Tip: Looking for answers? Try searching our database.

JSP Loading Page... Please wait while my code doesn't work!

Thread view: 
Nino - 30 May 2007 22:40 GMT
Hi.

I have tried, and tried again to build a "Please wait..." loading page
in JSP. I have read all the posts I could find on the matter and
incorporated what seemed to be a set way to do this.

Here is the premise that just about every bit of information I
gathered suggested:
In the HEAD tag:
    <STYLE>
        #waitPage { position: absolute; }
        #loadPage { position: absolute; visibility: hidden; }
    </STYLE>

    <SCRIPT language="JavaScript">
        function initWait () {
            if (document.layers) {
                document.layers['waitPage'].visibility = 'hide';
                document.layers['loadPage'].visibility = 'show';

            }    else if (document.all) {
                document.all['waitPage'].style.visibility = 'hidden';
                document.all['loadPage'].style.visibility = 'visible';

            } else if (document.getElementById) {
                document.getElementById('waitPage').style.visibility = 'hidden';
                document.getElementById('loadPage').style.visibility = 'visible';
            }
        }
    </SCRIPT>

In the body tag:
<BODY onload="initWait();">

Within the body...
<DIV id="waitPage">
    This is where the graphics, or Please wait... text would go
</DIV>

<DIV id="loadPage">
    This is where all the work goes (function calls, etc)
</DIV>

And that's it!!! Well, I tried this and it doesn't work. Is there
anything I'm missing? Does it matter what engine renders my JSPs
(Tomcat)? Does it matter what kind of work is being done? The type of
HTML that is built into the waiting DIV tag (for example, can I use
table tags?)?

Here is what I have in each DIV tag...

<DIV id="waitPage">
    <BR><BR><BR><BR><BR>
    <SPAN align="center">Please wait while your information is being
loaded...</SPAN>
    <BR><BR>
    <SPAN align="center"><IMG src="images/wait.gif" border="0"></
SPAN>
    <BR><BR>
</DIV>

<DIV id="loadPage">
<%
    session = request.getSession(true);
    //session time-out clause
    if ((session.isNew()) | (session.getAttribute("prop.primdb") ==
null)) {
            session.invalidate();
            response.sendRedirect("TimeOut");
            return;
    }

    //If the info has not already been loaded, go ahead and set up the
information
    if (!request.getParameter("ep").equals((String)
session.getAttribute("info.loaded"))) {
        //If it wasn't loaded, it is now...
        session.setAttribute("info.loaded", request.getParameter("ep"));

        int uid =
java.lang.Integer.parseInt(""+session.getAttribute("user.id"));
        LoadUserData lsd = new LoadUserData();

        String setList[][] = lsd.getSets();
        session.setAttribute("info.sel", setList);

        String songsList[][] = lsd.getSongs();
        session.setAttribute("info.sol", songsList);

        String concertsList[][] = lsd.getConcerts();
        session.setAttribute("info.cl", concertsList);

        String bandsList[][] = lsd.getBands();
        session.setAttribute("info.bl", bandsList);

        LogicSongStatus lss = new LogicSongsStatus();
        lss.generateSongs(session, "");

        LogicBandMap lbm = new LogicBandMap();
        lbm.generateMap(session);
    }

    if (request.getParameter("v").equals("s")) {
        response.sendRedirect("sSongs.jsp");

    } else if (request.getParameter("v").equals("m")) {
        response.sendRedirect("sMap.jsp");

    } else if (request.getParameter("v").equals("b")) {
        response.sendRedirect("sBands.jsp");
    }

%>
</DIV>

Thanks for sheding some light!

Nino
angrybaldguy@gmail.com - 31 May 2007 04:03 GMT
> Hi.
>
[quoted text clipped - 44 lines]
> HTML that is built into the waiting DIV tag (for example, can I use
> table tags?)?

JSPs are completely[1] evaluated by the server into an internal buffer
and then sent to the browser all at once.  Even if it weren't, you'd
want to call out.flush (); after your waitPage div had been output but
before the loadPage div was sent.

[1] Usually, unless it's not.  As with so much else, this is
configurable behaviour.
Nino - 31 May 2007 07:46 GMT
> > I have tried, and tried again to build a "Please wait..." loading page
> > in JSP. I have read all the posts I could find on the matter and
[quoted text clipped - 47 lines]
> want to call out.flush (); after your waitPage div had been output but
> before the loadPage div was sent.

I actually ran some more tests, and out.flush(); did nothing. It never
ended up sending anything out. I tried switching around the visibility
of the layers to no avail. Once the JSP starts doing work, the browser
just spins until it's done and then advances. No waiting screen, not
out.flush();, nothing. Any other ideas? Any reason why out.flush()
might not be working?

Nino
angrybaldguy@gmail.com - 31 May 2007 18:29 GMT
(snip "please wait"-style page)

> > > And that's it!!! Well, I tried this and it doesn't work. Is there
> > > anything I'm missing? Does it matter what engine renders my JSPs
[quoted text clipped - 13 lines]
> out.flush();, nothing. Any other ideas? Any reason why out.flush()
> might not be working?

You need to read and understand both sentences in my post.  The JSP
container, by default, isn't sending anything to the browser at all
until it finishes evaluating the page.  You may be able to change that
behaviour -- you'll need to read the container documentation (eg., for
Tomcat you'd have to read the Tomcat docs) to find out how, since it's
not covered by the Servlet spec.

As long as the servlet container is buffering the page, adding flushes
to the output generation will not help you.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.