`
fatherican
  • 浏览: 54760 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Flex中的Session管理

 
阅读更多
Session是Jsp 9大内置对象之一,但是在Flex中却没有这一概念。曾经看过一本叫《Flex 企业应用开发实战》书,里面讲述了一点利用Session增加控制权限的问题。本人也尝试着做了一个小demo.


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


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

  1. packagecom.ldfsoft.util;
  2. importflex.messaging.FlexContext;
  3. publicclassFlexSession{
  4. /**
  5. *保存Session
  6. *@paramname
  7. *@paramvalue
  8. */
  9. publicvoidsetSession(Stringname,Stringvalue){
  10. FlexContext.getFlexSession().setAttribute(name,value);
  11. }
  12. /**
  13. *获取Session
  14. */
  15. publicStringgetSession(Stringname){
  16. Stringvalue=(String)FlexContext.getFlexSession().getAttribute(name);
  17. returnvalue;
  18. }
  19. /**
  20. *清除Session
  21. *@paramname
  22. */
  23. publicvoidremoveSession(Stringname){
  24. FlexContext.getFlexSession().removeAttribute(name);
  25. }
  26. }


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


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


  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?>
  2. <s:Applicationxmlns: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. <fx:Script>
  6. <![CDATA[
  7. importflash.net.navigateToURL;
  8. importmx.controls.Alert;
  9. importmx.events.FlexEvent;
  10. importmx.rpc.events.FaultEvent;
  11. importmx.rpc.events.ResultEvent;
  12. protectedfunctionlogin_clickHandler(event:MouseEvent):void
  13. {
  14. //TODOAuto-generatedmethodstub
  15. varuserName:String=username.text;
  16. varpassWorld:String=passworld.text;
  17. if(userName!=""&&passWorld!=""){
  18. //保存Session
  19. sessionManage.setSession("account",userName);
  20. }else{
  21. Alert.show("用户名与密码不能为空!","提示");
  22. }
  23. }
  24. protectedfunctionsessionManage_faultHandler(event:FaultEvent):void
  25. {
  26. //TODOAuto-generatedmethodstub
  27. Alert.show(event.fault.message,"出错了");
  28. }
  29. protectedfunctionsessionManage_resultHandler(event:ResultEvent):void
  30. {
  31. //TODOAuto-generatedmethodstub
  32. forwPage();
  33. }
  34. privatefunctionforwPage():void{
  35. varurl:URLRequest=newURLRequest("http://localhost:9080/red5Flex/swf/welcome.html");
  36. navigateToURL(url,"_self");
  37. }
  38. ]]>
  39. </fx:Script>
  40. <fx:Declarations>
  41. <!--Placenon-visualelements(e.g.,services,valueobjects)here-->
  42. <s:RemoteObjectid="sessionManage"destination="sessionManage"endpoint="../messagebroker/amf"fault="sessionManage_faultHandler(event)">
  43. <s:methodname="setSession"result="sessionManage_resultHandler(event)"/>
  44. </s:RemoteObject>
  45. </fx:Declarations>
  46. <s:Panelx="242"y="107"width="549"height="367"title="请登陆"fontSize="16">
  47. <s:Labelx="99"y="106"text="用户名:"/>
  48. <s:Labelx="100"y="175"text="密码:"/>
  49. <s:TextInputx="179"y="106"id="username"/>
  50. <s:TextInputx="180"y="175"id="passworld"displayAsPassword="true"/>
  51. <s:Buttonx="409"y="130"height="48"id="login"label="登陆"click="login_clickHandler(event)"/>
  52. </s:Panel>
  53. </s:Application>


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

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


  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?>
  2. <s:Applicationxmlns: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. importmx.controls.Alert;
  8. importmx.events.FlexEvent;
  9. importmx.rpc.events.FaultEvent;
  10. importmx.rpc.events.ResultEvent;
  11. [Bindable]privatevaraccount:String="";
  12. protectedfunctionapp_applicationCompleteHandler(event:FlexEvent):void
  13. {
  14. //TODOAuto-generatedmethodstub
  15. //获取session
  16. sessionManage.getSession("account");
  17. }
  18. protectedfunctionsessionManage_resultHandler(event:ResultEvent):void
  19. {
  20. //注意获得Session的方式
  21. account=event.resultasString;
  22. message.text=account+",欢迎您归来..."
  23. }
  24. protectedfunctionsessionManage_faultHandler(event:FaultEvent):void
  25. {
  26. //TODOAuto-generatedmethodstub
  27. Alert.show("获取session失败...","提示");
  28. }
  29. protectedfunctionexist_clickHandler(event:MouseEvent):void
  30. {
  31. //TODOAuto-generatedmethodstub
  32. //清除session
  33. sessionManage.removeSession("account");
  34. varurl:URLRequest=newURLRequest("http://localhost:9080/red5Flex/swf/Login.html");
  35. navigateToURL(url,"_self");
  36. }
  37. ]]>
  38. </fx:Script>
  39. <fx:Declarations>
  40. <!--Placenon-visualelements(e.g.,services,valueobjects)here-->
  41. <s:RemoteObjectid="sessionManage"destination="sessionManage"endpoint="../messagebroker/amf"result="sessionManage_resultHandler(event)"fault="sessionManage_faultHandler(event)"/>
  42. </fx:Declarations>
  43. <s:Labelx="394"y="229"fontSize="18"width="229"height="31"id="message"/>
  44. <s:Buttonx="443"y="283"label="退出"id="exist"fontSize="16"click="exist_clickHandler(event)"/>
  45. </s:Application>


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


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




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



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


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


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

分享到:
评论

相关推荐

    Flex+J2EE获取FlexSession的方法

    在探讨“Flex+J2EE获取FlexSession的方法”这一主题时,我们首先需要理解Flex与J2EE在Web开发中的角色以及如何通过它们实现会话管理。Flex是一种用于构建高度交互式的客户端应用程序的技术,而J2EE(Java 2 ...

    flex中的UserInfoSys源码

    在Flex开发中,UserInfoSys是一个常见的用户信息管理系统,它结合了Struts1.2、Spring2.0和Hibernate3.0这三大经典技术框架,构建了一个功能完备的后端数据处理系统。这篇解析将深入探讨这个系统的架构、设计模式...

    flex中tree的数据源是xml

    这种方式不仅实现了数据的有效管理和传递,还极大地提高了Flex应用程序的灵活性和性能。对于开发者而言,掌握这种方法有助于更好地应对实际项目中的复杂需求,提升开发效率。同时,这也为今后的学习和实践提供了一个...

    Flex实现的xmpp消息发送接收

    XIFF(eXtensible Internet Framework)是Flex中一个用于处理XMPP协议的库,它允许开发者在Flex应用程序中实现XMPP功能,比如创建用户会话、发送和接收消息、管理用户状态等。XIFF为Flex提供了与XMPP服务器交互的...

    Flex做的登录表单

    如果登录成功,可能会涉及到用户状态的管理,例如设置session或cookie来保持登录状态。Flex可以通过SharedObject或者在服务器端处理来实现。 10. **响应式设计**: 考虑到不同的设备和屏幕尺寸,Flex的布局管理器...

    flex4+spring+blazeds整合技术

    本文将详细介绍如何在Flex4环境中,利用Spring管理Java后端Bean,并通过BlazeDS实现Flex与服务器间的通信。 首先,我们需要理解Flex4、Spring和BlazeDS各自的角色。Flex4是Flash Builder中的一个组件,它提供了一套...

    flex和hibernate的整合

    5. **错误处理和事务管理**:在整合过程中,需要考虑错误处理和事务边界。Flex客户端需要捕获并处理可能出现的服务器端异常,并且确保在分布式环境中,数据库操作的原子性和一致性。 6. **缓存策略**:为了提高性能...

    FreeSWITCH的Flex示范包

    在这个压缩包中,"flex"可能是指一系列与Flex编译器或Flex框架相关的示例代码或应用程序,尽管在FreeSWITCH的上下文中,这个名字可能更多地指的是其灵活性和多用途性。 FreeSWITCH的WebPhone特性允许用户通过浏览器...

    flex3多表查询Gilead使用

    总的来说,Flex3的Gilead库可能是为了解决复杂的数据库操作和会话管理问题而设计的,它提供了方便的API和可能的自定义session管理机制,使得在Flex3应用中进行多表查询和保持用户会话变得更加简单。为了充分利用这个...

    ssh+flex配置

    SSH+Flex配置是一种常见的Java Web开发技术组合,用于构建高效...这个组合在过去的几年中被广泛应用于企业级项目中,尽管现代Web开发可能更倾向于使用React或Vue等前端框架,但SSH+Flex仍然在一些项目中占有一席之地。

    Flex+spring+hibernate

    通过Spring的HibernateTemplate或SessionFactoryBean,可以实现DAO层的事务管理和Session管理。 4. **实体映射**:Hibernate负责将Java对象映射到数据库表。开发者定义实体类,并使用注解或XML配置来描述对象与表的...

    FLEX和spring、hibernate的集成

    当涉及到与Hibernate的集成时,Spring提供了对Hibernate的全面支持,可以管理SessionFactory和Session。在配置文件中,我们可以定义数据访问层的bean,比如`SessionFactory`,并利用Spring的事务管理功能来处理...

    flex与spring hibernate的整合

    5. **Flex客户端调用**:在Flex中,你可以使用HTTPService或WebService组件来调用Spring服务。通过AMF,这些服务请求会直接映射到Spring中的Bean方法。 6. **数据绑定**:Flex的强项在于UI交互,可以利用数据绑定...

    flex+asp制作的聊天室源码

    在ASP中,可能使用了数据库连接来存储聊天记录,用户信息,以及通过Session对象来区分管理用户和一般用户。Session是ASP中的一个内置对象,用于存储用户会话期间的信息。当管理用户的Session被赋值为1时,系统就可以...

    flex4+spring+hibernat实例

    Flex4、Spring和Hibernate是构建企业级Web应用的三大核心技术,它们分别负责用户界面、业务逻辑和服务层的数据管理。在本实例项目中,这三者结合,为开发者提供了一个全面的解决方案,使得前后端能够有效地协同工作...

    flex-ibatis-sping项目的创建

    -- 监听Flex的session通信 --&gt; flex.messaging.HttpFlexSession &lt;!-- 通信服务配置文件 --&gt; &lt;servlet-name&gt;MessageBrokerServlet flex.messaging.MessageBrokerServlet &lt;param-name&gt;services....

    flex + asp.net web应用开发实战详解 code p2

    Flex可以使用Flex State Management或使用ASP.NET的ViewState和Session来保存和恢复用户状态。 7. **安全性**:在Flex与ASP.NET集成中,安全性是不可忽视的。可以使用ASP.NET的身份验证和授权机制,配合Flex的安全...

    Flex+hibernate+spring整合

    4. **Hibernate整合**:Spring提供了对Hibernate的全面支持,包括Session工厂、事务管理和DAO(Data Access Object)模板。通过Spring,可以更容易地管理和控制Hibernate会话,减少代码复杂性。 5. **Model-View-...

    ssh+flex+blazed

    - 它包括一系列组件,如MessageBrokerServlet、HTTP Flex Session、Remoting服务等,用于实现远程方法调用、消息代理和数据推送。 4. **集成过程**: - 创建一个J2EE Web工程,如`Sample`,作为后端服务的基础。 ...

    基于Flex的ArcIMS地图发布研究

    5. **改善状态管理机制**:利用Flex中的状态管理技术,改善传统页面技术中状态管理不足的问题,提高应用的整体性能。 综上所述,基于Flex的ArcIMS地图发布技术不仅解决了现有技术的局限性,还极大提升了地图发布的...

Global site tag (gtag.js) - Google Analytics