Igo*_*rov 4 java session gwt gwt-platform gwtp
我是gwt的新手,我正在使用gwt创建一个登录页面,我需要有关会话管理的帮助.
这里已经给出了所有答案,解释了如何在服务器端管理会话,我需要在客户端使用会话(浏览器会话),就像使用JSP文件一样:
session.setAttribute("UserName", username);
任何人都可以提供一个明确的完整示例来说明如何实现这一点(请记住我是gwt的新手).我查看了本教程:http: //code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ 这对我没有帮助,因为它没有解释如何使用浏览器的会话.
谢谢.
"我需要使用在客户端的会话(浏览器会话),酷似与JSP文件:session.setAttribute("用户名"用户名);"
我想纠正你的错误观念.以下不是浏览器端代码而不是浏览器端会话.它是服务器端代码,管理服务器端会话信息.
session.setAttribute("UserName", username);
Run Code Online (Sandbox Code Playgroud)
您可以将此服务器端会话信息传输到JSP中的客户端,例如:
<script>
var username = "<%=username%>";
</script>
Run Code Online (Sandbox Code Playgroud)
要么,
<script>
var username = '<%=session.getAttribute("UserName")%>';
</script>
Run Code Online (Sandbox Code Playgroud)
作为一名经验丰富的JSP程序员,您将意识到HTML/Javascript(由JSP生成)与JSP本身之间的脱钩.对于您在JSP中遇到的限制是您转向GWT的原因.
JSP生成的客户端和GWT生成的客户端之间的相似之处
偶尔(可能经常)程序员将服务器端代码误认为是客户端代码,反之亦然.就像你做的那样.
两者都生成发送到客户端以执行的javascript和HTML元素.
无论您使用JSP生成的javascript无法做什么,GWT客户端Java源同样无法完成.
无论JSP生成的客户端代码需要做什么,也需要通过GWT客户端代码来完成.
您可以在HTTP标头,POST或GET参数中嵌入会话信息.
您需要客户端维护会话信息,主要是以cookie的形式.
在某些情况下,jsessionid cookie不是由服务器的响应设置的.
您的servlet或其容器可以为JSESSIONID生成http set-cookie标头.
servlet可以控制何时创建cookie头 - 由于request.getSession().
.
JSP生成的客户端和GWT生成的客户端之间的区别
每个请求/响应刷新JSP生成的客户端.因此,您可以为每个请求/响应在客户端和服务器之间传输更改和数据.
GWT生成的客户端对客户端是持久的,不会刷新.正因为这个原因,你转向GWT.
这种刷新差异对于理解GWT编码的差异非常重要.
JSP中的所有Java代码都是服务器端代码.在JSP中,没有用Java编写的客户端代码.甚至用于生成HTML/javascript的Java代码也是服务器端代码.
所有客户端Java代码都被翻译/编译为Javascript.所以GWT Java代码实际上是"编译器端"代码.
.
GWT中客户端 - 服务器之间的通信方式
不要忘记使用Dictionary类客户端代码将静态设置传输到主机文件中定义的Javascript对象的GWT应用程序.您可以将javascript对象设置为vars,并在加载gwt模块后由Dictionary类读取它们.
不要忘记您可以使用JSP生成GWT托管文件 - 这样您就可以创建不同的词典阅读所提供的不同行为,您可以为每次调用应用程序进行个性化.
但是,您不应将会话ID或身份验证信息放在托管文件上.因为即使由JSP动态生成,它在持久性GWT客户端上实际上是静态的.
您可以使用Window.Location.reload()来不必要地刷新GWT客户端,以防您仍然喜欢JSP的刷新效果.
GWT-RPC
RequestBuilder
RequestFactory
REST和REST-RPC
脚本包括(用于跨越SLD-SOP边界)
由于技术的异步性,所有客户端 - 服务器通信都要求GWT客户端提供回调.
请查看http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/http/client/RequestBuilder.html(或在您的GWT javadoc个人副本中查看) .
...您可以在其中定义set和get标头.您的服务器端必须同意客户端使用的标头名称.
您不需要依赖传统的JEE会话来"维护会话".您可以设计自己的令牌框架.或者使用现有的,如OAuth或OpenId.
在各种条件下,您不会在服务器的响应中设置会话cookie.
在某些情况下,您可能需要在编写GWT应用程序时完全放弃使用传统的JEE会话.
你应该考虑使用REST或REST-RPC,因为我试图在它中记录它(以蜗牛的速度):http://h2g2java.blessedgeek.com/2011/11/gwt-with-jax-rs-aka-rpcrest- part-0.html.
REST不要求您维护会话cookie.在我看来,GWT最适合REST-RPC.
您可以浏览之前的帖子,其中有关于GWT的其他形式的客户端 - 服务器通信的解释.
如果您的意思是在客户端控制HttpSession的实例,那么您无法在客户端控制会话,因为它位于服务器端.要控制会话,您必须使用异步回调或其他技术调用服务器端.阅读本教程:在GWT中与服务器通信 在服务器端实现中,您可以将任何属性设置为会话
HttpSession session = this.getThreadLocalRequest().getSession();
session.setAttribute("UserName", userName);
Run Code Online (Sandbox Code Playgroud)
或者,如果您指的是客户端Web会话,则可以使用Cookie控制它们.
| 归档时间: |
|
| 查看次数: |
8038 次 |
| 最近记录: |