Session是Jsp 9大内置对象之一,但是在Flex中却没有这一概念。曾经看过一本叫《Flex 企业应用开发实战》书,里面讲述了一点利用Session增加控制权限的问题。本人也尝试着做了一个小demo.
Flex中实现session的一个类是FlexContext类,他将session保存在服务端。
新建一个java类FlexSession.java,里面写了各种存贮、获取、清除Session的方法:
- packagecom.ldfsoft.util;
- importflex.messaging.FlexContext;
- publicclassFlexSession{
- publicvoidsetSession(Stringname,Stringvalue){
- FlexContext.getFlexSession().setAttribute(name,value);
- }
- publicStringgetSession(Stringname){
- Stringvalue=(String)FlexContext.getFlexSession().getAttribute(name);
- returnvalue;
- }
- publicvoidremoveSession(Stringname){
- FlexContext.getFlexSession().removeAttribute(name);
- }
- }
然后将此类在flex配置文件中配置一下,这个就不说了。
新建一个mxml文件Login.mxml,代码如下所示:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="955"minHeight="600">
- <fx:Script>
- <![CDATA[
- importflash.net.navigateToURL;
- importmx.controls.Alert;
- importmx.events.FlexEvent;
- importmx.rpc.events.FaultEvent;
- importmx.rpc.events.ResultEvent;
- protectedfunctionlogin_clickHandler(event:MouseEvent):void
- {
- //TODOAuto-generatedmethodstub
- varuserName:String=username.text;
- varpassWorld:String=passworld.text;
- if(userName!=""&&passWorld!=""){
- //保存Session
- sessionManage.setSession("account",userName);
- }else{
- Alert.show("用户名与密码不能为空!","提示");
- }
- }
- protectedfunctionsessionManage_faultHandler(event:FaultEvent):void
- {
- //TODOAuto-generatedmethodstub
- Alert.show(event.fault.message,"出错了");
- }
- protectedfunctionsessionManage_resultHandler(event:ResultEvent):void
- {
- //TODOAuto-generatedmethodstub
- forwPage();
- }
- privatefunctionforwPage():void{
- varurl:URLRequest=newURLRequest("http://localhost:9080/red5Flex/swf/welcome.html");
- navigateToURL(url,"_self");
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <s:RemoteObjectid="sessionManage"destination="sessionManage"endpoint="../messagebroker/amf"fault="sessionManage_faultHandler(event)">
- <s:methodname="setSession"result="sessionManage_resultHandler(event)"/>
- </s:RemoteObject>
- </fx:Declarations>
- <s:Panelx="242"y="107"width="549"height="367"title="请登陆"fontSize="16">
- <s:Labelx="99"y="106"text="用户名:"/>
- <s:Labelx="100"y="175"text="密码:"/>
- <s:TextInputx="179"y="106"id="username"/>
- <s:TextInputx="180"y="175"id="passworld"displayAsPassword="true"/>
- <s:Buttonx="409"y="130"height="48"id="login"label="登陆"click="login_clickHandler(event)"/>
- </s:Panel>
- </s:Application>
这个文件是一个登陆界面,登陆中将用户信息保存在服务端的Session里。
接着新建一个mxml文件welcome.mxml,代码如下所示:
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="955"minHeight="600"applicationComplete="app_applicationCompleteHandler(event)">
- <fx:Script>
- <![CDATA[
- importmx.controls.Alert;
- importmx.events.FlexEvent;
- importmx.rpc.events.FaultEvent;
- importmx.rpc.events.ResultEvent;
- [Bindable]privatevaraccount:String="";
- protectedfunctionapp_applicationCompleteHandler(event:FlexEvent):void
- {
- //TODOAuto-generatedmethodstub
- //获取session
- sessionManage.getSession("account");
- }
- protectedfunctionsessionManage_resultHandler(event:ResultEvent):void
- {
- //注意获得Session的方式
- account=event.resultasString;
- message.text=account+",欢迎您归来..."
- }
- protectedfunctionsessionManage_faultHandler(event:FaultEvent):void
- {
- //TODOAuto-generatedmethodstub
- Alert.show("获取session失败...","提示");
- }
- protectedfunctionexist_clickHandler(event:MouseEvent):void
- {
- //TODOAuto-generatedmethodstub
- //清除session
- sessionManage.removeSession("account");
- varurl:URLRequest=newURLRequest("http://localhost:9080/red5Flex/swf/Login.html");
- navigateToURL(url,"_self");
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <s:RemoteObjectid="sessionManage"destination="sessionManage"endpoint="../messagebroker/amf"result="sessionManage_resultHandler(event)"fault="sessionManage_faultHandler(event)"/>
- </fx:Declarations>
- <s:Labelx="394"y="229"fontSize="18"width="229"height="31"id="message"/>
- <s:Buttonx="443"y="283"label="退出"id="exist"fontSize="16"click="exist_clickHandler(event)"/>
- </s:Application>
当跳转到这个页面时页面初始化后会从服务器获取账户信息,如果有则在页面上展示。点击“退出”按钮则清除session并跳转到登陆页面。
运行Login.mxml页面,页面如下所示:

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

点击“退出”按钮后会跳转到首页,再次运行此页面时用户信息则会为null,或者登陆后关闭浏览器再打开此页面也会获取不到session,这就是session的一大特征吧~
通过合理管理Session.可以减少传递参数的麻烦,可以进行权限管理。尽管如此,工作中还是不提倡多用session.
原创文章,转载请注明出处:http://www.dianfusoft.com/
分享到:
相关推荐
在探讨“Flex+J2EE获取FlexSession的方法”这一主题时,我们首先需要理解Flex与J2EE在Web开发中的角色以及如何通过它们实现会话管理。Flex是一种用于构建高度交互式的客户端应用程序的技术,而J2EE(Java 2 ...
在Flex开发中,UserInfoSys是一个常见的用户信息管理系统,它结合了Struts1.2、Spring2.0和Hibernate3.0这三大经典技术框架,构建了一个功能完备的后端数据处理系统。这篇解析将深入探讨这个系统的架构、设计模式...
这种方式不仅实现了数据的有效管理和传递,还极大地提高了Flex应用程序的灵活性和性能。对于开发者而言,掌握这种方法有助于更好地应对实际项目中的复杂需求,提升开发效率。同时,这也为今后的学习和实践提供了一个...
XIFF(eXtensible Internet Framework)是Flex中一个用于处理XMPP协议的库,它允许开发者在Flex应用程序中实现XMPP功能,比如创建用户会话、发送和接收消息、管理用户状态等。XIFF为Flex提供了与XMPP服务器交互的...
如果登录成功,可能会涉及到用户状态的管理,例如设置session或cookie来保持登录状态。Flex可以通过SharedObject或者在服务器端处理来实现。 10. **响应式设计**: 考虑到不同的设备和屏幕尺寸,Flex的布局管理器...
本文将详细介绍如何在Flex4环境中,利用Spring管理Java后端Bean,并通过BlazeDS实现Flex与服务器间的通信。 首先,我们需要理解Flex4、Spring和BlazeDS各自的角色。Flex4是Flash Builder中的一个组件,它提供了一套...
5. **错误处理和事务管理**:在整合过程中,需要考虑错误处理和事务边界。Flex客户端需要捕获并处理可能出现的服务器端异常,并且确保在分布式环境中,数据库操作的原子性和一致性。 6. **缓存策略**:为了提高性能...
在这个压缩包中,"flex"可能是指一系列与Flex编译器或Flex框架相关的示例代码或应用程序,尽管在FreeSWITCH的上下文中,这个名字可能更多地指的是其灵活性和多用途性。 FreeSWITCH的WebPhone特性允许用户通过浏览器...
总的来说,Flex3的Gilead库可能是为了解决复杂的数据库操作和会话管理问题而设计的,它提供了方便的API和可能的自定义session管理机制,使得在Flex3应用中进行多表查询和保持用户会话变得更加简单。为了充分利用这个...
SSH+Flex配置是一种常见的Java Web开发技术组合,用于构建高效...这个组合在过去的几年中被广泛应用于企业级项目中,尽管现代Web开发可能更倾向于使用React或Vue等前端框架,但SSH+Flex仍然在一些项目中占有一席之地。
通过Spring的HibernateTemplate或SessionFactoryBean,可以实现DAO层的事务管理和Session管理。 4. **实体映射**:Hibernate负责将Java对象映射到数据库表。开发者定义实体类,并使用注解或XML配置来描述对象与表的...
当涉及到与Hibernate的集成时,Spring提供了对Hibernate的全面支持,可以管理SessionFactory和Session。在配置文件中,我们可以定义数据访问层的bean,比如`SessionFactory`,并利用Spring的事务管理功能来处理...
5. **Flex客户端调用**:在Flex中,你可以使用HTTPService或WebService组件来调用Spring服务。通过AMF,这些服务请求会直接映射到Spring中的Bean方法。 6. **数据绑定**:Flex的强项在于UI交互,可以利用数据绑定...
在ASP中,可能使用了数据库连接来存储聊天记录,用户信息,以及通过Session对象来区分管理用户和一般用户。Session是ASP中的一个内置对象,用于存储用户会话期间的信息。当管理用户的Session被赋值为1时,系统就可以...
Flex4、Spring和Hibernate是构建企业级Web应用的三大核心技术,它们分别负责用户界面、业务逻辑和服务层的数据管理。在本实例项目中,这三者结合,为开发者提供了一个全面的解决方案,使得前后端能够有效地协同工作...
-- 监听Flex的session通信 --> flex.messaging.HttpFlexSession <!-- 通信服务配置文件 --> <servlet-name>MessageBrokerServlet flex.messaging.MessageBrokerServlet <param-name>services....
Flex可以使用Flex State Management或使用ASP.NET的ViewState和Session来保存和恢复用户状态。 7. **安全性**:在Flex与ASP.NET集成中,安全性是不可忽视的。可以使用ASP.NET的身份验证和授权机制,配合Flex的安全...
4. **Hibernate整合**:Spring提供了对Hibernate的全面支持,包括Session工厂、事务管理和DAO(Data Access Object)模板。通过Spring,可以更容易地管理和控制Hibernate会话,减少代码复杂性。 5. **Model-View-...
- 它包括一系列组件,如MessageBrokerServlet、HTTP Flex Session、Remoting服务等,用于实现远程方法调用、消息代理和数据推送。 4. **集成过程**: - 创建一个J2EE Web工程,如`Sample`,作为后端服务的基础。 ...
5. **改善状态管理机制**:利用Flex中的状态管理技术,改善传统页面技术中状态管理不足的问题,提高应用的整体性能。 综上所述,基于Flex的ArcIMS地图发布技术不仅解决了现有技术的局限性,还极大提升了地图发布的...