是否可以在servlets / jsp和javascript函数之间共享会话变量?

时间:2011-10-03 13:08:56

标签: javascript jsp servlets

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

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

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

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

3 个答案:

答案 0 :(得分:1)

浏览器中的Javascript客户端无法直接访问服务器上的环境(并且不应该 - 想象如果所有页面都打破了您决定使用不同服务器解决方案的那一天会有多糟糕)。你基本上有两个选择:

  • 在您向客户提供的页面上包含您需要的所有数据(可能是html格式为了满足您的需求而生成,等等)

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

答案 1 :(得分: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 :(得分:0)

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