我有一个Web表单(JSP),它将数据提交给托管在不同服务器上的不同应用程序。提交表单数据后,该应用程序将重定向回相同的JSP页面。现在,我想保存输入的数据。以网页形式保留提交的数据有哪些不同的方法。我不希望将数据存储在数据库或任何文件中。 PS:我想保留提交的表单数据,当请求再次被重定向到相同的JSP页面时。因此,用户不需要重新输入数据。就像数据可以存储在会话或请求中一样。保留提交的JSP表单数据
回答
在JSP中,通常使用javabean来存储表单值,然后使用jsp:useBean标记来处理这种事情。例如,您将创建以下的JavaBean:
package com.mycompany;
public class FormBean {
private String var1;
private String var2;
public void setVar1(String var) { this.var1 = var; }
public String getVar1() { return this.var1; }
public void setVar2(String var) { this.var2 = var; }
public String getVar2() { return this.var2; }
}
在您的表单JSP你使用useBean标签和表单字段的值会从bean获得它们的值:
<jsp:useBean id="formBean" class="com.mycompany.FormBean" scope="session"/>
...
...
<input type="text" name="var1" value="<%=formBean.getVar1()%>" />
在你的JSP表单数据被发布到(然后重定向回来),你会有下面的代码将发布的表单数据推送到bean中。
<jsp:useBean id="formBean" class="com.mycompany.FormBean" scope="session"/>
<jsp:setProperty name="formBean" property="*"/>
另一种选择是只是形式的数据塞进会议在保存网页:
String var1 = request.getParameter("var1");
String var2 = request.getParameter("var2");
session.setAttribute("var1", val1);
session.setAttribute("var2", val2);
...
,并在表单中引用它(检查省略空):
<input type="text" name="var1" value="<%= session.getAttribute("var1") %>" />
最好你可以做的就是提交给你自己的servlet,然后在java.net.URLConnection
的帮助下向外部web应用程序发出另一个请求。最后,在相同的请求中回发到结果页面,以便您可以通过EL访问请求参数。有一个隐含的EL变量${param}
,它允许您访问请求参数,如Map
,其中参数名称是关键字。
<form action="myservlet" method="post">
<input type="text" name="foo">
<input type="text" name="bar">
<input type="submit">
</form>
,并大致有以下的servlet方法
所以
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
String foo = request.getParameter("foo");
String bar = request.getParameter("bar");
String url = "http://external.com/someapp";
String charset = "UTF-8";
String query = String.format("foo=%s&bar=%s", URLEncoder.encode(foo, charset), URLEncoder.encode(bar, charset));
URLConnection connection = new URL(url).openConnection();
connection.setUseCaches(false);
connection.setDoOutput(true); // Triggers POST.
connection.setRequestProperty("accept-charset", charset);
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=" + charset);
try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), charset)) {
writer.write(query);
}
InputStream result = connection.getInputStream();
// Do something with result here? Check if it returned OK response?
// Now forward to the JSP.
request.getRequestDispatcher("result.jsp").forward(request, response);
}
你应该能够访问result.jsp
输入如下
<p>Foo: <c:out value="${param.foo}" /></p>
<p>Bar: <c:out value="${param.bar}" /></p>
就这么简单那。无需jsp:useBean
和/或令人讨厌的scriptlet。
当它直接使用它时,它会把它放在这个标签中
如果我正确地理解了这个问题(大“如果”那里),你有一个FORM的方法是POST和一个直接指向远程服务器的ACTION。当用户单击“提交”时,浏览器不涉及您的主机在该交易中,数据将转到“ACTION”收件人。这将使您的选项受限于实现与远程服务的回调关系(可能无法控制),设置本地代理servlet来拦截数据并将POST转发给它的预期收件人(这将使POST始发于服务器而不是客户端(这可能会导致问题)),或者利用一些AJAX设计模式将表单数据发送到两个位置,而不是FORM标签指定的一个位置。
除此之外,您需要拥有某种形式的本地持久性,如数据库或文件。
我有帮助吗?
- 1. 3次提交的表单;如何保留最终提交的数据?
- 2. 提交后保留表单数据 - 多个选定的值
- 3. 在django上提交表单并提交错误后,保留字段的数据
- 4. 将表单提交给Servlet后,如何在JSP中保留HTML表单域值?
- 5. 在php提交后保留表单值
- 6. 提交表单并保留值设置
- 7. 表单提交多个文件不保留数据
- 8. 通过多个表单提交保留数据
- 9. 表单数据提交后是否保留?
- 10. Django提交多个表单并在提交后保留字段数据输入
- 11. 在提交第二个表单时保留一个表单的编辑数据
- 12. 如何在提交后保留jsp下拉列表中的值
- 13. jQuery Mobile:提交后保留数据
- 14. 未提交JQuery/JSP表单
- 15. JSP - 检查表单提交
- 16. 表格提交后保留URL参数
- 17. Vue js - 保留表格上的数据值提交
- 18. PHP在提交表单失败后保留表单信息
- 19. 提交表单后保留动态表单域值
- 20. 防止表单提交但保留表单验证
- 21. 未能提交表单数据提交
- 22. 提交表单时,保留PHP创建的下拉菜单值
- 23. Symfony2 - 提交表单时如何保留请求参数?
- 24. 通过表单提交通过ajax jQuery保存数据表单提交
- 25. Angularjs保留表单上的数据提交到其他页面使用
- 26. 如何在点击提交后在html表单中保留输入的数据
- 27. javascript在表单提交后保留列表中的选定值
- 28. 用JSON提交的JSP表单
- 29. 未提交表单值的JSP Portlet
- 30. 提交表单数据?
一个问题:如果既没有数据库也没有涉及任何文件,您如何建议“保存提交的数据”? – duffymo 2009-06-28 17:24:48