|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天server1成绩提出
常常看到一些网站大概Web使用体系,在扫瞄器看来,他们只接纳一个页面,一切的页面地点都是经由过程这个页面的参数链接失掉的。比方:
http://abc.com/default.asp?pg=AdminPage&command=View
http://abc.com/default.asp?pg=ShowPage&command=List
等等诸云云类的器材。之前我没有细心想过该怎样完成,大概页面不同不年夜用几个分歧的Sub来做就好了;但是细心看了看两个地点,两个页面的不同太年夜了;假如这一个页面包括这么多的Sub,这对程序员而言几乎是一种培植,并且美工基本没法加入。我和一个网友会商了好久,他提出用ISAPI,我以为很可怕。
厥后想了想,记起来转向的几种办法:Server.Transfer,Response.Redirect,Server.Execute就不算了。Response.Redirect是IIS明白标明不太用的(可是我之前做ASP的时分用得最多)。厥后看看Server.Transfer,越看越以为可以利用的模样。IIS的匡助中举行了以下论述:
WhenyoucallServer.Transfer,thestateinformationforallthebuilt-inobjectswillbeincludedinthetransfer.Thismeansthatanyvariablesorobjectsthathavebeenassignedavalueinsessionorapplicationscopewillbemaintained.Inaddition,allofthecurrentcontentsfortherequestcollectionswillbeavailabletothe.aspfilereceivingthetransfer.也就是说,一切的Request汇合、Session、Application都是共享的。如许就可以够在分歧的页面举行交互了。
看到这些,我就下手做了一些代码,论述以下:
2完成
我的开端设法是:在一个xml文件中纪录一切的称号-地点对比汇合,然后在default.asp中读取这个汇合,在查询字符串的pg中读取pagename,然后Server.Transfer到响应的页面中。关头代码以下:
default.asp:
<!--#includefile="Functions.asp"-->
<%
OnErrorResumeNext
Response.CharSet="gb2312"
DimopageName,opageURL
opageName=Request.QueryString("pg")
IfopageName""Then
opageURL=GetPage(opageName)
Else
Response.Write"OKOK,Youdidntpassapgparameter."
Response.End
EndIf
IfopageURL=""Then
Response.Write"找不到映照文件for:"&opageName
Else
Server.Transfer(opageURL)
EndIf
IfErr.Number0Then
Response.WriteErr.Description
EndIf
%>
Functions.asp:
<%
OptionExplicit
DimconfigPath,Page_URL_Dict
configPath=Server.MapPath("./conf/app-conf.xml")
SetPage_URL_Dict=Server.CreateObject("Scripting.Dictionary")
‘依据pageName获得页面地点
FunctionGetPage(pageName)
IfPage_URL_Dict.Count=0Then
ReadPageURLToDict
EndIf
GetPage=Page_URL_Dict(pageName)
EndFunction
‘初始化pageName-pageURL对比字典
FunctionReadPageURLToDict()
OnErrorResumeNext
Page_URL_Dict.RemoveAll
DimlogNode,xmlDom,root
SetxmlDom=Server.CreateObject("Microsoft.XMLDOM")
xmlDom.async=False
xmlDom.load(configPath)
Setroot=xmldom.selectSingleNode("//url-mappings")
ForEachlogNodeInroot.childNodes
Page_URL_Dict.AddlogNode.childNodes(0).text,logNode.childNodes(1).text
Next
SetxmlDom=Nothing
IfErr.Number0Then
Response.WriteErr.Source&"<br>"
Response.WriteErr.Description&"<br>"
EndIf
EndFunction
%>
app-conf.xml
<?xmlversion="1.0"?>
<app-conf>
<url-mappings>
<url-mapping>
<page-name>pgHome</page-name>
<page-url>Page2.asp</page-url>
</url-mapping>
<url-mapping>
<page-name>pgShowNews</page-name>
<page-url>shownews-1_0.asp</page-url>
</url-mapping>
<url-mapping>
<page-name>pgHtml</pag</p>ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊! |
|