加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex中的Session管理

发布时间:2020-12-15 04:25:18 所属栏目:百科 来源:网络整理
导读:? ? Session是Jsp 9大内置对象之一,但是在Flex中却没有这一概念。曾经看过一本叫《Flex 企业应用开发实战》书,里面讲述了一点利用Session增加控制权限的问题。本人也尝试着做了一个小demo. ? ? ? ? ? ?Flex中实现session的一个类是FlexContext类,他将sess
? ? Session是Jsp 9大内置对象之一,但是在Flex中却没有这一概念。曾经看过一本叫《Flex 企业应用开发实战》书,里面讲述了一点利用Session增加控制权限的问题。本人也尝试着做了一个小demo.


? ? ? ? ? ?Flex中实现session的一个类是FlexContext类,他将session保存在服务端。


? ? ? ? ? ?新建一个java类FlexSession.java,里面写了各种存贮、获取、清除Session的方法:

?

[java] view plain copy print ?
  1. package?com.ldfsoft.util;??
  2. ???
  3. import?flex.messaging.FlexContext;??
  4. ???
  5. public?class?FlexSession?{??
  6. ?????
  7. ???????/**?
  8. ????????*?保存Session?
  9. ????????*?@param?name?
  10. ????????*?@param?value?
  11. ????????*/??
  12. ???????public?void?setSession(String?name,String?value){??
  13. ???????????FlexContext.getFlexSession().setAttribute(name,value);??
  14. ???????}??
  15. ????????
  16. ???????/**?
  17. ????????*?获取?Session?
  18. ????????*/??
  19. ???????public?String?getSession(String?name){??
  20. ???????????String?value=(String)?FlexContext.getFlexSession().getAttribute(name);??
  21. ???????????return?value;??
  22. ???????}??
  23. ???????/**?
  24. ????????*?清除Session?
  25. ????????*?@param?name?
  26. ????????*/??
  27. ???????public?void?removeSession(String?name){??
  28. ???????????FlexContext.getFlexSession().removeAttribute(name);??
  29. ???????}??
  30. ????????
  31. }??


?

? ? ? ?然后将此类在flex配置文件中配置一下,这个就不说了。


? ? ? ?新建一个mxml文件Login.mxml,代码如下所示:


[html] view plain copy print ?
  1. <?xmlversionxmlversion="1.0"?encoding="utf-8"?>??
  2. <s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"??
  3. ??????????????xmlns:s="library://ns.adobe.com/flex/spark"??
  4. ??????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="955"?minHeight="600"?>??
  5. ?????
  6. ????<fx:Script>??
  7. ???????<![CDATA[?
  8. ???????????import?flash.net.navigateToURL;?
  9. ???????????import?mx.controls.Alert;?
  10. ???????????import?mx.events.FlexEvent;?
  11. ???????????import?mx.rpc.events.FaultEvent;?
  12. ???????????import?mx.rpc.events.ResultEvent;?
  13. ???????????
  14. ???????????protected?function?login_clickHandler(event:MouseEvent):void?
  15. ???????????{?
  16. ??????????????//?TODOAuto-generated?method?stub?
  17. ??????????????var?userName:String=username.text;?
  18. ??????????????var?passWorld:String=passworld.text;?
  19. ??????????????if(userName!=""&&passWorld!=""){?
  20. ??????????????????//保存Session?
  21. ??????????????????sessionManage.setSession("account",userName);?
  22. ??????????????}else{?
  23. ??????????????????Alert.show("用户名与密码不能为空!","提示");?
  24. ??????????????}?
  25. ???????????}?
  26. ???????????
  27. ???????????protected?function?sessionManage_faultHandler(event:FaultEvent):void?
  28. ???????????{?
  29. ??????????????//?TODOAuto-generated?method?stub?
  30. ??????????????Alert.show(event.fault.message,"出错了");?
  31. ???????????}?
  32. ???????????
  33. ???????????protected?function?sessionManage_resultHandler(event:ResultEvent):void?
  34. ???????????{?
  35. ??????????????//?TODOAuto-generated?method?stub?
  36. ??????????????forwPage();?
  37. ???????????}?
  38. ??
  39. ???????????private?function?forwPage():void{?
  40. ??????????????var?url:URLRequest=new?URLRequest("http://localhost:9080/red5Flex/swf/welcome.html");?
  41. ??????????????navigateToURL(url,"_self");?
  42. ???????????}?
  43. ???????]]>??
  44. ????</fx:Script>??
  45. ????<fx:Declarations>??
  46. ???????<!--?Place?non-visualelements?(e.g.,?services,?value?objects)?here?-->??
  47. ???????<s:RemoteObject?id="sessionManage"?destination="sessionManage"?endpoint="../messagebroker/amf"?fault="sessionManage_faultHandler(event)">??
  48. ???????????<s:method?name="setSession"result="sessionManage_resultHandler(event)"?/>??
  49. ???????</s:RemoteObject>??
  50. ????</fx:Declarations>??
  51. ????<s:Panel?x="242"?y="107"?width="549"?height="367"?title="请登陆"?fontSize="16">??
  52. ???????<s:Label?x="99"?y="106"?text="用户名:"/>??
  53. ???????<s:Label?x="100"?y="175"?text="密码:"/>??
  54. ???????<s:TextInput?x="179"?y="106"?id="username"/>??
  55. ???????<s:TextInput?x="180"?y="175"?id="passworld"?displayAsPassword="true"?/>??
  56. ???????<s:Button?x="409"?y="130"?height="48"?id="login"?label="登陆"click="login_clickHandler(event)"/>??
  57. ????</s:Panel>??
  58. ?????
  59. </s:Application>??


?

? ? ? ? ? ?这个文件是一个登陆界面,登陆中将用户信息保存在服务端的Session里。

?

? ? ? ? ? ?接着新建一个mxml文件welcome.mxml,代码如下所示:


[html] view plain copy print ?
  1. <?xmlversionxmlversion="1.0"?encoding="utf-8"?>??
  2. <s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"??
  3. ??????????????xmlns:s="library://ns.adobe.com/flex/spark"??
  4. ??????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="955"?minHeight="600"applicationComplete="app_applicationCompleteHandler(event)">??
  5. ????<fx:Script>??
  6. ???????<![CDATA[?
  7. ???????????import?mx.controls.Alert;?
  8. ???????????import?mx.events.FlexEvent;?
  9. ???????????import?mx.rpc.events.FaultEvent;?
  10. ???????????import?mx.rpc.events.ResultEvent;?
  11. ???????????[Bindable]private?var?account:String="";?
  12. ???????????protected?function?app_applicationCompleteHandler(event:FlexEvent):void?
  13. ???????????{?
  14. ??????????????//?TODOAuto-generated?method?stub?
  15. ??????????????//获取session?
  16. ??????????????sessionManage.getSession("account");?
  17. ???????????}?
  18. ???????????
  19. ???????????protected?function?sessionManage_resultHandler(event:ResultEvent):void?
  20. ???????????{?
  21. ??????????????//注意获得Session的方式?
  22. ??????????????account=event.result?as?String;?
  23. ??????????????message.text=account+",欢迎您归来..."?
  24. ???????????}?
  25. ???????????
  26. ???????????protected?function?sessionManage_faultHandler(event:FaultEvent):void?
  27. ???????????{?
  28. ??????????????//?TODOAuto-generated?method?stub?
  29. ??????????????Alert.show("获取session失败...","提示");?
  30. ???????????}?
  31. ???????????
  32. ???????????protected?function?exist_clickHandler(event:MouseEvent):void?
  33. ???????????{?
  34. ??????????????//?TODOAuto-generated?method?stub?
  35. ??????????????//清除session?
  36. ??????????????sessionManage.removeSession("account");?
  37. ??????????????var?url:URLRequest=new?URLRequest("http://localhost:9080/red5Flex/swf/Login.html");?
  38. ??????????????navigateToURL(url,"_self");?
  39. ???????????}?
  40. ???????????
  41. ???????]]>??
  42. ????</fx:Script>??
  43. ????<fx:Declarations>??
  44. ???????<!--?Place?non-visualelements?(e.g.,?value?objects)?here?-->??
  45. ???????<s:RemoteObject?id="sessionManage"?destination="sessionManage"?endpoint="../messagebroker/amf"?result="sessionManage_resultHandler(event)"fault="sessionManage_faultHandler(event)"?/>??
  46. ????</fx:Declarations>??
  47. ????<s:Label?x="394"?y="229"?fontSize="18"?width="229"?height="31"?id="message"/>??
  48. ????<s:Button?x="443"?y="283"?label="退出"id="exist"?fontSize="16"?click="exist_clickHandler(event)"/>??
  49. ?????
  50. </s:Application>??


?

? ? ? ? ? 当跳转到这个页面时页面初始化后会从服务器获取账户信息,如果有则在页面上展示。点击“退出”按钮则清除session并跳转到登陆页面。


? ? ? ? ? ?运行Login.mxml页面,页面如下所示:




? ? ? ? ?输入用户信息,点击“登陆”按钮,跳转到welcome.html页面:


?


? ? ? ? ? ?点击“退出”按钮后会跳转到首页,再次运行此页面时用户信息则会为null,或者登陆后关闭浏览器再打开此页面也会获取不到session,这就是session的一大特征吧~


? ? ? ? ? ? 通过合理管理Session.可以减少传递参数的麻烦,可以进行权限管理。尽管如此,工作中还是不提倡多用session.


? ? ?? ? ?原创文章,转载请注明出处:http://www.dianfusoft.com/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读