如何从Apache Velocity中的.vm文件获取整个HTML?

ASi*_*ngh 2 html javascript velocity

感谢您对我的用例的帮助.我有一个Servlet,它在Apache Velocity模板(.vm)文件中使用javascript呈现一些信息.

现在,在我将此模板返回到浏览器之前,我想将整个HTML存储到我需要从.vm模板访问整个HTML的本地文件系统中.我坚持做最后一步.

Ser*_*riu 8

Web应用程序是client⟷server应用程序,这意味着客户端(即您的浏览器)与Web服务器之间存在明显的分离.您在浏览器中看到的服务器和HTML之间没有直接连接.

尝试可视化过程:

  1. 用户尝试打开网页,因此浏览器会向服务器发送HTTP请求.
  2. 服务器处理所请求的URL,并确定它应该转到处理速度模板的servlet,并标识.vm应该用于呈现响应的文件.
  3. .vm文件由服务器上的servlet读取,并呈现为HTML的字符串表示形式.
  4. HTML将在HTTP响应中发送到客户端.从现在开始,服务器与该HTML没有任何关联.
  5. 浏览器从响应中读取HTML,解析它并显示它.
  6. 与该HTML相关联的JavaScript资源也从服务器获取,解析并执行(在客户端浏览器中).

Velocity模板(或服务器上的任何其他代码)无法访问现在在浏览器中的HTML,除非浏览器在另一个请求中明确地将其发送回服务器.

你能做的是:

  1. 编写另一段侦听click事件的JavaScript代码.
  2. JS从目标元素中获取序列化的HTML,类似于 var html = document.getElementById('id_of_the_element').innerHTML;
  3. JS XMLHttpRequest使用来自浏览器的原始XHR支持或您选择的JS框架将此字符串发送到服务器.
  4. 在服务器上,您编写另一个servlet(或扩展现有servlet的功能),该servlet接收此HTML并根据需要对其进行处理.

  • 你什么意思?_event_是浏览器发送的同步通知或信号......它们不以任何方式成为HTML的一部分. (2认同)