ASP网页编程之利用Server.Transfer对URL举行埋没和...
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天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是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊! 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页:
[1]