我想创建一个类似于page的简单的基于Web的汽车预订应用程序。在该页面中,您可以选择您的位置,目的地以及预订日期。单击下一步后,页面会将您重定向到另一个页面,您可以在其中选择所需的时间,例如this。如果您单击任何时间按钮,它将在一个页面上显示一个对象(汽车),该对象在同一页面上显示已预订或可用的座位信息。
我有一个包含唯一ID,位置,目的地,日期,时间和座位的数据库。为了像上面的示例一样显示时间,我必须首先确定位置,目的地和日期(因为不同的目的地和日期将具有不同的时间)。为了获得有关剩余可用座位数的信息,我必须确定位置,目的地,日期和时间。
在我的应用程序中,我有3个.jsp页面,我们称它为First.jsp(用户输入的位置,目的地和日期在这里)Second.jsp(用户在first.jsp中填写的信息将在此处传递,然后再次传递给Third .jsp)Third.jsp(此处为用户输入时间,数据将传递至second.jsp。整个数据将在此进行处理。数据最终将传递回Third.jsp,向用户显示席位可用信息。 / p>
问题是,我可以将数据从first.jsp传递到third.jsp很好。但是在我从third.jsp检索数据并将其传递回second.jsp之后。来自first.jsp的数据已经消失了。这使我无法在那里处理所有数据。
我的总体代码如下:
First.jsp
<form action= second.jsp method= post>
<SELECT class: drop id: location name: locationlist>
<option value = locationvalue/>
</SELECT>
<SELECT class: drop id: destination name: destinationlist>
<option value = destinationvalue/>
</SELECT>
<SELECT class: drop id: date name: datelist>
<option value = datevalue/>
</SELECT>
<input type= submit name=submitbtn/>
</form>
Second.jsp
<c:if test=(param.time is empty)>
<c:redirect url: third.jsp>
<c:param name= locationvalue value${param.locationlist>
</c:redirect>
<c:if/>
<c:if test=(param is not empty>
<s:query
SELECT id, seat FROM schedule WHERE location = 'locationlist' destination = 'destinationlist' date = 'datelist' time = 'timelist' // does not work here
</s:query>
Third.jsp
<s:query dataSource="${ds}" var="resultset">
SELECT DISTINCT time FROM schedule WHERE location = '${param.locationvalue}'
</s:query>
<form action="second.jsp" method="post">
<center>
<c:forEach items="${resultset.rows}" var="row">
<input type="submit" value="${row.time}" name="time">
</c:forEach>
</center>
</form>
答案 0 :(得分:-1)
通常,<input type="hidden">
将用于这种类型的应用程序(多步向导)。
因此,为简单起见,您可以像这样将输入从third.jsp
“转发”到second.jsp
:
<form action="second.jsp">
<input type="hidden" name="fieldname" value="value from first.jsp"/>
<!--rest of the field in this form-->
</form>
当然,从second.jsp访问它就像:
${param.field}
${fn:escapeXml(param.field)} //escape xml in el way
<c:out value="${param.field}"></c:out> //escape xml by default
另一种方法是将每个字段存储到session
对象中。只要session
中的属性不是无效的,或者应用程序没有清除/覆盖它,就将保留。
<c:set scope="request" value="${param.field}" var="field"/>
根据您的上下文,可以用不同的方式完成会话管理。