Web services 在web应用程序中存储变量

Web services 在web应用程序中存储变量,web-services,rest,jersey,Web Services,Rest,Jersey,问题是关于使用Jersey/JAX-RS的web应用程序 在下面的代码中,我希望每个用户都有自己的变量x实例,这样他就可以将其设置为一个新值,然后检索该新值。现在,该值未被存储 (似乎有必要将变量存储在Java中,而不是HTTP会话中,因为我想对另一个不能存储在HTTP会话中的类实例执行相同的操作。) 代码示例: @路径(“/”) 公共类Web实现Web_接口{ private int x = 9; public Response getValue() { Gson gson = ne

问题是关于使用Jersey/JAX-RS的web应用程序

在下面的代码中,我希望每个用户都有自己的变量x实例,这样他就可以将其设置为一个新值,然后检索该新值。现在,该值未被存储

(似乎有必要将变量存储在Java中,而不是HTTP会话中,因为我想对另一个不能存储在HTTP会话中的类实例执行相同的操作。)

代码示例:

@路径(“/”) 公共类Web实现Web_接口{

private int x = 9;

public Response getValue() {
    Gson gson = new Gson();
    String gsonString = gson.toJson("X = " + x);
    return Response
            .ok(gsonString)
            .build();
}

public Response setValue(int newX) {
    x = newX;
    Gson gson = new Gson();
    String gsonString = gson.toJson("X was set to " + newX);
    return Response
            .ok(gsonString)
            .build();
}

}

当您使用HTTP时,首先需要明确HTTP是无状态的

调用setValue()时,它会设置一个值


但当您调用getValue()时,会创建新会话,因此会刷新旧值。

Jersey没有会话。rest协议是无状态的。现在还不清楚你的问题是什么,但是如果你想把一个变量和一个用户联系起来并允许他们修改它,你有三个选择

1) 忽略rest协议是无状态的,并在jersey中连接httpsession(默认情况下它不在jersey中,但可以这样做,您必须通过将会话附加到上下文并自己获取它来使其工作)

2) 把它放在饼干里


3) 将它放入某种类型的数据库中,然后为用户检索它(您必须使用cookie或某种身份验证来识别您的用户)

正如我所说,您可以连接httpsession,但它不会自动出现。