ASP网页编程之ASP编程适用20例
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 1.若何用Asp判别你的网站的虚拟物理途径答:利用Mappath办法
< p align="center" >< font size="4" face="Arial" >< b >
The Physical path to this virtual website is:
< /b >< /font >
< font color="#FF0000" size="6" face="Arial" >
< %= Server.MapPath("\")% >
< /font >< /p >
2.我若何晓得利用者所用的阅读器
答:利用the Request object办法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") < > 0 Then
Response.redirect("ForMSIEOnly.htm")
Else
Response.redirect("ForAll.htm")
End If
3.若何盘算天天的均匀重复会见人数
答:处理办法
< % startdate=DateDiff("d",Now,"01/01/1990")
if strdate< 0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) % >
显示了局
< % response.write(avgvpd) % >
that is it.this page have been viewed since November 10,1998
4.若何显示随机图像
< % dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
% >
显示
< img src="< %=dpic% >" >
5.若何回到先前的页面
答:
< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a >
或用图片如:
< img src="http://edu.cnzz.cn/NewsInfo/arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >
6.若何肯定对方的IP地址
答:
< %=Request.serverVariables("REMOTE_ADDR)% >
7.若何链结到一副图片上
答:
< % @Languages=vbs cript % >
< % response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
% >
8.强制输出暗码对话框
答:把这句话放载页面的开首
< % response.status="401 not Authorized"
response.end
% >
9.若何传递变量从一页到另外一页
答:用 HIDDEN 类型来传递变量
< % form method="post" action="mynextpage.asp" >
< % for each item in request.form % >
< input namee="< %=item% >" type="HIDDEN"
value="< %=server.HTMLEncode(Request.form(item)) % >" >
< % next % >
< /form >
10.为什么我在 asp 法式内利用 msgbox,法式失足说没有权限
答:因为 asp 是办事器运转的,假如可以在办事器显示一个对话框,那末你只好等有人按了肯定以后,你的法式才干持续履行,而普通办事器不会有人守着,所以微软不能不制止这个函数,并告知你没有权限。然而ASP和客户端剧本联合倒可以显示一个对话框,以下:
< % yourVar="测试对话框"% >
< % s cript language=''javas cript'' >
alert("< %=yourvar% >")
< /s cript >
11.有无举措回护本人的源代码,不给人看到
答:可以去下载一个微软的Windows s cript Encoder,它可以对asp的剧本和客户端javas cript/vbs cript剧本停止加密。
12.如何才干将 query string 从一个 asp 文件传送到另外一个
答:前者文件到场下句:
Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))
13.global.asa文件老是不起感化
答:只要web目次设置为web application, global.asa才无效,而且一个web application的根目次下 global.asa才无效。IIS可使用Internet Service Manager设置application setting 如何才干使得htm文件好像asp文件一样可以履行剧本代码?
14.如何才干使得htm文件好像asp文件一样可以履行剧本代码
答:Internet Sevices Manager - > 选择default web site - >右鼠键- >菜单属性-〉主目次- > 使用法式设置(Application Setting)- > 点击按钮 "设置装备摆设"- > app mapping - >点击按钮"Add" - > executable browse选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 输出 htm method exclusions 输出PUT.DELETE 全体肯定便可。然而值得注重的是如许对htm也要由asp.dll处置,效力将下降。
15.若何注册组件
答:有两种办法。
第一种办法:手工注册 DLL 这类办法IIs一向利用和其它的Web Server。它需求你在号令行体例上去履行,进入到包括有DLL的目次,并输出:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入办事器中的注册表中。然后这个组件就能够在办事器上利用了,然而这个办法有一个缺点。当利用这类办法注册终了组件后,该组件必需要响应的设置NT的匿名帐号有权限履行这个dll。出格是一些组件需求读取注册表,所以,这个注册组件的办法仅仅是利用在办事器上没有MTS的情形下,要作废注册这个dll,利用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll
第二种办法:利用MTS(Microsoft Transaction Server)MTS答应你指定只要有特权的用户才干够会见组件,大大进步了网站办事器上的平安性设置。在MTS上注册组件的步调以下:
1) 翻开IIS办理掌握台。
2) 睁开transaction server,右键单击"pkgs installed"然后选择"new package"。
3) 单击"create an empty package"。
4) 给该包定名。
5) 指定administrator帐号或则利用"interactive"(假如办事器常常是利用administrator 上岸的话)。
6) 如今利用右键单击你刚创立的谁人包上面睁开后的"components"。选择 "new then component"。
7) 选择 "install new component" 。
8) 找到你的.dll文件然后选择next到完成。
要删除这个对象,只需选择它的图标,然后选择delete。
附注:出格要注重第二种办法,它是用来调试本人编写组件的最好办法,而不用每次都需求从头启念头器了。
16. ASP与Access数据库毗连:
<%@ language=VBs cript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库称号.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库暗码;dbq="&mdbfile
%>
17. ASP与SQL数据库毗连:
<%@ language=VBs cript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL办事器称号或IP地址;UID=sa;PWD=数据库暗码;DATABASE=数据库称号
%>
创立纪录集对象:
set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2
18. SQL经常使用号令利用办法:
(1) 数据纪录挑选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
sql="select * from 数据表 where 字段名 like ''%字段值%'' order by 字段名 "
sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
sql="select * from 数据表 where 字段名 in (''值1'',''值2'',''值3'')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据纪录:
sql="update 数据表 set 字段名=字段值 where 前提表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 前提表达式"
(3) 删除数据纪录:
sql="delete from 数据表 where 前提表达式"
sql="delete from 数据表" (将数据表一切纪录删除)
(4) 添加数据纪录:
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 方针数据表 select * from 源数据表" (把源数据表的纪录添加到方针数据表)
(5) 数据纪录统计函数:
AVG(字段名) 得出一个表格栏均匀值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 获得一个表格栏最大的值
MIN(字段名) 获得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
援用以上函数的办法:
sql="select sum(字段名) as 别号 from 数据表 where 前提表达式"
set rs=conn.excute(sql)
用 rs("别号") 获得统的计值,其它函数应用同上。
数据表的创立和删除:
CREATE TABLE 数据表称号(字段1 类型1(长度),字段2 类型2(长度) …… )
例:
CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表称号
(永世性删除一个数据表)
19. 纪录集对象的办法:
rs.movenext 将纪录指针从以后的地位向下移一行
rs.moveprevious 将纪录指针从以后的地位向上移一行
rs.movefirst 将纪录指针移到数据表第一行
rs.movelast 将纪录指针移到数据表最初一行
rs.absoluteposition=N 将纪录指针移到数据表第N行
rs.absolutepage=N 将纪录指针移到第N页的第一行
rs.pagesize=N 设置每页为N笔记录
rs.pagecount 依据 pagesize 的设置前往总页数
rs.recordcount 前往纪录总数
rs.bof 前往纪录指针是不是超越数据表首端,true暗示是,false为否
rs.eof 前往纪录指针是不是超越数据表末尾,true暗示是,false为否
rs.delete 删除以后纪录,但纪录指针不会向下挪动
rs.addnew 添加纪录到数据表末尾
rs.update 更新数据表纪录
20 Recordset对象办法
Open办法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset对象可以经由过程Source属性来毗连Command对象。Source参数可所以一个Command对象称号、一段SQL号令、一个指定的数据表称号或是一个Stored Procedure。假设省略这个参数,体系则采取Recordset对象的Source属性。
ActiveConnection
Recordset对象可以经由过程ActiveConnection属性来毗连Connection对象。这里的ActiveConnection可所以一个Connection对象或是一串包括数据库毗连信息(ConnectionString)的字符串参数。
CursorType
Recordset对象Open办法的CursorType参数暗示将以甚么样的游标类型启动数据,包含adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述以下:
常数 常数值申明adOpenForwardOnly0缺省值,启动一个只能向前挪动的游标(Forward Only)adOpenKeyset1启动一个Keyset类型的游标adOpenDynamic2启动一个Dynamic类型的游标adOpenStatic3启动一个Static类型的游标
以上几个游标类型将直接影响到Recordset对象一切的属性和办法,以以下表申明他们之间的区分。
Recordset属性
个中NextRecordset办法其实不合用于Microsoft Access数据库。
LockType
Recordset对象Open办法的LockType参数暗示要采取的Lock类型,假如疏忽这个参数,那末体系会以Recordset对象的LockType属性为预设值。LockType参数包括adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述以下:
常数常数值申明adLockReadOnly1缺省值,Recordset对象以只读体例启动,没法运转AddNew、Update及Delete等办法adLockPrssimistic2当数据源正在更新时,体系会临时锁住其他用户的举措,以坚持数据分歧性adLockOptimistic3当数据源正在更新时,体系其实不会锁住其他用户的举措,其他用户可以对数据停止增、删、改的操作adLockBatchOptimistic4当数据源正在更新时,其他用户必需将CursorLocation属性改成adUdeClientBatch才干对数据停止增、 删、改的操作
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
页:
[1]