【问题标题】:is it possible to share session variables between servlets/jsp and javascript functions?是否可以在 servlet/jsp 和 javascript 函数之间共享会话变量?
【发布时间】:2011-10-03 13:08:56
【问题描述】:

我有一种情况,必须尽可能轻松地填写表格。表单中要填写的值,最初是从用户那里询问并存储在数据库中的。

之后,当用户点击一个按钮时,会调用一个 javascript 函数,该函数会使用 jsp/servlet 获得的值自动填充表单中的所有字段。

我想在 servlet/jsp 的帮助下从数据库中检索值(要填写到表单中)......现在应该有一些方法让 javascript 函数填写这个值(那是通过 servlet/jsp 获得)转化为形式...

是否可以在 jsp/servlet 和 javascript 函数之间共享数据/变量? javascript 函数将成为 jsp 的一部分(检索应在表单中填写的值)。

【问题讨论】:

    标签: javascript jsp servlets


    【解决方案1】:

    如果请求是同步发送的(例如表单提交按钮),那么您不一定需要 JS 来完成这项工作。只需让 JSP/EL 立即将它们打印为基于 servlet 预填充的数据的输入值。例如,假设${user} 是一个典型的由 servlet 准备的 Javabean:

    <input type="text" name="name" value="${fn:escapeXml(user.name)}" />
    <input type="text" name="city" value="${fn:escapeXml(user.city)}" />
    <input type="text" name="country" value="${fn:escapeXml(user.country)}" />
    

    fn:escapeXml() 只是为了防止 XSS 攻击)

    如果请求是异步发送的(例如使用ajax),那么您只需要让servlet以JS易于解析的格式返回数据,例如JSON。

    {
        "username": "Bauke Scholtz",
        "city": "Willemstad",
        "country": "Curaçao"
    }
    

    然后您可以在 ajax 响应回调函数中使用如下(其中user 是获取的 JSON 对象):

    document.getElementById("name").value = user.name;
    document.getElementById("city").value = user.city;
    document.getElementById("country").value = user.country;
    

    jQuery 让这样的事情变得更容易。另见How to use Servlets and Ajax?

    【讨论】:

      【解决方案2】:

      浏览器中的 Javascript 客户端无法直接访问服务器上的环境(不应该 - 想象一下,如果在您决定使用不同的服务器解决方案的那一天所有页面都崩溃了,那将是多么糟糕)。你基本上有两种选择:

      • 在您提供给客户的页面上包含您将需要的所有数据(可能会动态生成 html 表单以满足您的需求等)

      • 通过 XMLHttpRequest(又名 AJAX)手动请求额外信息。如果您只能在页面加载后动态确定需要哪些数据,这是唯一的方法。

      【讨论】:

        【解决方案3】:

        您可以使用 xmlhttprequest 动态访问您的数据库。 如需更多信息 + 相关示例,请阅读: http://www.w3schools.com/ajax/ajax_aspphp.asp

        【讨论】:

          猜你喜欢
          • 2011-11-07
          • 2019-12-24
          • 2011-08-16
          • 1970-01-01
          • 2011-12-20
          • 2011-06-25
          • 2014-02-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多