ASP编程:实例剖析进修ASP+XML编程
ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。asp+|xml|编程 本文是一篇实例解说的文章。作为一个一般的程序员,我深知,一个优异的例程,关于正在进修编程的人是何等的有匡助。本文中利用的例程,是一个接洽信息办理程序,我也是写来以便利本人和伴侣们相互接洽用的。但麻雀虽小,五脏俱全,信任对正在进修ASP+XML编程的伴侣们,仍是具有必定的参考代价的。读者能够经由过程此实例,懂得在ASP(ActiveServerPage)中怎样利用XML文件,并举行数据的各类处置,包含XML节点的创建、修正、删除和保留等等。文中触及到的手艺包含ASP,VBScript,DOM,XML和XSL等。
本文未对利用到的手艺举行深切的实际先容,因而,读者必要具有必定的相干常识,特别是对ASP、XML和DOM应当有必定的懂得。通读本文,并参考源代码,信任读者必定能够纯熟地把握XML编程。
1、程序申明
例程基于B/S布局,利用XML文件存储接洽信息,然后经由过程一个VBScript写的Class,利用DOM,对XML文件中的接洽信息举行各类操纵。
例程供应的代码接纳了一致的定名标准,次要包含:用三个字母的缩写申明变量范例,如数字范例――int,字符串范例――str,工具――obj,等等,固然在ASP/VBScript中,不辨别数据范例,但利用分明的数据范例申明,对程序的编写和保护仍是很成心义的;利用成心义的变量称号,如XMLDocument工具,界说为objXmlDoc,等等,一样,如许做的也是为了更好地编写和保护程序。
此程序能够分为背景数据处置和前台界面体现两部分。
程序背景,利用VBScript编写了一个Class,这是在VBScript5.0版中供应的新特征。固然这里Class的观点和真实的面向工具相往甚远,可是,在ASP中公道地利用Class,仍是能够在必定水平上进步程序的运转效力和可保护性。
前台体现,利用XSL对XML文件中的数据举行了格局化,然后以HTML的情势输入到客户端,充实表现了XML手艺带来的天真性与可定制性。格局化的历程放在了服务器端,利用ASP程序完成,如许,客户端失掉的是经由格局化以后的HTML信息,制止了兼容性成绩的呈现。
固然,程序关于详细的操纵细节未作十分严厉的查验,好比接洽信息必填项的反省,可是,关于在ASP中利用DOM操纵XML的有关部分,程序供应了完全的示例代码。
2、XML文件申明(persons.xml)
例程中利用到的XML文件布局非常复杂,而且没有界说相干的Schema大概DTD,由于,关于此程序这是不用要的。固然,假如读者乐意本人界说一个的话,也不会对程序的运转发生影响。
程序的数据布局界说以下,Persons汇合,它包括多个Person工具,每个Person工具包含姓名Name、英文名Nick、手机Mobile、德律风Tel、电子邮件Email、腾讯QQ和地点公司Company的属性。将以上界说对应到XML文件即,Persons为根节点,Person为Persons的子节点,Name、Nick、Mobile、Tel、Email、QQ和Company为Person的子节点。
如许,我们失掉的XML文件内容以下:
<?xmlversion="1.0"encoding="gb2312"?>
<Persons>
<Person>
<Name>小东</Name>
<Nick>gwd</Nick>
<Mobile>139XXXXXXXX</Mobile>
<Tel>XXXXXXXX</Tel>
<Email>gwd@chinaren.com</Email>
<QQ>7066015</QQ>
<Company>XXX</Company>
<Person>
</Person>
读者必要注重<?xmlversion="1.0"encoding="gb2312"?>这一行,XML默许不撑持中文,经由过程设置encoding属性,才可使XML准确地显现中文。读者能够在IE5.0及以上版本的扫瞄器中会见此文件,它会以树型布局把数据显现出来。
3、格局转换XSL文件申明(Persons.xsl)
例程中利用XSL对XMl数据举行格局化,并以HTML的情势前往到客户端。这个历程也能够放在客户端举行,但思索到兼容性的成绩,例程中接纳了在服务器端经由过程ASP利用DOM举行格局化的办法。
XSL文件的内容以下,
<?xmlversion="1.0"encoding="gb2312"?>
<xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0">
<xsl:templatematch="/Persons">
<tablewidth="600"border="0"align="center">
<tr>
<tdalign="right"><ahref="javascript:add();"title="增加新接洽人">增加新接洽人</a> </td>
</tr>
</table>
<tablealign="center"width="680"cellspacing="1"cellpadding="2"border="0"bgcolor="#666600">
<trclass="title"bgcolor="#E5E5E5">
<tdwidth="25"><xsl:textdisable-output-escaping="yes">&</xsl:text>nbsp;</td>
<td>姓名</td>
<td>英文名</td>
<td>手机</td>
<td>德律风</td>
<td>Email</td>
<td>QQ</td>
<td>地点公司</td>
</tr>
<xsl:for-eachselect="Person">
<TRBGCOLOR="#FFFFFF">
<TDALIGN="right"><xsl:value-ofselect="position()"/></TD>
<TDSTYLE="color:#990000"><A><xsl:attributename="HREF">javascript:edit(<xsl:value-ofselect="position()"/>);</xsl:attribute><xsl:attributename="title">修正信息 </xsl:attribute><xsl:value-ofselect="Name"/></A></TD>
<TD><xsl:value-ofselect="Nick"/></TD>
<TD><xsl:value-ofselect="Mobile"/></TD>
<TD><xsl:value-ofselect="Tel"/></TD>
<TD><A><xsl:attributename="HREF">mailto:<xsl:value-ofselect="Email"/></xsl:attribute><xsl:value-ofselect="Email"/></A></TD>
<TD><xsl:value-ofselect="QQ"/></TD>
<TD><xsl:value-ofselect="Company"/></TD>
</TR>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
在服务器真个转换利用一个函数来完成,格局化乐成,前往HTML字符串,格局化失利,打印堕落误信息,以下,
*******************************************
申明:利用XSL文件格局化XML文件。
参数:strXmlFile--Xml文件,路径+文件名
strXslFile--Xsl文件,路径+文件名
前往:乐成--格局化后的HTML字符串
失利--自界说的毛病信息
*******************************************
FunctionFormatXml(strXmlFile,strXslFile)
DimobjXml,objXsl
strXmlFile=Server.MapPath(strXmlFile)
strXslFile=Server.MapPath(strXslFile)
SetobjXml=Server.CreateObject("MSXML2.DOMDocument")
SetobjXsl=Server.CreateObject("MSXML2.DOMDocument")
objXML.Async=False
IfobjXml.Load(strXmlFile)Then
objXsl.Async=False
objXsl.ValidateonParse=False
IfobjXsl.Load(strXslFile)Then
OnErrorResumeNext捕捉transformNode办法的毛病
FormatXml=objXml.transformNode(objXsl)
IfobjXsl.parseError.errorCode<>0Then
Response.Write"<br><hr>"
Response.Write"ErrorCode:"&objXsl.parseError.errorCode
Response.Write"<br>ErrorReason:"&objXsl.parseError.reason
Response.Write"<br>ErrorLine:"&objXsl.parseError.line
FormatXml="<spanclass=""alert"">格局化XML文件毛病!</span>"
EndIf
Else
Response.Write"<br><hr>"
Response.Write"ErrorCode:"&objXsl.parseError.errorCode
Response.Write"<br>ErrorReason:"&objXsl.parseError.reason
Response.Write"<br>ErrorLine:"&objXsl.parseError.line
FormatXml="<spanclass=""alert"">装载XSL文件毛病!</span>"
EndIf
Else
Response.Write"<br><hr>"
Response.Write"ErrorCode:"&objXml.parseError.errorCode
Response.Write"<br>ErrorReason:"&objXml.parseError.reason
Response.Write"<br>ErrorLine:"&objXml.parseError.line
FormatXml="<spanclass=""alert"">装载XML文件毛病!</span>"
EndIf
SetobjXsl=Nothing
SetobjXml=Nothing
EndFunction
4、操纵Xml数据的Cls_Person类申明(clsPerson.asp)
Cls_Person类用来完成与接洽人信息相干的各类操纵,包含增加、修正和删除等等,它利用VBScript编写。Cls_Person包含Id、Name、Nick、Mobile、Tel、Email、QQ和Company属性,对应于XML文件中的Person节点。Cls_Person包含GetInfoFromXml、AddToXml、EditToXml和DeleteFormXml四个次要办法,分离完成猎取信息,增加信息,修正信息和删除信息四个功效。
Cls_Person的详细完成以下,
***************************************************
援用:pub/constpub.asp
***************************************************
ClassCls_Person
Privatem_intIdId,对应Person节点在Persons汇合中的地位
Privatem_strName姓名
Privatem_strNick英文名
Privatem_strMobile手机
Privatem_strTel德律风
Privatem_strEmail电子邮件
Privatem_strQQQQ号
Privatem_strCompany地点公司
Privatem_strError堕落信息
类初始化
PrivateSubClass_Initialize()
m_strError=""
m_intId=-1
EndSub
类开释
PrivateSubClass_Terminate()
m_strError=""
EndSub
-----读写各个属性---------------------------
PublicPropertyGetId
Id=m_intId
EndProperty
PublicPropertyLetId(intId)
m_intId=intId
EndProperty
PublicPropertyGetName
Name=m_strName
EndProperty
PublicPropertyLetName(strName)
m_strName=strName
EndProperty
PublicPropertyGetNick
Nick=m_strNick
EndProperty
PublicPropertyLetNick(strNick)
m_strNick=strNick
EndProperty
PublicPropertyGetMobile
Mobile=m_strMobile
EndProperty
PublicPropertyLetMobile(strMobile)
m_strMobile=strMobile
EndProperty
PublicPropertyGetTel
Tel=m_strTel
EndProperty
PublicPropertyLetTel(strTel)
m_strTel=strTel
EndProperty
PublicPropertyGetEmail
Email=m_strEmail
EndProperty
PublicPropertyLetEmail(strEmail)
m_strEmail=strEmail
EndProperty
PublicPropertyGetQQ
QQ=m_strQQ
EndProperty
PublicPropertyLetQQ(strQQ)
m_strQQ=strQQ
EndProperty
PublicPropertyGetCompany
Company=m_strCompany
EndProperty
PublicPropertyLetCompany(strCompany)
m_strCompany=strCompany
EndProperty
-----------------------------------------------
猎取毛病信息
PublicFunctionGetLastError()
GetLastError=m_strError
EndFunction
公有办法,增加毛病信息
PrivateSubAddErr(strEcho)
m_strError=m_strError+"<DivCLASS=""alert"">"&strEcho&"</Div>"
EndSub
扫除毛病信息
PublicFunctionClearError()
m_strError=""
EndFunction
从Xml中读取指定节点的数据,并添补各个属性
必要起首设置Id
PublicFunctionGetInfoFromXml(objXmlDoc)
DimobjNodeList
DimI
ClearError
IfobjXmlDocIsNothingThen
GetInfoFromXml=False
AddErr"Dom工具为空值"
ExitFunction
EndIf
IfCStr(m_intId)="-1"Then
GetInfoFromXml=False
AddErr"未准确设置接洽人工具的ID属性"
ExitFunction
Else
I=m_intId-1要读获得节点地位
EndIf
选择并读取节点信息,付与各个属性
SetobjNodeList=objXmlDoc.getElementsByTagName("Person")
IfobjNodeList.length-m_intId>=0Then
OnErrorResumeNext
m_strName=objNodeList(I).selectSingleNode("Name").Text
m_strNick=objNodeList(I).selectSingleNode("Nick").Text
m_strMobile=objNodeList(I).selectSingleNode("Mobile").Text
m_strTel=objNodeList(I).selectSingleNode("Tel").Text
m_strEmail=objNodeList(I).selectSingleNode("Email").Text
m_strQQ=objNodeList(I).selectSingleNode("QQ").Text
m_strCompany=objNodeList(I).selectSingleNode("Company").Text
GetInfoFromXml=True
Else
GetInfoFromXml=False
AddErr"猎取接洽信息产生毛病"
SetobjNodeList=Nothing
ExitFunction
EndIf
SetobjNodeList=Nothing
EndFunction
增加信息到XML文件中
必要起首设置好要添补的属性
PublicFunctionAddToXml(objXmlDoc)
DimobjPerson,objNode
ClearError
IfobjXmlDocIsNothingThen
AddToXml=False
AddErr"Dom工具为空值"
ExitFunction
EndIf
创立Person节点
SetobjPerson=objXmlDoc.createElement("Person")
objXmlDoc.documentElement.appendChildobjPerson
创立各个子节点
-----------------------------------------------------
SetobjNode=objXmlDoc.createElement("Name")
objNode.Text=m_strName
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Nick")
objNode.Text=m_strNick
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Mobile")
objNode.Text=m_strMobile
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Tel")
objNode.Text=m_strTel
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Email")
objNode.Text=m_strEmail
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("QQ")
objNode.Text=m_strQQ
objPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Company")
objNode.Text=m_strCompany
objPerson.appendChildobjNode
-----------------------------------------------------
SetobjNode=Nothing
SetobjPerson=Nothing
OnErrorResumeNext
objXmlDoc.saveServer.MapPath(C_XMLFILE)保留XML文件
IfErr.Number=0Then
AddToXml=True
Else
AddToXml=False
AddErrErr.Description
EndIf
EndFunction
从XML文件中删除数据
必要起首设置Id
PublicFunctionDeleteFromXml(objXmlDoc)
DimobjNodeList,objNode
ClearError
IfobjXmlDocIsNothingThen
DeleteFromXml=False
AddErr"Dom工具为空值"
ExitFunction
EndIf
IfCStr(m_intId)="-1"Then
DeleteFromXml=False
AddErr"未准确设置接洽人工具的ID属性"
ExitFunction
EndIf
SetobjNodeList=objXmlDoc.getElementsByTagName("Person")
IfobjNodeList.length-m_intId<0Then
DeleteFromXml=False
AddErr"未找到响应的接洽人"
SetobjNodeList=Nothing
ExitFunction
EndIf
OnErrorResumeNext
SetobjNode=objXmlDoc.documentElement.removeChild(objNodeList(intId-1))
IfobjNodeIsNothingThen
DeleteFromXml=False
AddErr"删除接洽人失利"
SetobjNodeList=Nothing
ExitFunction
Else
objXmlDoc.saveServer.MapPath(C_XMLFILE)
EndIf
SetobjNode=Nothing
SetobjNodeList=Nothing
IfErr.Number=0Then
DeleteFromXml=True
Else
DeleteFromXml=False
AddErrErr.Description
EndIf
EndFunction
修正XML文件中的数据
必要起首设置好Id
PublicFunctionEditToXml(objXmlDoc)
DimobjPersonList,objOldPerson,objNewPerson,objNode
ClearError
IfobjXmlDocIsNothingThen
EditToXml=False
AddErr"Dom工具为空值"
ExitFunction
EndIf
IfCStr(m_intId)="-1"Then
EditToXml=False
AddErr"未准确设置接洽人工具的ID属性"
ExitFunction
EndIf
SetobjPersonList=objXmlDoc.getElementsByTagName("Person")
IfobjPersonList.length-m_intId<0Then
DeleteFromXml=False
AddErr"未找到响应的接洽人"
SetobjPersonList=Nothing
ExitFunction
EndIf
SetobjOldPerson=objPersonList(m_intId-1)要修正的旧节点
SetobjNewPerson=objXmlDoc.createElement("Person")用来交换旧节点的新节点
SetobjNode=objXmlDoc.createElement("Name")
objNode.Text=m_strName
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Nick")
objNode.Text=m_strNick
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Mobile")
objNode.Text=m_strMobile
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Tel")
objNode.Text=m_strTel
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Email")
objNode.Text=m_strEmail
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("QQ")
objNode.Text=m_strQQ
objNewPerson.appendChildobjNode
SetobjNode=objXmlDoc.createElement("Company")
objNode.Text=m_strCompany
objNewPerson.appendChildobjNode
OnErrorResumeNext
举行交换
SetobjNode=objXmlDoc.documentElement.replaceChild(objNewPerson,objOldPerson)
IfobjNodeIsNothingThen
EditToXml=False
AddErr"修正接洽人失利"
SetobjOldPerosn=Nothing
SetobjNewPerson=Nothing
SetobjPersonList=Nothing
ExitFunction
Else
objXmlDoc.saveServer.MapPath(C_XMLFILE)
EndIf
SetobjOldPerson=Nothing
SetobjNewPerson=Nothing
SetobjPersonList=Nothing
IfErr.Number=0Then
EditToXml=True
Else
EditToXml=False
AddErrErr.Description
EndIf
EndFunction
EndClass
5、程序首页(default.asp)
挪用响应的包括文件和大众函数,格局化XML文件,并举行显现。能够看到,页面Title是可定制的,大众的头部和尾部都做成了响应的包括文件。C_TITLE、C_XMLFILE和C_XSLFILE为大众常量,在constpub.asp文件中界说,至于它们的意义,信任读者能够很简单地分明。这里挪用了下面界说的FormatXml函数。
<%OptionExplicit
%>
<!--#includefile="pub/funcxml.asp"-->
<!--#includefile="pub/constpub.asp"-->
<HTML>
<HEAD>
<TITLE><%=C_TITLE%></TITLE>
<METAHTTP-EQUIV="content-type"CONTENT="text/html;charset=GB2312"/>
<linkrel="stylesheet"href="contact.css"type="text/css">
</HEAD>
<BODY>
<!--#includefile="pub/header.asp"-->
<%=FormatXml(C_XMLFILE,C_XSLFILE)%>
<br>
<!--#includefile="pub/footer.asp"-->
</BODY>
</HTML>
6、增加、修正和删除XML中的信息
我们晓得,在Cls_Person中已界说了响应的办法,因而,在各个文件中,只必要挪用对应的办法便可。增加信息的文件为add.asp,修正信息的文件为edit.asp,删除信息的文件为delete.asp,我们仅以add.asp文件为例举行申明。个中的CheckStrInput和CheckStrOutput函数,用来格局化用户的输出和输入字符串。
<%OptionExplicit
%>
<!--#includefile="pub/funcxml.asp"-->
<!--#includefile="pub/constpub.asp"-->
<!--#includefile="pub/funcpub.asp"-->
<!--#includefile="pub/class/clsPerson.asp"-->
<%
DimobjXml,objPerson
DimstrErr
SetobjXml=Server.CreateObject("MSXML2.DOMDocument")
SetobjPerson=NewCls_Person天生Cls_Person工具
IfRequest.Form("btnOk")<>""Then
IfLoadXmlDoc(objXml,C_XMLFILE,False,strErr)Then装载XML文件
给响应的属性赋值
objPerson.Name=CheckStrInput(Request.Form("txtName"))
objPerson.Nick=CheckStrInput(Request.Form("txtNick"))
objPerson.Mobile=CheckStrInput(Request.Form("txtMobile"))
objPerson.Tel=CheckStrInput(Request.Form("txtTel"))
objPerson.Email=CheckStrInput(Request.Form("txtEmail"))
objPerson.QQ=CheckStrInput(Request.Form("txtQQ"))
objPerson.Company=CheckStrInput(Request.Form("txtCompany"))
IfNotobjPerson.AddToXml(objXml)Then挪用Cls_Person类的AddToXml办法,增加数据
AddErrstrErr,objPerson.GetLastError
Else
AddErrstrErr,"增加乐成"
Response.Write""
EndIf
EndIf
EndIf
SetobjXml=Nothing
%>
<HTML>
<HEAD>
<TITLE><%=C_TITLE%></TITLE>
<METAHTTP-EQUIV="content-type"CONTENT="text/html;charset=GB2312"/>
<linkrel="stylesheet"href="contact.css"type="text/css">
</HEAD>
<BODY>
<%=strErr%>
<divclass="title">增加接洽信息</div>
<formname="form1"method="post"action="add.asp">
<tablealign="center"width="100%"cellspacing="1"cellpadding="2"border="0"bgcolor="#666600">
<trbgcolor="#ffffff">
<tdwidth="25%"bgcolor="#e5e5e5"align="right"><b>姓名:</b></td>
<tdwidth="75%"><inputtype="text"name="txtName"size="25"class="input"value="<%=CheckStrOutput(objPerson.Name)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>英文名:</b></td>
<td><inputtype="text"name="txtNick"size="25"class="input"value="<%=CheckStrOutput(objPerson.Nick)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>手机:</b></td>
<td><inputtype="text"name="txtMobile"size="25"class="input"value="<%=CheckStrOutput(objPerson.Mobile)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>德律风:</b></td>
<td><inputtype="text"name="txtTel"size="25"class="input"value="<%=CheckStrOutput(objPerson.Tel)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>Email:</b></td>
<td><inputtype="text"name="txtEmail"size="25"class="input"value="<%=CheckStrOutput(objPerson.Email)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>QQ:</b></td>
<td><inputtype="text"name="txtQQ"size="25"class="input"value="<%=CheckStrOutput(objPerson.QQ)%>"></td>
</tr>
<trbgcolor="#ffffff">
<tdbgcolor="#e5e5e5"align="right"><b>地点公司:</b></td>
<td><inputtype="text"name="txtCompany"size="25"class="input"value="<%=CheckStrOutput(objPerson.Company)%>"></td>
</tr>
</table>
<br>
<divalign="center">
<inputtype="submit"name="btnOk"value="提交">
<inputtype="button"name="btnClose"value="封闭">
</div>
</form>
</BODY>
</HTML>
<%
SetobjPerson=Nothing
%>
7、总结
到此,我们的接洽信息办理程序就半途而废了。怎样,感到怎样,应当来讲仍是相称复杂的吧。固然了,这个例程另有很多能够改善的中央,我这里也只不外是举一反三,但愿读者在把握了XML编程以后,自行修正完美吧。
此例程已在我本机(WindowsServer2000、IIS5.0和IE6.0)和网长进行了测试,都可以一般运转。
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 那么,ASP.Net有哪些改进呢? 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
页:
[1]