2012-01-21 23 views
6

我可以在客户端存储配置参数吗?我没有可能将参数存储在Servlet初始参数(web.xml)中(因为我必须使用PHP)。那么如何在客户端存储init应用程序参数(例如PHP脚本位置,某些密码等)呢?GWT中strore config参数在哪里?

回答

4

要做到这一点,你有以下选择:

  1. 数据存储在客户端代码。 GWT编译到JavaScript,最简单的方法是创建一个带硬编码值的Configuration类。
  2. 将数据存储在浏览器中。您可以使用Cookie或HTML5 local storage
  3. 将数据存储在服务器端并使用远程RPC检索它们。

我会建议你去第三个选项。

+0

谢谢,但有些文件呢,我可以在哪里更改PHP脚本位置后编译的URL?问题与配置类不好。为了从服务器获取信息,我的应用程序需要知道服务器URL :)我不想要硬编码服务器URL,我想将它排除在某些文件中,可以在RUNTIME/ – MyTitle

+0

处读取GWT代码是java,它必须编译并且客户端没有属性文件。另一种方法是将信息存储在一些可以在运行时替换的JS文件中。 –

1

在客户端存储密码?好的,如果你想的话。只需创建一个可以容纳它们的类,可以是一个静态字段,或者是一个包含所有参数的单例对象。甚至可以是与entryPoint()

1

在客户端存储非常量参数(如密码或任何用户数据)的标准,简单和容易的方法是cookie。 见硬编码你可以存储Cookies

常量参数(在某些类的静态字段)或resoures .properties文件(See GWT i18n constants interface)。 PS:我不会推荐你在客户端按原样存储密码(这是不安全的),而是你可以存储密码哈希(例如md5)。只需在服务器端计算密码哈希并将此哈希存储在Cookie中。

2

你可能会很高兴在GWT中使用Dictionary和Cookie类。

在您的html托管文件中,您维护一些声明为var的javascript对象。

在模块加载时,调用Dictionary类来获取您定义的用于存储配置数据的javascript对象。

通过这种方式,您可以让服务器端管理用户或上下文相关的配置,因为偶尔会使用JSP来生成托管文件。我可以将用户配置作为服务器端Cookie存储在数据库中进行管理。

所以...今天是星期四...该用户具有访问曼彻斯特联队的网站每星期四,等的历史,让我给用户基于上下文/用户敏感的算法不同的配置。周一早上,用户配置将包含10小时能量饮料的广告数据。

这样,你的GWT的客户将不必从服务器请求上下文敏感的配置数据。

但当然,这是没有办法存储认证/安全数据,如密码。我认为你甚至不应该考虑在客户端代码中存储认证/安全数据。即使在javascript混淆之后,以这种方式存储这样的数据也是一个公开的邀请来持续恶意的意图。这样的数据,如果客户端存储需要,将通过客户端Cookie来提供最好的服务,使用GWT类饼干。