0

我想知道我们是否可以将会话属性和参数从 JSP 传递到 GWT 入口点。

就像我将 Struts2 与 GWT 集成一样。

现在,我的问题是,我们可以将会话属性从 JSP 传递到 GWT 入口点吗?提前致谢。

4

3 回答 3

1

我不明白你为什么要传递会话对象,毕竟你想在里面使用它GWT Servlet而不是在里面,GWT UI对吗?

您可以通过以下方式获取 GWT Servlet 中的会话对象:

  HttpServletRequest request = this.getThreadLocalRequest();
  HTTPSession session = request.getSession();

之后,您可以使用以下方法来获取和设置会话属性:

  session.setAttribute("XXX", object);
  session.getAttribute("XXX")

编辑:

我认为没有直接的解决方案,解决方法如下:

在来自onModuleLoadGWT 的调用服务器端代码的入口点中,它将有权访问session对象。

  HttpServletRequest request = this.getThreadLocalRequest();
  HTTPSession session = request.getSession();

从 session 对象中获取你想要的属性和参数,并以 bean 的形式返回给客户端。

于 2012-04-18T07:04:00.797 回答
1

答案是 JSP + GWT Dictionary 类。

使用 JSP(而不是 html 文件)作为宿主文件,在 GWT 加载模块后随时调用 Dictionary 类。

<script>
  var info = {js object structure}; // Use Dictionary class to retrieve info.
</script>

GWT-平台登录+会话管理

在哪里存储 GWT 中的配置参数?

GWT 中的半动态常数

可以从服务器使用 GWT 属性吗?


但是将会话信息传递到入口点可能并不有利。乞求的问题是,当会话到期而 GWT 客户端仍在浏览器上时会发生什么?

我想您可以检查是否会话过时,您可以调用 window.location 来刷新 GWT 客户端。这不是一个好习惯。使用 AJAX 的原因之一是在进行客户端-服务器数据交换时不必说对不起(我的意思是,不必刷新页面)。

您应该通过JSP+Dictionary 方式将各种静态信息从服务器传递到客户端,但不能用于会话。

您的架构应该强制在会话到期时重新进行身份验证,并且会话信息应该作为标头携带(如果您使用 REST 或 RequestBuilder)或作为回调响应数据结构的一部分携带(如果使用 RPC)。

于 2012-04-19T01:34:39.523 回答
0

在我的应用程序中,我在 jsp 中使用了隐藏框:

<input type="hidden" id="dir_lat" value="<%= request.getattribute("foo") %>"/>

然后获取 gwt.application 中的值:

String foo = ((InputElement) doc.getElementById("dir_lat")).getValue() ;

于 2012-04-18T06:46:38.080 回答