将多个完整的HTML'文件'写入单个输出流?

时间:2009-07-08 18:47:25

标签: java html servlets

我正在编写测试实用程序 - 我想在一个浏览器窗口中显示多个已完成的HTML“页面”。

这可能吗?我正在使用Java Servlets。

例如,通常用户进入实用程序屏幕,填写一堆字段并将其发送到我的servlet,后者根据输入构建完整的HTML流并将其写入HttpServletResponse.getWriter()。当用户查看来源时,他们会获得<html> ... </html>

我想要做的是允许用户请求多个“屏幕”并将结果放在一个网页中,您可以向下滚动以查看第二,第三等屏幕,也许有某种分隔符之间。我想到了帧或iframe,但没有运气。我已经看到我可以将我的大html流写入javascript变量,然后使用document.write将其转储到iframe中。但这看起来很尴尬,而且我必须非常小心逃避引号和内容。

3 个答案:

答案 0 :(得分:2)

您必须使用iframe或框架才能执行此操作。单个网页只能包含一组html标签,因此只能包含一个html页面。

另一个想法是通过脚本呈现页面,然后捕获它的图片,然后有一个包含图像的页面。您当然会放弃与页面的所有交互。

答案 1 :(得分:2)

我不确定你在尝试使用你的画面,但我认为画面应该可以用于你描述的内容。

您不必尝试从表单发布到多个URL,而只是发布到返回带有框架集的页面的servlet,并且每个框架都有一个指向您要测试的URL之一的源。例如:

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

testServlet然后返回包含此内容的页面:

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

唯一的问题是你正在做GET而不是POST,但这很容易解决。您所需要做的就是在servlet中实现doGet方法,然后从doPost内调用doGet

答案 2 :(得分:1)

请忽略每个页面的<html>/</html>标记,并将整个内容包装在一个大的内容中....

喜欢这样:

<html>

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

</html>