Seth
Seth

Reputation:

Write Multiple Full HTML 'Files' to Single Output Stream?

I'm writing a testing utility- I want to show multiple finished HTML "pages" in a single browser window.

Is this possible? I'm using Java Servlets.

For example, normally the user goes to a utility screen, fills in a bunch of fields and POSTS this to my servlet, which builds up a full HTML stream based on their input and writes it to HttpServletResponse.getWriter(). When the user views source, they get a <html> ... </html>.

What I want to do is allow users to request multiple "screens" and get the results in a single web page where you'd scroll down to see the 2nd, 3rd, etc. screens, maybe there is some kind of divider in between. I thought of frames or iframes, but didn't have luck. I have seen where I can write my big html stream to a javascript variable, then use document.write to dump it into the iframe. But that seems pretty awkward, and I'd have to be really careful about escaping quotes and stuff.

Upvotes: 0

Views: 1305

Answers (3)

Ickster
Ickster

Reputation: 2217

I'm not sure what you're trying with your frames, but I imagine frames should work OK for what you've described.

Instead of trying to post to more than one URL from your form, you just post to a servlet that returns a page with the frameset, and each frame has a source that points to one of the URLs you want to test. For example:

<form action="testServlet" method="post">
    <input type="text" name="someValue" />
</form>

The testServlet then returns a page with this content:

<frameset rows="33%,33%,33%">
    <frame src="testUrl1?someValue=value">
    <frame src="testUrl2?someValue=value">
    <frame src="testUrl3?someValue=value">
</frameset>

The only problem with this is that you're doing a GET instead of a POST, but that's easy to get around. All you would need do is to implement the doGet method within your servlets and just call doPost from within doGet.

Upvotes: 2

Nate
Nate

Reputation: 30636

Just leave out the <html>/</html> tags for each page and wrap the whole thing inside a single large ....

Like this maybe:

<html>

[page1Content]
<hr />
[page2Content]
<hr />
[page3Content]
<hr />

</html>

Upvotes: 1

MitMaro
MitMaro

Reputation: 5927

You will have to use iframes or frames to do this. A single web page can only contain one set of html tags and thus one html page.

Another idea would be to render the page by your script and then capture a picture of it and then have a page containing images. You will of course loose all interaction with the page.

Upvotes: 2

Related Questions