gpt4 book ai didi

javascript - 每当您返回使用 javascript 或 jsf 的页面时,如何在 jsp 页面上维护复选框状态,而不将其存储到数据库中

转载 作者:行者123 更新时间:2023-12-02 14:18:21 24 4
gpt4 key购买 nike

每当我从其他页面返回时,我希望检查所有复选框,我想使用 JavaScript 跨页面维护它们的状态。

最佳答案

我认为您是在问如何在请求之间存储单个 session 的状态。在本例中,该状态是复选框值。

您首先需要做出选择:要将数据存储在客户端(浏览器中)还是服务器上?

服务器端

您可以在有或没有“数据库”的情况下将此状态存储在服务器端,具体取决于您对该术语的迂腐程度。

如果您想要避免配置 SQL RDBMS,您可能会发现大多数 Java Servlet 容器的内置存储选项都可以工作。在 Tomcat 中,您可以像平常一样使用 Session 对象,但配置“基于文件的存储”而不是“基于 JDBC 的存储”。这会将 session 数据存储到磁盘文件中。或者,您可以使用 StandardManager,它使用内存存储,但不会在重新启动时保留 session 状态。

简单地说,这些将为服务器发出的每个 JSESSIONID 创建一个 Java 映射,然后将映射保存在内存、磁盘或 JDBC 数据库中。欲了解更多信息,请参阅:https://tomcat.apache.org/tomcat-7.0-doc/config/manager.html

客户端

在这里您还有一些选择。驱动因素是您希望支持什么级别的浏览器。如果您可以容忍将您的用户限制为使用 HTML5 web storage 浏览器的用户并且启用了 JavaScript,事情就非常简单了。如果没有,您可以使用 cookie 完成同样的事情。

客户端存储的最大缺点是信任。用户(或其计算机上的软件)可以修改客户端存储。这适用于 cookie、localStorage 和 sessionStorage。许多开发人员忘记了这一点并因此引入了安全漏洞。如果这是一个真正的生产 Web 应用程序,您需要将您的状态包装在身份验证器中。

这是一个the first在一个由三篇文章组成的系列中,介绍了如何说服您的 servlet 容器以对您的 servlet 透明的方式将 session 状态放入 cookie。它缺少身份验证,但您可以按照 this bit from Rob Winch 等指南添加它。 .

现在怎么办?

好的。您已决定使用客户端或服务器端存储来存储复选框值。现在怎么办?

一个简单的(通常是错误的)选项是将复选框输入名称和值存储在 map 中:

{"boxFoo": true,"BarBox":false}

这通常是错误的原因是它无法区分您的用户正在访问哪种表单。这意味着,如果您将此策略应用于网站上的多个表单,则必须担心名称冲突。

下一步的发展是拥有一个由表单名称和字段名称作为键控的结构。这将是一个如下所示的 map :

{ "formA": {"boxFoo": true,"BarBox":false},
"formQ": {"checkAlpha":true,"BetaCheck":false } }

这可行,但会有 annoying behavior当您的用户使用多个选项卡时。您可以通过使用每个选项卡标识符(以 session 对象中的空间为代价)或使用 AJAX 保持字段同步(这有其自身的危险)来使用户的行为更加可预测。或者,您可以做大多数人所做的事情,只是假设最后提交的表单会覆盖所有先前表单的状态,选项卡该死。这编码起来更简单,但对用户来说更烦人。

关于javascript - 每当您返回使用 javascript 或 jsf 的页面时,如何在 jsp 页面上维护复选框状态,而不将其存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38865814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com