基本信息
源码名称:ASP URL重写 开发框架 示例源码下载
源码大小:0.26M
文件格式:.zip
开发语言:ASP
更新时间:2014-06-21
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
<!--#include file="Mo.Function.Jscript.asp"--> <!--#include file="Mo.Function.asp"--> <!--#include file="Mo.List.asp"--> <!--#include file="Mo.Model.asp"--> <!--#include file="Mo.Record.asp"--> <!--#include file="Mo.View.asp"--> <!--#include file="Mo.MD5.asp"--> <% class MoAspEnginer private mvarDicts, mvarUse,mvarConfig, mvarAction, mvarMethod,mvarCacheFileName,mvarRealAction,mvarRealMethod private mvarLibrarys,mvarStatus,mvarException '**************************************************** '@DESCRIPTION: set current action,it will be fetched automatic '@PARAM: value [String] : action value '**************************************************** public Property Let Action(byval value) mvarAction = value mvarRealAction = value end Property '**************************************************** '@DESCRIPTION: get current action '@RETURN: [String] action value '**************************************************** public Property Get Action() Action = mvarAction end Property '**************************************************** '@DESCRIPTION: set current method,it will be fetched automatic '@PARAM: value [String] : action value '**************************************************** public Property Let Method(byval value) mvarMethod = value mvarRealMethod = value end Property '**************************************************** '@DESCRIPTION: get current method '@RETURN: [String] action value '**************************************************** public Property Get Method() Method = mvarMethod end Property '**************************************************** '@DESCRIPTION: get enginer version '@RETURN: [String] '**************************************************** public Property Get Version() Version = "MoAspEnginer 1.2.1" end Property '**************************************************** '@DESCRIPTION: set HTTP Status '@PARAM: value [String] : HTTP status,Eg. 404,500 '**************************************************** public Property Let Status(byval value) mvarStatus = value & "" if mvarStatus="404" then mvarStatus = "404 Not Found" if mvarStatus="200" then mvarStatus = "200 OK" if mvarStatus="301" then mvarStatus = "301 Moved Permanently" if mvarStatus="500" then mvarStatus = "500 Internal Server Error" end Property '**************************************************** '@DESCRIPTION: get HTTP Status '@RETURN: [String] HTTP Status '**************************************************** public Property Get Status() Status = mvarStatus end Property '**************************************************** '@DESCRIPTION: Class_Initialize '**************************************************** private sub Class_Initialize() mvarException=null mvarStatus = "200 OK" if MO_APP_NAME="" then F.exit "未定义应用名称:MO_APP_NAME。" if MO_ROOT="" then MO_ROOT = F.server("URL") MO_ROOT = mid(MO_ROOT,1,instrrev(MO_ROOT,"/")) end if if MO_APP="" then MO_APP = MO_ROOT & MO_APP_NAME & "/" if MO_CORE="" then MO_CORE = MO_ROOT & "Mo/" if right(MO_APP,1)<>"/" then MO_APP = MO_APP & "/" if right(MO_CORE,1)<>"/" then MO_CORE = MO_CORE & "/" if MO_APP_ENTRY="" then MO_APP_ENTRY = mid(F.server("URL"),instrrev(F.server("URL"),"/") 1) if lcase(MO_APP_ENTRY)="default.asp" then MO_APP_ENTRY="" end if set mvarDicts = F.activex("Scripting.Dictionary") set mvarUse = F.activex("Scripting.Dictionary") set mvarConfig = F.activex("Scripting.Dictionary") set mvarLibrarys = F.activex("Scripting.Dictionary") if not F.fso.FolderExists(F.mappath(MO_CORE)) then F.exit "核心目录[" & MO_CORE & "]不存在" if not MO_DEBUG then on error resume next err.clear dim file for each file in F.fso.getfolder(F.mappath(MO_CORE & "Library/Common")).files if right(lcase(file.name),4)=".asp" then Include file.path next if not F.fso.FolderExists(F.mappath(MO_APP)) then F.fso.CreateFolder F.mappath(MO_APP) F.fso.CreateFolder F.mappath(MO_APP & "Action") F.fso.CreateFolder F.mappath(MO_APP & "Cache") F.fso.CreateFolder F.mappath(MO_APP & "Cache/Compiled") F.fso.CreateFolder F.mappath(MO_APP & "Cache/Model") F.fso.CreateFolder F.mappath(MO_APP & "Templates") F.fso.CreateFolder F.mappath(MO_APP & "Config") F.fso.CreateFolder F.mappath(MO_APP & "Library") F.fso.CreateFolder F.mappath(MO_APP & "Library/Extend") F.fso.CreateFolder F.mappath(MO_APP & "Library/TagLib") F.fso.CreateFolder F.mappath(MO_APP & "Library/PreLib") F.fso.CreateFolder F.mappath(MO_APP & "Library/EndLib") F.fso.CreateFolder F.mappath(MO_APP & "Library/Common") F.fso.CopyFile F.mappath(MO_CORE & "Action/Action.Home.asp") ,F.mappath(MO_APP & "Action/Action.Home.asp") end if if F.fso.FileExists(F.mappath(MO_APP & "Config/Config.asp")) then Include F.mappath(MO_APP & "Config/Config.asp") if F.fso.FileExists(F.mappath(MO_APP & "Library/Common/Function.asp")) then Include F.mappath(MO_APP & "Library/Common/Function.asp") if MO_IMPORT_COMMON_FILES<>"" then dim files : files = Split(MO_IMPORT_COMMON_FILES,";") if ubound(files)<0 then exit sub for each file in files if trim(file)<>"" then if Instr(file,"=")>0 then IncludeFile F.mappath(MO_APP & "Library/Common/" & Mid(file,1,Instr(file,"=")-1) & ".asp"),Mid(file,Instr(file,"=") 1) else Include F.mappath(MO_APP & "Library/Common/" & file & ".asp") end if end if next end if end sub '**************************************************** '@DESCRIPTION: Class_Terminate '**************************************************** private sub Class_Terminate() dim d for each d in mvarDicts if isobject(mvarDicts(d)) then set mvarDicts(d)=nothing next for each d in mvarUse if isobject(mvarUse(d)) then set mvarUse(d)=nothing next for each d in mvarConfig if isobject(mvarConfig(d)) then set mvarConfig(d)=nothing next set mvarDicts = nothing set mvarUse = nothing set mvarConfig = nothing set mvarLibrarys = nothing end sub '**************************************************** '@DESCRIPTION: include libiary as static object. eg: Static("JsonParser"),Static("TagLib:Tag.Rewrite") '@PARAM: lib [Variant] : library name,Eg. JsonParser. All the Library in Library Folder can be included '@RETURN: [Object] the static object '**************************************************** public function [Static](byval lib) if not mvarUse.exists(lib) then set mvarUse(lib) = MoAspEnginer__(lib) set [Static] = mvarUse(lib) end function '**************************************************** '@DESCRIPTION: include libiary. eg: MoAspEnginer__("JsonParser"),MoAspEnginer__("TagLib:Tag.Rewrite") '@PARAM: lib [String] : library name,Eg. JsonParser. All the Library in Library Folder can be included '@RETURN: [Object] library included '**************************************************** public default function MoAspEnginer__(byval lib) dim useResult:useResult = Use(lib) set MoAspEnginer__ = LoadLibrary("",useResult(0),useResult(1)) end function '**************************************************** '@DESCRIPTION: include library. eg: Use("JsonParser"),Use("TagLib:Tag.Rewrite") '@PARAM: lib [String] : library name,Eg. JsonParser. All the Library in Library Folder can be included. '@RETURN: [Array] library information. [0]=library class,[1] = library name, [2] = library folder '**************************************************** public function Use(byval lib) dim path,core,cls,library core="Extend" cls = lib library = "Lib" if instr(lib,":")>0 then core = mid(lib,1,instr(lib,":")-1) cls = mid(lib,instr(lib,":") 1) end if if instr(cls,".")>0 then library = mid(cls,1,instr(cls,".")-1) cls = mid(cls,instr(cls,".") 1) end if if not mvarLibrarys.exists(library & "_" & cls) then path = F.mappath(MO_APP & "Library/" & core & "/Mo." & library & "." & cls & ".asp") if not F.fso.fileexists(path) then path = F.mappath(MO_CORE & "Library/" & core & "/Mo." & library & "." & cls & ".asp") if F.fso.fileexists(path) then LoadLibrary path,library,cls else Err.Raise 1,"Mo.Use(lib)","Mo.Core.asp, 198 : library '" & cls & "' is not exists." end if Use = Array(library,cls,core) end function '**************************************************** '@DESCRIPTION: if a Model cache is exists. '@PARAM: name [String] : Cache name '@RETURN: [Boolean] if exists return true,or return false '**************************************************** public function ModelCacheExists(byval name) if name="" then ModelCacheExists = false exit function end if ModelCacheExists = F.fso.FileExists(F.mappath(MO_APP & "Cache/Model/" & name & ".cak")) end function '**************************************************** '@DESCRIPTION: save Model cache to local file '@PARAM: name [String] : Cache name '@PARAM: content [String] : Cache content '@RETURN: [Boolean] if save successfully return true,or return false '**************************************************** public function ModelCacheSave(byval name,byref content) if name="" then ModelCacheSave = false exit function end if ModelCacheSave = [Static]("File").writetext(F.mappath(MO_APP & "Cache/Model/" & name & ".cak"),content,MO_CHARSET) end function '**************************************************** '@DESCRIPTION: load Model cache from local file '@PARAM: name [String] : Cache name '@RETURN: [String] Cache content '**************************************************** public function ModelCacheLoad(byval name) if name="" then ModelCacheLoad = "" exit function end if ModelCacheLoad = [Static]("File").readtext(F.mappath(MO_APP & "Cache/Model/" & name & ".cak"),MO_CHARSET) end function '**************************************************** '@DESCRIPTION: delete Model cache '@PARAM: name [String] : Cache name '@RETURN: [Boolean] if delete successfully return true,or return false '**************************************************** public function ModelCacheDelete(byval name) if name="" then ModelCacheDelete = false exit function end if ModelCacheDelete = [Static]("File").delete(F.mappath(MO_APP & "Cache/Model/" & name & ".cak")) end function '**************************************************** '@DESCRIPTION: clear Model cache '@RETURN: [Boolean] if clear successfully return true,or return false '**************************************************** public function ModelCacheClear() ModelCacheClear = [Static]("Folder").Clear(F.mappath(MO_APP & "Cache/Model")) end function '**************************************************** '@DESCRIPTION: clear compiled cache '@RETURN: [Boolean] if clear successfully return true,or return false '**************************************************** public function ClearCompiledCache() ClearCompiledCache = [Static]("Folder").Clear(F.mappath(MO_APP & "Cache/Compiled")) end function '**************************************************** '@DESCRIPTION: clear library cache '@RETURN: [Int] library count that was cleared '**************************************************** public function ClearLibraryCache() dim app,count,list,arraylist count=0 Application.Lock() for each app in Application.Contents if left(app,5 len(MO_APP_NAME))=MO_APP_NAME & "_lib_" then list = list & app & "," end if next if list<>"" then list = left(list,len(list)-1) arraylist = split(list,",") for each app in arraylist Application.Contents.Remove(app) count=count 1 next Application.UnLock() ClearLibraryCache = count end function private function LoadLibrary(byval path,byval library,byval cls) if path="" then if mvarLibrarys(library & "_" & cls) = "jscript" then set LoadLibrary = F.import("Mo" & library & cls) elseif mvarLibrarys(library & "_" & cls) = "vbscript" then execute "set LoadLibrary = new Mo" & library & cls else Err.Raise 2,"Mo.LoadLibrary(path, library, cls)","Mo.Core.asp, 302 : 类库[Mo" & library & cls & "]不存在或初始化失败,请检查类库是否存在" end if exit function end if if not MO_DEBUG then on error resume next err.clear dim ret,language,filesum,isnew path = F.mappath(path) filesum = library & "." & cls isnew = false if ((Application(MO_APP_NAME & "_lib_" & filesum & "_lng")<>"jscript" and Application(MO_APP_NAME & "_lib_" & filesum & "_lng")<>"vbscript")) or (not MO_LIB_CACHE) then ret = LoadFile(path,"UTF-8") ret = replaceex(ret,"(^(\s )|(\s )$)","") ret = trim(ret) Application.Lock() Application(MO_APP_NAME & "_lib_"&filesum & "_cache") =ret Application.UnLock() isnew = true else ret = Application(MO_APP_NAME & "_lib_"&filesum & "_cache") end if if regtest(ret,"^<script(. ?)runat=""server""(.*?)>") then ret = ReplaceEx(ret,"^<script(. ?)>(\s*)","") ret = ReplaceEx(ret,"(\s*)</script>","") F.execute ret,"Mo" & library & cls language = "jscript" else if left(ret,2)="<%" then ret = mid(ret,3) if right(ret,2)=replace("% >"," ","") then ret = left(ret,len(ret)-2) executeglobal ret language = "vbscript" end if if err then LoadLibrary = false else LoadLibrary = true mvarLibrarys(library & "_" & cls) = language if isnew then Application.Lock() Application(MO_APP_NAME & "_lib_"&filesum & "_lng") =language Application.UnLock() end if end if err.clear end function '**************************************************** '@DESCRIPTION: display data to template and write to remote.you can display template in different model or different template '@PARAM: template [String] : template name '**************************************************** public function display(template) Response.Status = mvarStatus Response.AddHeader "Content-Type","text/html; charset=" & MO_CHARSET Response.Write fetch(template) end function '**************************************************** '@DESCRIPTION: display data to template and return html.you can display template in different model or different template '@DESCRIPTION: also you can save HTML code to local file as static '@PARAM: template [String] : template name '@RETURN: [String] the last html code '**************************************************** public function fetch(byval template) dim html,cachename,OldHash,NewHash,usecache,vbscript,cachepath usecache =false if MO_COMPILE_CACHE then cachename = mvarRealMethod & "^" & mvarRealAction & "^" & replace(template,":","^") cachepath = F.mappath(MO_APP & "Cache/Compiled/" & cachename & ".asp") if F.FSO.FileExists(cachepath) then OldHash = F.FSO.GetFile(cachepath).DateLastModified usecache = true if MO_COMPILE_CACHE_EXPIRED>0 then if datediff("s",OldHash,now())>=MO_COMPILE_CACHE_EXPIRED then usecache=false end if if usecache then vbscript = LoadVBScript(cachepath,MO_CHARSET) end if end if if not usecache then html = LoadTemplateEx(template) if html="" then fetch="" exit function end if 'Execute LoadVBScript(F.mappath(MO_CORE & "Library/Core/Mo.View.asp"),"utf-8") vbscript = (new MoAspEnginer_View)(html) if MO_COMPILE_CACHE then SaveFile cachepath,"<%"&vbscript&"%" &">",MO_CHARSET end if ExecuteGlobal vbscript if not MO_DIRECT_OUTPUT then fetch = Temp___() if MO_CACHE=true and MO_CACHE_DIR<>"" and (not MO_DIRECT_OUTPUT) then if F.fso.folderexists(F.mappath(MO_CACHE_DIR)) then SaveFile F.mappath(MO_CACHE_DIR & mvarCacheFileName & ".cache"),fetch,MO_CHARSET end if end function private function LoadTemplateEx(Byval template) Dim tempStr,Match,fn,Matches,tfun,resultstr dim templatelist,vpath,path,html,vbscript,templatelist2 templatelist = split(template,":") if ubound(templatelist)=0 then vpath = MO_TEMPLATE_NAME & "/" & mvarMethod & MO_TEMPLATE_SPLIT & template elseif ubound(templatelist)=1 then vpath = MO_TEMPLATE_NAME & "/" &replace(template,":",MO_TEMPLATE_SPLIT) elseif ubound(templatelist)=2 then vpath = templatelist(0) & "/" & templatelist(1) & MO_TEMPLATE_SPLIT & templatelist(2) end if path = MO_APP & "Templates/" & vpath & "." & MO_TEMPLATE_PERX if instr(vpath,"@")>0 then path = MO_ROOT & mid(vpath,instrrev(vpath,"@") 1) & "/Templates/" & mid(vpath,1,instrrev(vpath,"@")-1) & "." & MO_TEMPLATE_PERX if not F.fso.FileExists(F.mappath(path)) then path = MO_CORE & "Templates/" & vpath & "." & MO_TEMPLATE_PERX path = F.mappath(path) if not F.fso.FileExists(path) then exit function tempStr = LoadFile(path,MO_CHARSET) Set Matches = GetMatch(tempStr,"<include file\=\""(. ?)(\." & MO_TEMPLATE_PERX & ")?\"" />") if Matches.count>0 Then For Each Match In Matches templatelist2 = RightCopy(templatelist,split(Match.subMatches(0),":")) tempStr=Replace(tempStr, Match.value, LoadTemplateEx(Join(templatelist2,":")), 1, -1, 0) Next End If LoadTemplateEx = tempStr End Function private function ParseTemplatePath(Byval template) dim templatelist,vpath templatelist = split(template,":") if ubound(templatelist)=0 then vpath = MO_TEMPLATE_NAME & "/" & mvarMethod & MO_TEMPLATE_SPLIT & template elseif ubound(templatelist)=1 then vpath = MO_TEMPLATE_NAME & "/" &replace(template,":",MO_TEMPLATE_SPLIT) elseif ubound(templatelist)=2 then vpath = templatelist(0) & "/" & templatelist(1) & MO_TEMPLATE_SPLIT & templatelist(2) end if ParseTemplatePath = vpath end function '**************************************************** '@DESCRIPTION: to ensure if the template is in app directory '@PARAM: template [Variant] : template name '@RETURN: [Boolean] if exists return true,else return false '**************************************************** public function templateIsInApp(Byval template) dim vpath,path vpath = ParseTemplatePath(template) path = MO_APP & "Templates/" & vpath & "." & MO_TEMPLATE_PERX if instr(vpath,"@")>0 then path = MO_ROOT & mid(vpath,instrrev(vpath,"@") 1) & "/Templates/" & mid(vpath,1,instrrev(vpath,"@")-1) & "." & MO_TEMPLATE_PERX templateIsInApp = F.fso.FileExists(F.mappath(path)) End Function '**************************************************** '@DESCRIPTION: to ensure if the template is in core directory '@PARAM: template [Variant] : template name '@RETURN: [Boolean] if exists return true,else return false '**************************************************** public function templateIsInCore(Byval template) dim vpath,path vpath = ParseTemplatePath(template) path = MO_CORE & "Templates/" & vpath & "." & MO_TEMPLATE_PERX templateIsInCore = F.fso.FileExists(F.mappath(path)) End Function '**************************************************** '@DESCRIPTION: assign data to system '@PARAM: key [String] : variable name '@PARAM: value [Variant] : variable value. it can be an Jscript object '**************************************************** public function assign(byval key,byref value) if typename(value)="JScriptTypeInfo" then if MO_COMPILE_STRICT then Execute "set " & key & " = value" else set mvarDicts(key) = value else if MO_COMPILE_STRICT then Execute key & " = value" else mvarDicts(key) = value end if end function '**************************************************** '@DESCRIPTION: if an variable is exists '@PARAM: key [String] : variable name '@RETURN: [Boolean] if exists return true,or return false '**************************************************** public function Exists(byval key) Exists = mvarDicts.exists(key) end function '**************************************************** '@DESCRIPTION: get the value of defined variable '@PARAM: key [String] : variable name '@RETURN: [Variant] variable value. '**************************************************** public function Value(byval key) if MO_COMPILE_STRICT then dim ty:ty = eval("typename(" & key & ")") if ty="JScriptTypeInfo" then Execute "Set Value = " & key else Execute "Value = " & key end if exit function end if if not mvarDicts.exists(key) then Value = null exit function end if if typename(mvarDicts(key))="JScriptTypeInfo" then set Value = mvarDicts(key) if Value.isset__("Reset") then Value.Reset() else Value = mvarDicts(key) end if end function '**************************************************** '@DESCRIPTION: get the property value of an object '@PARAM: l [String] : Object name(variable name) '@PARAM: k [String] : property name '@RETURN: [Variant] property value '**************************************************** public function values(byval l,byval k) if MO_COMPILE_STRICT then Execute "values = " & l & "." & k exit function end if if not mvarDicts.exists(l) then values = "" exit function end if if typename(mvarDicts(l))="JScriptTypeInfo" then if mvarDicts(l).isset__(k) then execute "values = mvarDicts(l)." & k exit function end if end if values="" end function '**************************************************** '@DESCRIPTION: load a config. the config files are in 'Config' directory of Core or App. '@PARAM: lib [String] : config name '@RETURN: [Object] config object '**************************************************** public function C(byval lib) if mvarConfig.exists(lib) then set C = mvarConfig(lib) exit function end if dim filepath : filepath = F.mappath(MO_APP & "Config/Mo.Conf." & lib & ".asp") if not F.fso.fileexists(filepath) then filepath = F.mappath(MO_CORE & "Config/Mo.Conf." & lib & ".asp") if F.fso.fileexists(filepath) then if LoadLibrary(filepath,"Conf",lib) then set mvarConfig(lib) = LoadLibrary("","Conf",lib) set C = mvarConfig(lib) else Err.Raise 3,"Mo.C(lib)","Mo.Core.asp, 547 : 配置[" & lib & "]无法加载,请检查配置文件是否正确" end if else Err.Raise 4,"Mo.C(lib)","Mo.Core.asp, 546 : 配置[" & lib & "]无法加载,请检查配置文件是否存在" end if end function '**************************************************** '@DESCRIPTION: load another action '@PARAM: lib [String] : action name '@RETURN: [Object] action object '**************************************************** public function A(byval lib) if mvarLibrarys("Action" & "_" & lib) = "jscript" then set A = F.import(Action & lib) exit function elseif mvarLibrarys("Action" & "_" & lib) = "vbscript" then execute "set A = new Action" & lib exit function end if dim filepath : filepath = F.mappath(MO_APP & "Action/Action." & lib & ".asp") if not F.fso.fileexists(filepath) then filepath = F.mappath(MO_CORE & "Action/Action." & lib & ".asp") if F.fso.fileexists(filepath) then if LoadModel(filepath,lib) then set A = LoadModel("",lib) else Err.Raise 5,"Mo.A(lib)","Mo.Core.asp, 574 : 模块[" & lib & "]无法加载,请检查模块文件" end if else Err.Raise 6,"Mo.A(lib)","Mo.Core.asp, 573 : 模块[" & lib & "]无法加载,请检查模块文件是否存在" end if end function '**************************************************** '@DESCRIPTION: load TagLib to do something for template content. this method will be called automatic. '@PARAM: mvarContent [String] : template content '**************************************************** public sub TagLib(byref mvarContent) if MO_TAG_LIB<>"" then dim libs,lib,T__ libs = split(MO_TAG_LIB,",") for each lib in libs Call MoAspEnginer__("TagLib:Tag." & lib)(mvarContent) next end if end sub private sub Start__() if MO_PRE_LIB<>"" then dim libs,lib,T__ libs = split(MO_PRE_LIB,",") for each lib in libs Call MoAspEnginer__("PreLib:Pre." & lib)(Mo.method,Mo.Action) next end if end sub private sub End__() if MO_END_LIB<>"" then dim libs,lib,T__ libs = split(MO_END_LIB,",") for each lib in libs Call MoAspEnginer__("EndLib:End." & lib)(Mo.method,Mo.Action) next end if end sub '**************************************************** '@DESCRIPTION: Debug something '**************************************************** public sub Debug_() if (err and MO_SHOW_SERVER_ERROR) then if err.number=438 then F.echo "动作[" & mvarAction & "]错误:模块[" & mvarMethod & "]的默认动作" & mvarAction & "未定义或程序使用了未定义的函数",true elseif err.number>0 then F.echo "系统错误:[" & err.number &" = " & err.source & "]" & err.description,true end if end if end sub '**************************************************** '@DESCRIPTION: the entry or program '**************************************************** public sub Run() Response.Charset=MO_CHARSET if not RegTest(Mo_METHOD_CHAR,"^(\w )$") then Mo_METHOD_CHAR = "m" if not RegTest(Mo_ACTION_CHAR,"^(\w )$") then Mo_ACTION_CHAR = "a" mvarMethod = Trim(F.get(Mo_METHOD_CHAR)) mvarAction = Trim(F.get(Mo_ACTION_CHAR)) If mvarAction = "" Then mvarAction = "Index" If mvarMethod = "" Then mvarMethod = "Home" if not RegTest(mvarAction,"^(\w )$") then mvarAction = "Index" if not RegTest(mvarMethod,"^(\w )$") then mvarMethod = "Home" mvarCacheFileName = Md5(F.server("URL") & request.QueryString & "") if MO_CACHE=true then if F.fso.fileexists(F.mappath(MO_CACHE_DIR & mvarCacheFileName & ".cache")) then Response.Write LoadFile(F.mappath(MO_CACHE_DIR & mvarCacheFileName & ".cache"),MO_CHARSET) exit sub end if end if dim theMethod theMethod = mvarMethod ModelPath = MO_APP & "Action/Action." & mvarMethod & ".asp" if not F.fso.FileExists(F.mappath(ModelPath)) then ModelPath = MO_APP & "Action/Action.Empty.asp" theMethod ="Empty" if not F.fso.FileExists(F.mappath(ModelPath)) then ModelPath =MO_CORE & "Action/Action." & mvarMethod & ".asp" theMethod =mvarMethod if not F.fso.FileExists(F.mappath(ModelPath)) then ModelPath = MO_CORE & "Action/Action.Empty.asp" theMethod ="Empty" if not F.fso.FileExists(F.mappath(ModelPath)) then F.exit "Mo.Core.asp, 663 : 模块[" & mvarMethod & "]不存在" end if end if end if mvarRealMethod = theMethod mvarRealAction = mvarAction Execute "MO_METHOD = theMethod" Execute "MO_ACTION = mvarAction" Call Start__() if not LoadModel(F.mappath(ModelPath),theMethod) then F.exit "Mo.Core.asp, 673 : 模块[" & mvarMethod & "]加载失败(" & mvarException.description & ")" if not MO_DEBUG then on error resume next err.clear dim ModelClass:set ModelClass = LoadModel("",theMethod) Execute "Call ModelClass." & mvarAction & "()" if err.number=438 then err.clear mvarRealAction = "Empty" Execute "Call ModelClass.Empty(""" & mvarAction & """)" end if Set ModelClass = Nothing Call End__() Model__.dispose() F.dispose() Call Debug_() end sub private function LoadModel(byval path,byval model) if path="" then if mvarLibrarys("Action" & "_" & model) = "jscript" then set LoadModel = F.import("Action" & model) elseif mvarLibrarys("Action" & "_" & model) = "vbscript" then execute "set LoadModel = new Action" & model end if exit function end if if not MO_DEBUG then on error resume next err.clear dim ret,language ret = LoadFile(F.mappath(path),MO_CHARSET) ret = replaceex(ret,"(^(\s )|(\s )$)","") ret = trim(ret) if regtest(ret,"^<script(. ?)runat=""server""(.*?)>") then ret = ReplaceEx(ret,"^<script(. ?)>(\s*)","") ret = ReplaceEx(ret,"(\s*)</script>","") if not F.execute(ret,"Action" & model) then Err.Raise F.exception.Number,"JScript",F.exception.Description language = "jscript" else if left(ret,2)="<%" then ret = mid(ret,3) if right(ret,2)=replace("% >"," ","") then ret = left(ret,len(ret)-2) executeglobal ret language = "vbscript" end if if err then LoadModel = false set mvarException = F.json("{""Number"":""" & err.Number & """,""Source"":""" & F.jsEncode(err.Source) & """,""Description"":""" & F.jsEncode(err.Description) & """}") else LoadModel = true mvarLibrarys("Action" & "_" & model) = language end if err.clear end function '**************************************************** '@DESCRIPTION: get Records Affected count of a sql query '@PARAM: conn [object(Connection)] : an opened connection object '@PARAM: sqlstring [String] : sql string '@RETURN: [Int] Affected count '**************************************************** public function RecordsAffected(byref conn,byval sqlstring) conn.execute sqlstring,RecordsAffected end function '**************************************************** '@DESCRIPTION: output assigned variable '**************************************************** public sub dump() F.dump mvarDicts end sub end class %>