Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在浏览器中存储变量(最好是字符串)';使用GWT的s缓存?_Java_Caching_Gwt_Global Variables - Fatal编程技术网

Java 是否可以在浏览器中存储变量(最好是字符串)';使用GWT的s缓存?

Java 是否可以在浏览器中存储变量(最好是字符串)';使用GWT的s缓存?,java,caching,gwt,global-variables,Java,Caching,Gwt,Global Variables,我一遍又一遍地搜索Google,但我找不到任何关于在缓存中存储变量的信息。我所看到的与这件事有关的任何事情看起来都非常复杂,没有得到很好的解释。我正在使用GWT设计一个非常简单的登录系统,它使用一个文本文件编辑用户行,根据用户分别登录还是注销,添加true或false 问题是,当用户刷新窗口时,他们没有注销(因为我不希望他们注销),但应用程序丢失了当前用户变量,因此看起来他们已注销。我想缓存当前用户的用户名,直到他们注销,以便允许用户刷新/关闭选项卡并仍然登录。我正在寻找一个相当深入的解释,因为

我一遍又一遍地搜索Google,但我找不到任何关于在缓存中存储变量的信息。我所看到的与这件事有关的任何事情看起来都非常复杂,没有得到很好的解释。我正在使用GWT设计一个非常简单的登录系统,它使用一个文本文件编辑用户行,根据用户分别登录还是注销,添加true或false


问题是,当用户刷新窗口时,他们没有注销(因为我不希望他们注销),但应用程序丢失了当前用户变量,因此看起来他们已注销。我想缓存当前用户的用户名,直到他们注销,以便允许用户刷新/关闭选项卡并仍然登录。我正在寻找一个相当深入的解释,因为我以前很少/没有缓存方面的经验!如果这个问题看起来很愚蠢或者无法解决,请告诉我

GWT不提供任何在浏览器中存储值的选项,但您可以使用“cookie”在浏览器中存储数据。GWT将帮助您在浏览器上创建和维护cookie。如果您计划在浏览器上存储更多数据,请使用HTML5功能


也是在浏览器上存储数据的选项

您可以将数据存储在用户会话中,并通过RCP从服务器onModuleLoad()获取数据(或在需要时获取数据)。从安全角度来看,在客户端上存储登录状态是一个坏主意,因为他可以将其更改为“已登录”。

设置Cookies比这里描述的要简单得多!我给你举个例子:

    //set a cookie
    final TextBox t1 = new TextBox();
    RootPanel.get().add(t1);
    final TextBox t2 = new TextBox();
    RootPanel.get().add(t2);

    Button b1 = new Button("safe cookie");
    b1.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // a cookie which expires after one week
            Date now = new Date();
            long nowLong = now.getTime();
            nowLong = nowLong + (1000 * 60 * 60 * 24 * 7);// seven days
            now.setTime(nowLong);
            Cookies.setCookie(t1.getText(), t2.getText(), now);
            //if the time isn't set it expires after the tab closes

        }
    });
    RootPanel.get().add(b1);

    //get a cookie
    final TextBox t3 = new TextBox();
    RootPanel.get().add(t3);
    Button b2 = new Button("get cookie by name");
    b2.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            Window.alert(Cookies.getCookie(t3.getText()));

        }
    });
    RootPanel.get().add(b2);

资料来源:,

HTML5是我能找到的最好、最简单的解决方案

我使用了可以在Eclipse中找到的GWT存储API,它非常简单。如果其他人想做类似的事情,我在提供的链接中解释了一切。

,所以我不认为这是一个非常令人信服的选择。最好看看Cookie或Web存储。