Flex中的Session管理

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

--->点击阅读更多    

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


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

 

  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,代码如下所示:


  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,代码如下所示:


  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.


--->点击阅读更多    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


一:display:flex布局display:flex是一种布局方式。它即可以应用于容器中,也可以应用于行内元素。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持。Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现HTML代码:1<divclass="demo">2<divclass="inner">3<p>这是一个测试这是一个测试这是一个测试这是一个测试这是一个测试</p>4</div
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些应用。常见的例子,比如360杀毒,photoShop,VisualStudioCode等等移动端app是什么,有哪些应用。常见的例子,比如手机微信,手机qq,手机浏览器,美颜相机等等PC端与移动端的区别第一:PC考虑的是浏览器的兼容性,移动端考
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周末了,难得学点东西,grid是之前看到的,很好奇,讲的二维的布局,看起来很方便,应该很适合移动端布局,所以今天抽时间学一学,这个当是笔记了。参考的是阮老师的博客。阮一峰:CSSGrid网格布局教程http://www.ruanyifeng.com/blog/2019/03/g
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后,浮动,定位将不会有效果)给父元素设置的属性:(1)display:flex---把容器设置为弹性盒模型。(2)flex-direction---设置弹性盒模型主轴方向默认情况下主
我在网页上运行了一个Flex应用程序,我想使用Command←组合键在应用程序中触发某些操作.这在大多数浏览器上都很好,但在Safari上,浏览器拦截此键盘事件并导致浏览器“返回”事件.有没有办法,通过Flex或通过页面上的其他地方的JavaScript,我可以告诉Safari不要这样做?解决方法:简短的
flex布局,flex-item1<template>2<viewclass="container">3<viewclass="greentxt">4A5</view>6<viewclass="redtxt">7B8<
我应该设计一个大型多点触控屏幕的应用程序.从大到大,我的意思是新闻广播员(大约55英寸及以上).该应用程序是一个交互式地图.我的问题是:开发应用程序的技术.我的第一个想法是在AdobeFlex中制作,但是HTML5也是如此……必须有一些非常棒的Java库用于触摸交互,但是在Windows平台上
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible&quo
【1】需求:  【2】解决方案:最近遇到布局上要求item两端对齐,且最后一行在列不满的情况下要求左对齐,使用flex的justify-content:space-between;实现时发现最后一行不能左对齐,而是两端对齐方式。 不是项目上想要的效果#网上查了一些资料,有两种方法可以实现效果:**1.
我有一个java套接字服务器,它在连接时将Animal对象发送到Flash客户端.对象发送方式如下:Amf3Outputamf3Output=newAmf3Output(SerializationContext.getSerializationContext());amf3Output.setOutputStream(userSocket.getOutputStream());amf3Output.writeObject(animal)
我正在开发一个Flex3.4应用程序,它通过最新版本的BlazeDS与JBoss-4.2.2服务器上运行的JavaEE后端进行交互.当我在Tomcat上从FlashBuilder4beta2运行Flex应用程序时,一切都很好,Flex应用程序能够进行所需的远程调用.但我的生产环境是在JBoss上,当我将应用程序移动到JBoss时(更
我有一个非常大的问题.我使用Flex3/Tomcat/BlazeDS/Spring编写了一个大型应用程序,在本地开发时运行良好,当我部署到公共开发环境时很好,但是当部署到我们的测试环境时经常失败.当远程处理请求花费大量时间(超过20秒)时,故障似乎最常发生.在我的开发服务器上,错误发生,但仅
弹性和布局display:flex在ie6,ie7不兼容状态,一般在pc用的比较少,在手机端所有的浏览器都是支持的控制子元素在父元素里面的位置关系display:flex是给父元素加的文档流是按照主轴排列,只要父元素加了flex,那么里面的子元素全部可以直接添加宽高主轴的方向
FLEX2.0源码分析(一)https://www.jianshu.com/p/8bc4c5f4b19fFLEX源码分析二(网络监测swizzle)https://www.jianshu.com/p/ffb95f2cbda6FLEX源码分析三(网络监测记录FLEXNetworkRecorder)https://www.jianshu.com/p/66267dc922c5FLEX源码分析四(Systemlog)https://www.jianshu.
1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<title><itle>6<style>7*{8margin:0;9padding:0;10
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible&qu
flex:将对象作为弹性伸缩盒显示inline-flex:将对象作为内联块级弹性伸缩盒显示两者都是使子元素们弹性布局,但是如果是flex,父元素的尺寸不由子元素尺寸动态调整,不设置时默认是100%,而inline-flex则会使父元素尺寸跟随子元素们的尺寸动态调整。
<html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width"><title>test<itle><stylemedia="screen">.tab-head{list-style-type:no
有没有办法使用邮政编码找到径向距离?我的任务是搜索居住在指定距离内的所有用户.我知道用户的zipcodes.例如,距离当前位置25英里的用户.我有其他搜索类别,我正在使用mysql查询.我无法解决距离问题.我的后端是在PHP中Flex的前端和前端.对我来说最好的选择就是www.zip-codes.com