ASP入门教程

  • 格式:docx
  • 大小:64.80 KB
  • 文档页数:53

ASP入门教程-前言时间:2008-02-16 含笑ASP(Active Server Pages)是目前最为流行的开放式的Web服务器应用程序开发技术。

使用它可以将HTML语言,脚本语言和Active控件组合一起,产生动态、交互、具有数据库访问功能,且高效率的基于Web的应用程序。

ASP技术的优势主要表现在以下几个方面:ASP运行环境的配置非常方便,只要在Windows平台上安装PWS或IIS,Web服务器与ASP 应用服务器的配置便基本上完成了;ASP技术简单易学,使用ASP编写服务器端脚本可以创建功能强大的Web应用程序,如果已经熟悉VBScript或JavaScript脚本语言,学习ASP就不会感觉到有什么困难;使用ASP技术进行开发时,可以通过建立自己的COM组件,将应用程序的商业逻辑封闭在可重用的模块中,以便在脚本、其他组件或其他程序中调用。

关于Asp代码与页面的分离时间:2008-04-05为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松。

在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况。

这样子做有许多缺点:1.且不说编程时就要对页面布局进行设计和编排,造成代码混乱难懂,不规范;2.当需要改变页面外观时,你不仅要改变HTML部份,也需要改变ASP代码,不易维护。

那么,要如何才能避免这些麻烦呢?答案就是使用模板文件,将ASP代码和HTML页面分开,一切问题就都解决了。

使用模板有以下好处:1.在很短的时间内可以替换整个站点的外观;2.使程序员可以抽象编程,而无须接触HTML代码;3.可以重复利用以前的模板。

使用过PHP的程序就会知道,PHP有个模板程序(FastTemplate),现在的问题是如何在ASP 中实现类似的功能。

Microsoft的ASP带有两种脚本:VBScript和JScript。

它们都带有一个正则表达式对象(RegExp),利用字符串对象和RegExp对象,就可以轻松的实现模板功能。

沐枫以此编写了一个Template.JScript.INC文件,此文件的内容附在文章后面。

有能力的读者可以根据自己的需要进行改进。

下面介绍一下使用方法。

由于此文件是使用JScript编写的(当然要转成VBScript也很容易),因此,缺省脚本语言要设为JScript,即ASP程序第一行应为:%@Language=JScript%,然后再包含模板程序文件:!#includefile=Template.JScript.INC。

先介绍一下Template类的使用:1.建立Template对象:Template(Path)参数:Path(字符串类型)HTML模板文件的存放路径。

使用new操作符建立Template对象。

例子:vartpl=newTemplate(c:\template);在程序中可以用tpl.TplPath来取得模板路径,也可以通过tpl.TplPath来改变模板路径。

如:tpl.TplPath=d:\template;2.装载模板文件:Template.Load(Name,File)参数:Name(字符串类型)是一个模板变量名。

File(字符串类型)模板文件名。

此文件存放在HTML模板路径下。

读取文件File到模板变量Name中。

例子:tpl.Load(Main,TEST.HTM);此时,模板变量Main就包含了文件TEST.HTM的内容。

你可以用tpl.Main来访问模板变量Main。

例子:%=tpl.Main%将显示刚才读进来的TEST.HTM文件内容。

3.模板分拆:Template.Split(Name)参数:Name(字符串类型)是一个模板变量名。

将Name中的子模板分解。

例子:先假设上例中的TEST.HTM内容为:-这是主模板。

接下来是:!#TPLDEFSUBSUB子模板,还有!#TPLDEFTHIRDTHIRD模板。

!#TPLENDTHIRD!#TPLENDSUB-那么:tpl.Split(Main);执行以后,就会生成新的模板变量SUB,和THIRD,它们的内容就是!#TPLDEFSUB 和!#TPLENDSUB之间语句。

而且Main模板变量的内容也会发生改变:tpl.Main的内容为:这是主模板。

接下来是{SUB}tpl.SUB的内容为:SUB子模板,还有{THIRD}tpl.THIRD的内容为:THIRD模板。

TPLDEF和TPLEND定义的语句块充许多重嵌套。

关于ASP访问ACCESS数据的“不能打开注册表关键字”时间:2008-04-05前天,N久以前做的一个ACCESS数据库的程序出错了,程序都没有改动过,之前好好的,突然就不行了。

错误信息如下:----------------------------------Microsoft OLE DB Provider for ODBC Drivers 错误'80004005'[Microsoft][ODBC Microsoft Access Driver]常见错误不能打开注册表关键字'Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet'。

----------------------------------由于最近一台服务器被人攻击垮掉了正在重装,没时间理这个问题。

后来在朋友(是该程序的用户哦)的多翻催促下,决定搞定它。

一开始,还真不摸不清是怎么回事。

在GOOGLE上搜了很多,众说纷纭,过滤去一堆没有结果的垃圾信息,得到下面几个可能原因:1。

微软已经不更新ODBC,需要改用JET的方式连接ACCESS数据库文件;2。

系统目录的权限发生的变更。

也有老帖子说什么原因是:“ACCESS数据库文件是ACCESS97版本的”,这个无须考虑,我用的是ACCESS2000数据库。

对于第一个原因,原来的连接字串如下:--ODBC连接方式------------------------mdbpath=server.MapPath("my.mdb.asp")CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd="-------------------------------------改用JET连接后连接字串为:---JET连接方式---------------------CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source="& mdbpath &" ';Password=luntanbbs"-------------------------------------测试过后无效,虽然提示的错误信息有点不同:----------------------------------Microsoft JET Database Engine 错误'80004005' 未指定的错误----------------------------------最后检查第二个原因:系统目录权限不足。

经询问,原来由于出于安全的考虑一同事把该服务器的WINNT目录设置为Administrators、system “完全控制”,users 只读。

但是,按道理,这样的权限设置,ODBC的驱动程序处于winntsystem32odbcjt32.dll 这个也是可读的,难道是因为缺少“执行”权限?我把winntsystem32目录下所有以odbc开头的DLL文件全部授予“执行”权限,发现还是一样的错误信息。

跟着我索性把整个system32 目录设成everyone 可执行,可是一测试依然不行。

难道是还有其他文件被ODBC或JET调用但又不在这个system32目录下且又没有得到充分授权而导致失败?正在想的时候,蓦然瞥见winnt emp 目录。

嘿,我把temp 目录设置成everyone 可“写入”看看。

一测试,嘿,成了。

使用ODBC连接方式的程序,成功的读取更新ACCESS数据库中的记录。

有意思的是,使用JET连接方式的程序,却报另一个错误:-------------------------------------------Microsoft JET Database Engine 错误'80040e4d' 无法启动应用程序。

工作组信息文件丢失,或是已被其它用户以独占方式打开。

-------------------------------------------嘿嘿,不知道这个JET的错误又怎么回事呢?有时间再搞搞它吧。

如果你知道,请给我发个回复哦。

:-DASP实现邮件发送普通附件和嵌入附件时间:2008-04-05网上很多关于JMail发送邮件的例子都没有写如何发附件,或者没有写清如何发内嵌的附件(比如把附件图片嵌入到HTML信件里面)其实最关键的就是这句要注释掉'JMail.ContentType = "text/html"(为什么要发内嵌的附件图片?因为如果是img src=网上的地址,在outlook等客户端内则显示是难看的“X”,需要手动下载图片)本例子参考了Dimac(w3JMail官方)的样例,文件地址:C:Program FilesDimacw3JMail4ExamplesASPhtmlimage.asp(安装了Jmail的都有)例子代码:以下是引用片段:<%SetJMail=Server.CreateObject("JMail.Message")'是否将信头编码成iso-8859-1字符集.缺省是TrueJMail.ISOEncodeHeaders=True'如果JMail.silent设置为true,ErrorCode包含的是错误代码JMail.Silent=True'设置标题和内容编码,如果标题有中文,必须设定编码为gb2312JMail.Charset="gb2312"'JMail.ContentType="text/html"'如果发内嵌附件一定要注释掉这行,重要!JMail.From="web@"'发送者地址JMail.FromName="SkyheSystem"'发送者姓名JMail.MailServerUserName="web"'身份验证的用户名JMail.MailServerPassword="123456"'身份验证的密码'加入新的收件人JMail.AddRecipient"kittow@","Mr.Example"'JMail.AddRecipientBCCEmail'密件收件人的地址'JMail.AddRecipientCCEmail'邮件抄送者的地址JMail.Subject="图片测试!!!"JMail.Body="AnicepictureifyoucanreadHTML-mail."'增加一个普通附件JMail.AddAttachment(Server.MapPath("images/email.gif"))'增加一个嵌入式附件'ThereturnvalueofAddAttachmentisusedasa'referencetotheimageintheHTMLBody.'contentId=JMail.AddAttachment(Server.MapPath("images/email.gif"))DimcontentIdcontentId=JMail.AddAttachment("E:imagesemail.gif")'只有HTML格式支持嵌入图片附件,我们采用HTML格式的邮件内容'AsonlyHTMLformattedemailscancontaininlineimages'weuseHTMLBodyandappendHTMLJMail.HTMLBody="<html><body><fontcolor=""red"">Hi,hereisanicepicture:</font><br>" JMail.appendHTML"<imgsrc=""cid:"&contentId&""">"JMail.appendHTML"<br><br>goodonehuh?</body></html>"'如果对方信箱不支持HTML格式邮件,我们仍需要给他一个友善的提示'ButasnotallmailreadersarecapableofshowingHTMLemails'wewillalsoaddastandardtextbodyJMail.Body="Toobadyoucan'treadHTML-mail."JMail.appendText"Therewouldhavebeenanicepictureforyou"JMail.Send("")JMail.Close()SetJMail=Nothing%>asp+ajax打造无刷新新闻评论系统时间:2008-04-05 懒羊不知上过ChinaRen校友录的朋友们有没有注意,ChinaRen在改版后很多方面都进行了较大的改动。