捕获JSP输出,保存到文件

我的任务是尝试创建一个可以创建自定义HTML模板的网站。 自定义基于用户输入自定义。 我目前正在使用tomcat / JSP作为前端的其余部分。 我想要做的是在JSP中创建HTML模板以输出条件HTML代码,但我不想将此HTML输出显示给用户,我想将此代码保存到多个文件中(然后将其压缩并传送到用户,以及图像,css文件,js文件)。 我需要知道如何创建一个执行JSP文件的假容器(进程包含和评估变量)。

我读到了使用服务器filter拦截JSP代码的输出,但我不确定这是否会起作用,因为a)我需要创建几个HTML文件和b)我需要向用户显示不同的内容(即这里是你的zip文件,下载它)不是正在处理的JSP的输出。

谢谢!

这是一个想法。 创建一个servlet来接受来自用户的输入,从servlet使用java.net.HttpURLConnection将输入传递给JSP页面并获取结果。

URL urlPage = new URL(url); HttpURLConnection conn = (HttpURLConnection)urlPage.openConnection(); conn.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); //then loop through lines of webpage with br.readLine(); 

然后在您的servlet中,您可以压缩您提取的所有文件并将其返回给用户

您可以通过打开URLConnection然后将输出读入临时文件或缓冲区来调用JSP。 然后将它拉链并写出拉链。

我真的不确定我理解你的问题,但我会抓住它。 为什么不创建一个servlet并让它使用以下命令调用你的jsp文件:

 RequestDispatcher d = getServletContext().getRequestDispatcher(jspName); d.forward(request, response); 

让jsp用表格/用户输入的值显示前端。 表单完成后,提交表单。 此时,jsp将上下文返回给servlet,您可以在其中解析值,确定要创建的文件并返回给用户。 一旦确定要向用户显示的内容,将其抛入另一个jsp并将上下文传递给该jsp。

您可以通过两种方式完成此操作。 您可以为要返回的不同文件类型创建不同的jsp,只需调用正确的文件类型即可。 或者您可以将所需的任何结构/值传递到jsp中,方法是将它们嵌入到请求中,然后将它们放入jsp中。 您可以使用此事实创建单个jsp,该jsp基于传入的参数(嵌入在请求中)将显示正确的信息。

如果我完全错过了您的问题,请随时删除此回复。

编辑:无论哪种方式,您都必须在请求中嵌入您的值。

为什么不用wget? 您可以将页面加载到真实容器中,然后使用wget从容器中检索生成的页面。

 --input-file=FILE read URLs from file. 

在wget中使用此选项将从文件中获取URL列表并为您下载它们,就像文本将显示在浏览器的view-src中一样。

wget也适用于Windows和Linux。

您还可以尝试使用专门为此类工作设计的许多轻型模板引擎。 这就是我做类似任务时所做的事情,从不回头。 以Velocity为例。