我正在做一个使用 prolog 与 HTML 集成的程序,目前一直停留在理解 prolog 中的 HTTPSESSION 上,并希望创建与下面的 JSP 相同的功能。
用户输入的 HTML:
`<form action="page2.jsp" method="post">
<label>Name:</label>
<input type="text" name="patientname" placeholder="Name">
<input type="submit" value="Next">
</form>`
JSP 从 HTML 获取输入:
`<%
String name = request.getParameter("patientname");
session.setAttribute("patientname", name);
%>`
有人可以帮忙吗?我已经看过 http://www.swi-prolog.org/pldoc/man?section=httpsession 但仍然无法理解如何在 prolog 中实现代码。
会话对象特定于 JavaServer Pages 规范版本2.0,它有以下API:
公共抽象 javax.servlet.http.HttpSession getSession()
会话对象(HttpSession)的当前值。
返回:此 PageContext 的 HttpSession 或 null
因此,只要您不使用实现 JSP API 的容器,一切都可能看起来不同。 SWI-Prolog 提供了自己的容器 API,会话数据似乎保存在:
:- dynamic session_data/2.
您可以通过
http_session_XXX
谓词访问和修改。另一种方法是使用基于 Java 的 Prolog 并直接在实现 JSP API 的容器(例如 Tomcat)内运行。
后一种方法的优点是可以自由混合 Java 和 Prolog。意味着您仍然可以在 JSP 中编写动态页面,然后使用 Prolog 来完成某些任务。
后者可以在 Jekejeke Prolog 中实现,另请参阅此处的本教程,其中展示了如何开发在 Tomcat 内运行并同时使用 Java 和 Prolog 的表单 JSP 应用程序: