Web services 在web应用程序中存储变量
问题是关于使用Jersey/JAX-RS的web应用程序 在下面的代码中,我希望每个用户都有自己的变量x实例,这样他就可以将其设置为一个新值,然后检索该新值。现在,该值未被存储 (似乎有必要将变量存储在Java中,而不是HTTP会话中,因为我想对另一个不能存储在HTTP会话中的类实例执行相同的操作。) 代码示例: @路径(“/”) 公共类Web实现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
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,但它不会自动出现。