【转】UniGUI Session管理說明
分类: uniGUI |
UniGUI Session管理說明
每一個Session對應一個UniMainModule,一個MainForm
因此Session+UniMainModule就可以得到所有Session+使用者的資料
以做管理之用
[UniServerModule]
Public區定義
UserList:TList; //登入Session List
//事件
procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
begin
UserList:=UniServerModule.SessionManager.Sessions.SessionList;
end;
//---------------------------------------------------------------------------------
[UniMainModule]
Public //定義,由設計者自行決
UserID:String; //登入使用者ID
LoginTime:TDateTime; //登入時間
Msg:String; //做Session間訊息傳遞
BrowserType:String; //Session之瀏覽器類別
BrowserVersion:integer; //Session之瀏覽器版本
OSType:String;
IsMobile:Boolean; //Session是否Mobile
RType:Integer; //OnHandleRequest執行類別
//事件,此處可處理Session間的訊息
//只要使用者在瀏覽器有動作,會觸發本事件
//UniGUI的Session接受其他Session的訊息,無法主動顯示,
procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject;var Handled: Boolean);
var Session:TUniGUISession;
MF:TMainForm;
begin
Session:=TUniGUISession(ASession);
MF:=TMainForm( Session.UniMainModule.MainForm ); //Session對應的MainForm
case Self.RType of
1:begin
MF.UniLabel1.Caption:='TEST訊息'; //
Session.ShowAlert('OK');
end;
2:begin
end;
3:begin
end;
end;
Self.RType:=-1; //
end;
//---------------------------------------------------------------------------------
[LoginForm]
//事件,設定Session沒定義的資料
procedure TLoginForm.BtnLoginClick(Sender: TObject);
var ok:Boolean;
C:TUniClientInfoRec; //uniGUIApplication.pas
m:TuniMainModule;
begin
m:=UniMainModule; //
//--處理可否登錄 Ok=True可登入
m.UserID:=Self.EdUser.Text; //UserID在Session沒有,是自行加入
C:=UniApplication.ClientInfoRec;
m.SessionID:=UniSession.SessionID;
m.LoginTime:=Now;
m.BrowserType:=C.BrowserType;
m.BrowserVersion:=C.BrowserVersion;
m.OSType:=C.OSType;
m.IsMobile:=UniSession.IsMobile;
Ok:=True; //自行決定如此處理Ok
//記錄登入使用者處理
if Ok then
begin
ModalResult:=mrOK; // Login is valid so proceed to MainForm ,執行段 Login form會Destory
end;
end;
//---------------------------------------------------------------------------------
[MainForm]
//事件,列出Session一覽表
procedure TMainForm.UniButton7Click(Sender: TObject);
var i:integer;
Session:TUniGUISession;
m:TUniMainModule; //Session對應的UniMainModule
begin
Self.PageControl.ActivePageIndex:=0;
Self.MLog.Clear;
for i:=0 to UniServerModule.UserList.Count-1 do
begin
Session:= TUniGUISession( UniServerModule.UserList[i]);
m:=TUniMainModule(Session.UniMainModule);
Self.MLog.Lines.Add( Session.SessionId +','+
m.UserID +','+
FormatDateTime('yyyy.mm.dd-hh:nn:ss.zzz',LoginTime:TDateTime; )+','+
m.BrowserType+','+
inttostr(m.BrowserVersion)+','+
m.OSType+','+
inttostr(ord(m.IsMobile))
);
end;
end;
【转】UniGUI Session管理說明的更多相关文章
- man page分類與說明
轉載自http://itzone.hk/article/article.php?aid=200407152225014657 (如有侵權,請留言或來信告知) 前言 Man page是每位程式設計員及U ...
- Datasnap 服务端 (Server)Session 管理 --- 解决 全示例慢(Google)
Datasnap 服务端 (Server)Session 管理: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Server_Side_Ses ...
- NUC970 U-Boot 使用說明
U-Boot 使用說明U-Boot 是一個主要用於嵌入式系統的開機載入程式, 可以支援多種不同的計算機系統結構, 包括ARM.MIPS.x86與 68K. 這也是一套在GNU通用公共許可證之下發布的自 ...
- Nhibernate的Session管理
参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...
- Openfire的启动过程与session管理
说明 本文源码基于Openfire4.0.2. Openfire的启动 Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...
- ABP(现代ASP.NET样板开发框架)系列之7、ABP Session管理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之7.ABP Session管理 ABP是“ASP.NET Boilerplate Project (ASP.NET ...
- 2016-1-30 Servlet中Session管理(Sesssion追踪)
Session管理(Sesssion追踪)是Web应用程序开发中非常重要的一个主题.这是因为HTTP是无状态的,在默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的 ...
- Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建
已经有不少文章介绍使用tomcat-redis-session-manager来实现Redis存储Tomcat的Session,实现分布式Session管理.但是现在官方编译的tomcat-redis ...
- tomcat架构分析 (Session管理)
Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到.在开发app时,我们只是获取一个session,然后向session中存取数据,然后再销毁session.那么如何产生se ...
随机推荐
- CoreData教程
网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...
- poi导出Excel直接在浏览器下载
需求:导出成Excel格式,要在浏览器看到类似于下载的效果. 导出的Excel和下载在同一个目录下. xxController.java // 导出 @RequestMapping(value = & ...
- Python3将ipa包中的文件按大小排序
[本文出自天外归云的博客园] 给你个ipa包,解压前输出包大小,解压后把里面的文件按大小排序.代码如下: import os import shutil import zipfile _ipa_zip ...
- hdu-1253(bfs+剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 思路:简单的bfs,就是要注意剪枝. #include<iostream> #inc ...
- 禁用AxWebBrowser右键菜单
出处:http://stackoverflow.com/questions/41781647/disabling-the-axwebbrowser-context-menu-vb-net 通过底层消息 ...
- BufferedInputStream 缓冲输入字节流 -------上
package com.BufferedInputStreamUse; import java.io.BufferedInputStream; import java.io.File; import ...
- module.exports 、 exports 和 export 、 export default 、 import
1:commonjs规范 module.exports={a:10,b:20} var test=require('lib/test') console.log(test.a);console.log ...
- CoInitialize和CoInitializeEx
1.CoInitialize和CoInitializeEx的功能 CoInitialize是在当前线程初始化Com组件的函数,并且初始化为STA模式(单线程模式),一般新的程序建议使用CoInitia ...
- Code Forces 645A Amity Assessment
A. Amity Assessment time limit per test2 seconds memory limit per test256 megabytes inputstandard in ...
- 2017 Multi-University Training Contest - Team 3 Kanade&#39;s sum hd6058
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6058 题目: Kanade's sum Time Limit: 4000/2000 MS (J ...