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中文帮助flex中文帮助flex中文帮助flex中文帮助
Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统Flex 会议管理系统
flex 后台管理系统 ssh flex 后台管理系统 ssh flex 后台管理系统 ssh
flex中文帮助文档flex中文帮助文档
在Flex工程中添加Module的方法是:在FlashBuilder中右键工程目录->Porperties->Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...
flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...
Flex中文帮助 学习Flex的好资料 入门提高都实用
FLEX中文教程+实例
Flex中文帮助 技术支持: http://www.ZzGps.Cn 技术分享
这是逆向思维做的一个管理系统,是用flex做的
Flex学习文档,Flex中文文档,,记载了各种学习心得
flex教程 Flex中文基础教程Flex中文基础教程Flex中文基础教程
flex中文基础教程,适合初学者
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助
本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有。 均有实例代码讲解
FLEX 中文教程 FLEX 通俗易懂
Flex4 中文API chm格式
flex中文教程flex中文教程flex中文教程