我的任务是尝试创建一个可以创建自定义HTML模板的网站。自定义基于用户输入自定义。我目前正在使用tomcat / JSP作为前端的其余部分。我想要做的是在JSP中创建HTML模板以输出条件HTML代码,但我不想将此HTML输出显示给用户,而是将此代码保存到多个文件中(然后将其压缩并传送到用户,以及图像,css文件,js文件)。我需要知道如何创建一个执行JSP文件的假容器(进程包含和评估变量)。
我读到了使用服务器过滤器拦截JSP代码的输出,但我不确定这是否有效,因为a)我需要创建几个HTML文件和b)我需要向用户显示不同的内容(即这里的你的zip文件,下载它)而不是正在处理的JSP的输出。
谢谢!
答案 0 :(得分:4)
这是一个想法。创建一个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中,您可以压缩您提取的所有文件并将其返回给用户
答案 1 :(得分:1)
您可以通过打开URLConnection然后将输出读入临时文件或缓冲区来调用JSP。然后它会拉链并写下拉链。
答案 2 :(得分:1)
我真的不确定我理解你的问题,但我会抓住它。为什么不创建一个servlet并让它使用以下命令调用你的jsp文件:
RequestDispatcher d = getServletContext().getRequestDispatcher(jspName);
d.forward(request, response);
让jsp显示表单/用户输入值的前端。表单完成后,提交表单。此时,jsp将上下文返回给servlet,您可以在其中解析值,确定要创建的文件并返回给用户。一旦确定要向用户显示的内容,将其抛入另一个jsp并将上下文传递给该jsp。
您可以通过两种方式完成此操作。您可以为要返回的不同文件类型创建不同的jsp,只需调用正确的文件类型即可。或者您可以将所需的任何结构/值传递到jsp中,方法是将它们嵌入到请求中,然后将它们放入jsp中。您可以使用此事实创建一个基于传入参数(嵌入在请求中)的单个jsp将显示正确的信息。
如果我完全错过了您的问题,请随时删除此回复。
编辑:无论哪种方式,您都必须在请求中嵌入您的值。
答案 3 :(得分:0)
为什么不使用wget?您可以将页面加载到真实容器中,然后使用wget从容器中检索生成的页面。
--input-file=FILE read URLs from file.
在wget中使用此选项将从文件中获取一个URL列表并为您下载它们,就像文本将显示在浏览器的view-src中一样。
另外wget可用于Windows和Linux。
答案 4 :(得分:0)
您还可以尝试使用专门为此类作业设计的众多光模板引擎中的一些。这就是我做类似任务时所做的事情,从未回头。例如,请查看Velocity。