85 123456789
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:30   |  只看该作者   |  转账至  kabu

找回任务栏的小喇叭

Systray.exe 音频控制常驻内存程序。运行它就会出现大家熟悉的任务栏小喇叭图标,能用来调整音量
和打开音频属性对话框。

它原本是自动运行了,只是让你用优化大师给优掉了,你只要在注册里加入
,让它自动运行就可以了!如下,开始--运行--regedit,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
\Windows\CurrentVersion\Run  在它的右窗口新建字串"Systray",键值为"c:\windows\system32\
Systray.exe"如果是win2000系统,则为"c:\winnt\system32\Systray.exe"

如果是第一次用windows
优化大师后没的,也可以点里面的“开机速度”--“恢复”可以还原的!
31楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:16   |  只看该作者   |  转账至  kabu

ASP进阶第一天:认识表单

说实话,无论是asp,php还是jsp进行网络编程的时候,都离不开和用户的交互。
而人机对话的平台,基本上是靠相应的文本、列表框进行输入,然后通过按钮提交送至数据库的。
所以学习网络编程就一定要了解这些输入平台相关的东西:表单(form)
其基本格式如下:






[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
可以总结出:表单即包括
...
之内的相关内容。
其中内部可以分三大类:input,select,textarea

一,首先看
内部参数
参数name:用来表示该表单的唯一名称,方便一个页面建立多个表单而不混淆,当然更是为了接受页面的确认关系。
参数action:显而易见,是表示当前的表单中所有内容将送交某个页面去处理。处理包括接受信息,数据库比较,添加,修改等。
参数method:即表单的提交方法,含两种方法:post和get。post是传输信息内容,get是传输url值,具体用法将会在下一节“内置对象request”中介绍到

二,再来看Input相关
Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍。
1,type=text
输入类型是text,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等。当然这也是Input的默认类型。
参数name:同样是表示的该文本输入框名称。
参数size:输入框的长度大小。
参数maxlength:输入框中允许输入字符的最大数。
参数value:输入框中的默认值
特殊参数readonly:表示该框中只能显示,不能添加修改。

your name:





[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

2,type=password
不用我说,一看就明白的密码输入框,最大的区别就是当在此输入框输入信息时显示为保密字符。
参数和“type=text”相类似。

your password:
密码长度小于15


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

3,type=file
当你在BBS上传图片,在EMAIL中上传附件时一定少不了的东西:)
提供了一个文件目录输入的平台,参数有name,size。

your file:



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

4,type=hidden
非常值得注意的一个,通常称为隐藏域:如果一个非常重要的信息需要被提交到下一页,但又不能或者无法明示的时候。
一句话,你在页面中是看不到hidden在哪里。最有用的是hidden的值。

your hidden info here:




[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

5,type=button
标准的一windows风格的按钮,当然要让按钮跳转到某个页面上还需要加入写JavaScript代码

your button:



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

6,type=checkbox
多选框,常见于注册时选择爱好、性格、等信息。参数有name,value及特别参数checked(表示默认选择)
其实最重要的还是value值,提交到处理页的也就是value。(附:name值可以不一样,但不推荐。)

a:

b:

c:


name值可以不一样,但不推荐


a:

b:

c:



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

7,type=radio
即单选框,出现在多选一的页面设定中。参数同样有name,value及特别参数checked.
不同于checkbox的是,name值一定要相同,否则就不能多选一。当然提交到处理页的也还是value值。

a:

b:

c:


下面是name值不同的一个例子,就不能实现多选一的效果了


a:

b:

c:



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

8,type=image
比较另类的一个,自己看看效果吧,可以作为提交式图片

your Imgsubmit:



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

9,type=submit and type=reset
分别是“提交”和“重置”两按钮
submit主要功能是将Form中所有内容进行提交action页处理,reset则起个快速清空所有填写内容的功能。






[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

Input的Type总结下来有10个,还是不少的,呵呵

三,接着再来看Select相关
Select主要要来做下拉菜单,跳转菜单,(下拉)列表。
其本身有内嵌代码,option参数value值为传递被处理的值,option还有参数selected,表示默认被选中的。
1,下拉菜单
只是菜单式显示。





[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

2,跳转菜单
在下拉菜单基础上添加JavaScript成为跳转菜单。

  
  
  



size>1你会发现了大不同




加入了multiple发现可以多个选择了,包括Shift进行快速全选及Ctrl进行点选





[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

四,最后关注的Textarea
可以将Textarea文本区域理解为扩大化了的文本输入框。
其参数没有value,默认值设定在之间。
其它参数还有rows,表示文本区域的行数;参数cols,表示文本区域的列数。
还有参数warp,当warp=off表示该文本区域中的不自动换行,当然不写默认是自动换行的。




[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
32楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:51   |  只看该作者   |  转账至  kabu

ASP进阶之插入数据库记录

简单的显示记录已经掌握,现在需要的就是通过ASP将信息内容插入到数据库中。

一、拥有数据库cnbruce.mdb

本数据库的作用就是用来被插入数据的,可以直接采用上节中已经建立的cnbruce.mdb文件,当然连接打开数据库的文件conn.asp也就顺利引用了。

二、建立输入插入信息的页面平台addit.html

本页的主要作用是:显示一些文本输入框以用来提供输入信息内容提交数据库。

1,addit.html

Title:

Author:

Content:







[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

本页其实很简单,就是通过submit按钮将表单的信息内容提交到addit.asp页面去处理。

三、建立处理接受数据并插入数据库表的页面程序addit.asp

2,addit.asp


<%
whattitle=request.form("title")
whoauthor=request.form("author")
whatcontent=request.form("content")
%>

<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,3,2
%>

<%
rs.addnew
rs("cn_title")=whattitle
rs("cn_author")=whoauthor
rs("cn_content")=whatcontent
rs.update
%>
文章添加成功,浏览
<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>



恩,接着就是来具体分析一下。

1, 不用说,凡是要和数据库有联系的都要运用到该连接文件。

2,whattitle=request.form("title")之类 就是将上页表单中接受过来的值赋到一变量上,方便下面程序的调用。

3,rs.Open sql,conn,3,2 注意参数和显示数据库时采用的参数的不同。

4,rs.addnew 很简单也很显眼的一个声明:新建一个数据库记录集行。

5,rs("cn_title")=whattitle之类 即将接受的表单值对应到相关字段中。

6,rs.update 只是值和数据库字段的对应,完了后还要将对应的值上传提交到数据库表中去。

7,插入后可以跳转到showit.asp查看 需要说明,以后的ASP例题可能都是建立在前几节内容的基础之上完成的。

8,释放资源 是规矩,不要忘记。

那么,现在。插入并显示数据库记录,对你来说完全是小菜一碟了。大体框架搭建完毕,下面就是具体的细化了。

其中包括:客户端的表单检测,防止用户信息输入的遗漏;当然最好还是要加上服务器端的表单检测,由于客户端的某些原因(比如自行设计提交非检测的页面)基于安全考虑,一切还是依服务器端所接受信息为准。那下面就继续细化应用下了。

1,客户端检测 其实就是通过简单的脚本检测,这在初学ASP提到脚本的时候说到,下面将再次重复。

加强的addit.html



Title:

Author:

Content:







[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

2,服务器端检测 有人也许会问,既然有了客户端的检测,那还有多个服务器端的检测呢?原因很简单,比如仿照HTML表单提交页,自行设计一张去除了表单检测的页面。当点击提交,并且没有任何信息时,到达服务器端如没有任何防御则肯定会造成数据插入的失败。

加强的addit.asp


<%
whattitle=trim(request.form("title"))
whoauthor=trim(request.form("author"))
whatcontent=trim(request.form("content"))
%>

<%if whattitle="" then%>

<%end if%>
<%if whatcontent="" then%>

<%end if%>

<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,3,2
%>

<%
rs.addnew
rs("cn_title")=whattitle
rs("cn_author")=whoauthor
rs("cn_content")=whatcontent
rs.update
%>
文章添加成功,浏览
<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>



可以看出,就是添加了如下类似的判断。
<%if whattitle="" then%>

<%end if%>


很简单,如果接受过来的信息为空,则弹出警告框,并且确认后返回到上页即addit.html了。当然cn_author没有设置检测,因为当初设计该字段的接受值是允许为空的。

OK,总结一下,插入记录主要就是
rs.addnew
rs("cn_title")=whattitle
...
rs.update



很简单,先声明addnew,然后一一对应,再提交插入数据库。

这是一种插入数据库的方法,下面就来接触了解一下另外一种。

需要注意,结构化的查询语言也就是SQL语句能够完成一些比较苛刻的数据库操作。当然,对于诸如提取、插入信息之流就更不在话下了。所以下面采用的插入记录的方法就是直接采用SQL语法完成。

修改了的addit.asp


<%
whattitle=request.form("title")
whoauthor=request.form("author")
whatcontent=request.form("content")
%>

<%
sql = "insert into cnarticle(cn_title,cn_author,cn_content) values(' "&whattitle&" ',' "&whoauthor&" ',' "&whatcontent&" ')"
conn.Execute(sql)
%>

文章添加成功,浏览

<%
conn.close
set conn=Nothing
%>



本程序中,你会发现只要一行的SQL语句,不需要建立Rescord记录集行,不需要声明addnew,不要执行update。直接通过conn.Execute(sql)来完成。

当然应用此种方法,若必填字段接受值为空时,同样能够插入记录。这和采用第一种会报
Microsoft JET Database Engine 错误 '80040e21'

字段 'xxx.xxx' 不能是零长度的字符串。


具有很大的容错性。

是程序的可读性还是方法的简便高效率就任君选择了。



如果阁下认真学完了以上课程,现在你已经是ASP中级水平了。编写简单的新闻系统和留言程序应该不成问题!!!
33楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:33   |  只看该作者   |  转账至  kabu

ASP进阶之显示数据库记录

学习ASP的万里长征就快到终点了:等把ASP的ADO组件搞定。当然这也是最重要的一步,几乎前面所有的学习都是为了这个最终的目的。OK,下面就来详细系统地来一一掌握,步步为营,各个击破。

一,拥有数据库

可以这么说:静态页面和动态页面最大的区别就是采用了数据库。有关一个WEB程序采用数据库和不采用的优越性比较,就不去细细分析了,主要精力还是放在如何使用数据库,如何熟练运用数据库,如何更灵活地运用数据库等等……其中运用操作数据库主要是对数据库内容进行:显示、插入、修改、更新、查询和删除。

这些方法当然也不是一口就能吃出来的,要慢慢感受咀嚼、理解消化。当然首先很重要的便是先拥有数据库了。否则,一切都是空谈,巧媳妇难以无米之炊嘛。

一般而言,我们所说的数据库其实就是一个数据库文件,该文件是由一些数据库管理系统(DBMS)建立生成的。目前一般的DBMS也就是常用常听说的ACCESS,SQLSERVER,MYSQL,ORACLE。当然一般个人站点,小型企业采用ACCESS完全足够;稍微大些的就采用同样是Microsoft公司的SQL SERVER或者是MYSQL,值得注意的是MYSQL一般是和另外一种网络编程语言PHP完美结合的。当然更大型的就采用ORACLE了。呵呵,曾经在学习PB时还运用到SYBASE数据库,UNIX系统的Informix数据库……DBMS简直是多如牛毛-_-!

话说过来,目前我们就直接使用ACCESS了:1,使用简单;2,入门掌握容易;3,实在没有比这个更适合初学的了。

一切还得从实际操作开始。

1,打开ACCESS数据库,选择新建数据库,将其命名为cnbruce.mdb,并保存到一专门文件夹database中



2,在新建的数据库容器中双击“使用设计器创建表”,弹出的表1窗口中字段名称输入“cn_id”,数据类型选择“自动编号”,并选择上方工具栏中的钥匙按钮,将该字段设为主键。

继续输入字段“cn_title”,数据类型选择“文本”;NEXT输入字段“cn_content”,数据类型选择“备注”;
PS:备注和一般类型文本最大的区别就是备注允许插入的字段值相对要多些,这在插入一些较长文章的时候尤其重要。

仍然输入字段“cn_author”,数据类型选择“文本”;并且切换到下面“常规”中的“允许空字符串”选择“是”。
PS:这表面允许cn_author字段的值可以是空的,这在当提交表单,某些信息不填写但要正确插入数据库时,显得很重要。

最后输入字段“cn_time”,数据类型选择“日期/时间”,继续切换到“常规”中的“默认值”输入“now()”函数

末了,将“表1”另存为“cnartile”



3,双击打开cnartile表,填写第一行:“cn_title”输入“test”,“cn_content”输入“this is a test”,“cn_author”输入“cnbruce”,时间已经自动添加。完成!关闭表,关闭数据库。



二,建立数据库连接

OK,数据库已经建立完毕,并且已经填写了一行信息内容。那么现在需要的就是同过ASP将该行信息显示出来。

要想显示,首先还是需要ASP与该数据库文件建立连接,具体怎么建立?往下看。

1,conn.asp:主要起的是连接并打开某数据库文件的功能。该文件建议单独存在,并且位置是和存放数据库的文件夹database处与同一物理层次。
<%
db_path = "database/cnbruce.mdb"
Set conn= Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path)
conn.Open connstr
%>



db_path = "database/cnbruce.mdb",不用说,就是将数据库的相对路径赋到一个变量上,以方便下面继续调用。

Set conn= Server.CreateObject("ADODB.Connection"),和其它建立组件一样,建立了一个ADO连接,并用一对象conn来接受。

connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path),很显然就是连接字符串了,其包括打开数据库的驱动方法OLEDB,和打开和哪个数据库的连接(即数据库的路径)。

需要再次提醒的是:无论是FSO对文件、文件夹的操作还是ADO对数据库的操作,对被操作文件的取得都是获得的绝对的物理地址,一般情况之下,采用Server.MapPath方法相对较好。

conn.Open connstr最后对象conn通过连接字符串connstr打开了数据库的连接。

三,显示数据库内容

建立了数据库,建立了和数据库的连接,下面水到渠成地就是将数据库中的内容通过ASP显示出来。

2,showit.asp


<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,1,1
%>

<%
if rs.EOF and rs.BOF then
   response.write ("暂时还没有文章")
else
   Do Until rs.EOF
      response.write("文章标题是:"& rs("cn_title"))
      response.write("
文章作者是:"& rs("cn_author"))
      response.write("
文章加入时间是:"& rs("cn_time"))
      response.write("
文章内容是:"& rs("cn_content"))
      response.write("
")
      rs.MoveNext
   Loop
end if
%>

<%
rs.close
Set rs = Nothing
conn.close
set conn=Nothing
%>



简单调试本页,不出任何意外,相信一定能将数据库中的信息显示出来了。(PS:我的数据库中输写了两行)



下面就来具体一个一个解释来理解没行的含义:
1, 没有任何争议,主要是调用conn.asp的所起的功效,这在解释conn.asp文件的时候已经明白。

2,Set rs = Server.CreateObject ("ADODB.Recordset") ADO组件除了Connection连接以外,还有Recordset绑定记录集(相信用过DW做ASP的人现在开始有些重回故里的感觉了)当然 rs 可以形象地想象成数据库表中的某一行。

3,sql = "Select * from cnarticle" 标准的SQL结构化查询语言。很简单:建立了数据库连接,也绑定了记录集,那具体需要哪些信息呢?也就是要筛选一些记录集合了,不过当前采用的是无任何条件,即可以提取所有。

4,rs.Open sql,conn,1,1 真正地打开通向数据库中记录集的大门,具体有关后面的参数可以从如下网址中获得。

5,if rs.EOF and rs.BOF then 该语句里面涉及到了rs.EOF 和 rs.BOF 以及两者的逻辑运算 and 。rs.EOF 表示到达数据库表中的最后一行,rs.BOF 表示到达数据库表中的第一行。整个语句可以理解为,如果当前数据库中的最后一行就是数据库表中第一行,那么可以肯定:当前数据库表中没有任何数据。

6,
Do Until rs.EOF
...
rs.MoveNext
Loop

主要就是一个DO LOOP 循环语句了,其中循环的结束条件为:直到rs.EOF,即值得数据库表的最后一行。那么在这些条件满足的许可之内,就是来显示具体的信息了。

每次循环只能显示数据库表中的一行,如果要继续读取下行,那么 rs.MoveNext 功能真是如此。

7,rs("cn_title")等等 主要就是具体显示记录集中的哪个特定字段的信息值了。很是简单。

8,最后不要忘了释放资源空间关闭记录集连接,关闭数据库连接。

四,一些特殊条件

1,有没有注意到,数据库表信息的显示一般是按照时间的先后排列的,也就经常提到的按时间的升序排列。需要注意:按时间升序,并不一定每个数据库表中都要有一个时间/日期类型的字段,只要存在一个自动编号的字段就可以了。因为该字段是永不重复,并且是依次增大的。因此,按时间升序其实就是按自动编号中号码数值的增加来进行排序的。

当然,问题的关键来了,那就是要按照时间的降序排列,即始终从最新的内容开始显示。那具体需要哪些手术呢?
很简单,将连接字符串稍做修改。

由 sql = "Select * from cnarticle" 添加修改为
sql = "Select * from cnarticle order by cn_id desc"
其中 order by cn_id 即通过cn_id字段,desc 即降序了。

2,有是时候,只需要提取最前或者最新的几条信息,那这个又具体如何操作呢?同样还是连接字符串的修改
由 sql = "Select * from cnarticle order by cn_id desc" 添加修改为
sql = "Select top 3 * from cnarticle order by cn_id desc"
其中 top 3 就表示提取最新的三条信息内容了。

That's All. 现在一个文章系统、新闻系统或者留言本显示部分的精华内容你已不费吹灰之力搞定。

留下你的是:文章的格式可能显示不对劲,比如回车、空格都不显示了,那么你就还要学会处理接受的数据库表的值(在ASP的几个练习中提到的);文章不能老是打开数据库输入信息啊,那么你就要继续学会如何用ASP插入数据到库表;再有就是文章多了,一个页面看是不是很麻烦?那么你还要学会分页技术……

要搞的太多了,后面我会详细道来:)
34楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:15   |  只看该作者   |  转账至  kabu

ASP内置对象:REQUEST

系统学习ASP,就是先从ASP的几大内置对象开始的.
一般称五大对象:Request、Response、Server、Session、Application
今天先来看看Request对象。

当然一直还没有提到的就是,ASP到底是什么样?我看代码怎么知道是ASP代码?
很简单,当看到“<%”和“%>”就表明是ASP,并且两者之间的就是ASP源码。

那为什么要学对象,对象的作用又是如何的?
其实ASP所提供的这些可在脚本中使用的内建对象,使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。

而Request对象的主要作用就是:在服务器端接受并得到从客户端浏览器提交或上传的信息。Request 对象可以访问任何基于 HTTP 请求传递的所有信息,包括从Form表单用 POST 方法或 GET 方法传递的参数、cookie 等。

一,Request.form("name")

这是接受上一页的信息时,常会用到的一种接受方式。Request是ASP对象,form则是Request对象所包含的对象集合(这要有区别与HTML页中的form表单,是不一样的),name也就是上一页表单中的某个文本框、密码框,或者隐藏域等的名称。并且还有一点非常重要:上一页Form表单的递交方法一定要为Post方法。
说不如做,看下面两个页面程序。

1,test1.html(本页是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理)

your name:

your pwd:




[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

注意method就是post,且提交的页面action为submit1.asp。

2,submit1.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)
your name is:<%=request.form("yourname")%>

your pwd is:<%=request.form("yourpwd")%>


通过IIS进行HTTP协议的页面调试,你会发现两个页面进行了关联:test1.html中动态输入的name和pwd,在submit1.asp也则进行相应的动态显示。
这就是接收、提取并显示信息的全过程。

3,改进的submit1.asp
<% for each i in request.form%>
<%=i%>:
<%=request.form(i)%>


<%next%>


采用了for循环语句,将上页所有的form标签信息进行接受、并显示。这在上表单页有很多项目时,非常快捷地出来结果。
首先仍然是request.form,只是后面的("yourname")或("yourpwd")变成了变量 i
通过for循环对该form集合进行遍历提取,这是一种不同于机械地“有几个就提取几个”的编程思想,注意掌握。

二,Request.querystring("name")

此时由Request.form变为Request.querystring,最主要的还是上页表单递交时,采用的什么方法。当采用post就用Request.form,否则当采用get时就采用Request.querystring了。

那Request.querystring最大特色在哪里呢?Request.querystring能检索并接受 HTTP 查询字符串中变量的值,而HTTP 查询字符串则是由问号 (?) 后的值指定的。说了大半天,继续看一个程序。

1,test2.html(本页同是HTML的,主要提供输入信息的平台,以将信息提交到再下面的ASP页进行接受处理,注意提交方法是get)

your name:

your pwd:




[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

和test1.html最大区别也就是method="get"

2,submit2.asp(ASP页面,进行从test1.html接受name="yourname"和name="yourpwd"的两个值)
your name is:<%=request.querystring("yourname")%>

your pwd is:<%=request.querystring("yourpwd")%>


注意此时的浏览器地址栏,文件后面多出了?号,?号后面附有变量名及所被赋的值,当然多个变量名之间是用&号进行连接的。
而Request.querystring最大的功能就是能将?号后面的这些变量名分开,并且所对应的值也一一取出。

刚才说到不同的变量名之间是用&号进行连接,但如果是相同的变量名时,request.querystring到底是提取前一个?后一个?还是两个一起?
用例子说话。
3,query.asp(名称是query.asp,因为在该页程序中是反馈给自己。)
《asp教程》

《jsp教程》

《xsp教程》

you chosed <%=request.querystring("bookname")%>


很明显当点《xsp教程》时,显示的是“《xsp教程》,《xml》”,中间自动加了“,”号。

最后仍需要说明的是:request.querystring在分页程序里面是经常用到的。

三,Request.ServerVariables("xxx")
其中ServerVariables就是服务器的环境变量了,该变量包含的内容比较多,我们同样先采用for循环进行遍历查看下。
1,server1.asp
<%for each i in request.servervariables%>
<%=i%>:
<%=request.servervariables(i)%>


<%Next%>


可以看到一大堆环境变量,其中还有没有值的,下面摘取几个比较常用的。
http_user_agent(客户端机器的相关环境):<%=request.servervariables("http_user_agent")%>


http_accept_language(浏览语言):<%=request.servervariables("http_accept_language")%>


CONTENT_LENGTH(客户端发出内容的长度):<%=request.servervariables("CONTENT_LENGTH")%>


CONTENT_TYPE(内容的数据类型。如“text/html”。同附加信息 的查询一起使用,如 HTTP 查询 GET、POST 和 PUT):<%=request.servervariables("CONTENT_TYPE")%>


LOCAL_ADDR(返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要):<%=request.servervariables("LOCAL_ADDR")%>


REMOTE_ADDR(发出请求的远程主机client的 IP 地址):<%=request.servervariables("REMOTE_ADDR")%>


SERVER_NAME(出现在自引用 URL 中的服务器主机名、DNS 化名 或 IP 地址):<%=request.servervariables("SERVER_NAME")%>


SCRIPT_NAME(主机名后面的虚拟地址):<%=request.servervariables("SCRIPT_NAME")%>


LOGON_USER(用户登录 Windows NT 的帐号):<%=request.servervariables("LOGON_USER")%>


SERVER_PORT(发送请求的端口号):<%=request.servervariables("SERVER_PORT")%>



根据以上的SERVER_NAME是提取的服务器主机名,SCRIPT_NAME是提取的虚拟地址,则两者的结合再加上http:// 是不是就是个完整的网址呢。
2,server2.asp
<%a=request.servervariables("server_name")%>
<%b=request.servervariables("script_name")%>
<%="http://"&a&b%>


其中http:// 用引号引起,表示是一字符串,a和b分别是对应了具体值的变量,在ASP中进行这样的连接就是采用&号。

根据这个结果,我们是不是就可以随时提取动态的URL地址了。

再来看看query.asp,要求一定要保存为query.asp的,因为如果不是该文件名,程序指向就会出错。
但现在的这个文件就随便你保存为什么文件,都一样执行。
3,xxx.asp(随便你保存成什么文件)
<%filepath=request.servervariables("script_name")%>
《asp教程》

《jsp教程》

《xsp教程》

you chosed <%=request.querystring("bookname")%>


先将当前文件的地址取出并赋值给变量filepath
然后所有的链接地址开头都只要直接引用该变量就OK了。
是不是很有用,有点万能的感觉。

四,Request.Cookies("name")
不用我说,Cookie是个很重要的东西,究竟如何,等我们学完了下面的对象Response后,会有个特别Cookie的专题讲座。
就先搁着吧。

以上四则运用,属于Request对象的所包含的四个对象集合:form、querystring、servervarivables、cookies。当然还有个ClientCertificate就不说啦

一个ASP内置对象除了对象集合外还有对象属性、对象方法

Request对象的对象属性只有一个就是TotalBytes(接受的字节数),你可将
<%=request.totalbytes%>


该语句加入到任何一个接受数据的ASP页面中进行显示了。

Request对象的对象方法也还是一个:BinaryRead 。
说实话,这东东不常用,我也没用过,呵呵。

OK~!有关Request对象的学习就差不多了,最主要是先好好理解三个对象集合,cookies不着急,下节继续学习对象Response。
35楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:56   |  只看该作者   |  转账至  kabu

接上```

通过对Request对象的学习,可以了解到,Request对象是服务器端用来获取客户端的信息的。
但作为服务器和客户端进行交互,是不是还缺少服务器端向客户端发送信息呢?对象Response正是担任此责任。
负责将信息传递给用户的对象就是Response了,它可动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器。
一,Response.write
在Response中write方法是使用最频繁的一个了,write就是写:将指定的字符串写到当前的 HTTP 输出。

1,write.asp
<%
response.write("hello,world"&"
")
Randomize
response.write "任意数是"&rnd()&"
"
%>



response.write后面为所显示的信息,可以用括号包含,也可以直接书写(注意和response.write之间有空格)。
书写的字符串信息或者HTML代码相关,用引号包含;而ASP本身的函数或变量则不需要,直接用即可。
并且无论字符串信息、HTML代码、函数还是变量之间进行连接都是采用&号(针对vbscript)

以上遇到一个随机函数rnd(),该函数返回一个小于 1 但大于或等于 0 的值。
需要注意的是在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有基于系统计时器的种子。
若缺少Randomize,则无法继续生成随机种子。

下面一个利用随机函数的例子,产生随机背景颜色效果:


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

当然要产生指定范围的随机整数,请使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
随机函数在做考试系统的时候非常有用,当然你也可以用来自己摇奖,拿个头彩也分点我就行了

二,Response.end
这是Response常用的一种方法,使 Web 服务器停止处理脚本并返回当前结果,文件中剩余的内容将不被处理。
主要放在一页多功能的ASP页中,为让程序运行到此,抑或往下的程序没必要再执行显示……

2,end.asp
<%response.write now()
response.end            '程序执行显示到此结束
response.write rnd()%>



三,Response.clear
该方法主要作用是清除缓冲区中的所有 HTML 输出,但该方法只清除响应正文而不清除响应标题。
该方法和end方法似相反,end是到此结束返回上面的结果,而clear却是清除上面的执行,然后只返回下面的结果。

3,clear.asp
<%response.write now()
response.clear           '以上程序到此全被清除
response.write rnd()%>



下面通过一个例子来仔细看看end and clear

4,end2clear.asp
<%
filepath=request.servervariables("script_name")
user=Request.Form("username")
pwd=Request.Form("password")
%>


name:

pwd:




<%
If user="cnbruce" and pwd="cnbruce" Then   
   response.write "采用clear方法,上面的程序结果将清除。"
   response.clear     ' 清空存储在缓存中的页面
Else
   response.write "采用end方法,下面的程序将停运。"
   Response.End ' 立即停止脚本处理,并将缓存中的页面输出
End If
%>
如果你只看到“刷新”链接就表明clear方法已经生效

刷新 



以上程序中,当输入用户名和密码同为cnbruce的时候会发现clear方法的处理结果,反之是另外一个效果。

四,Response.redirect
Redirect 方法是让浏览器立即重定向到程序指定的URL地址。这在根据客户的不同响应,为不同的客户指定不同的页面,或根据不同的情况指定不同的页面时,显得非常重要。
该方法是立即生效的,在其后的脚本都不执行。

5,redirect.asp
<%response.redirect("http://www.juncc.com/")%>



以上四则运用属于Response对象的几个比较重要的方法:write、end、clear、redirect等当然方法还有:AddHeader、AppendToLog、BinaryWrite、Flush……
早说过,一个ASP对象除了对象方法外,还有对象属性

那response对象的属性有哪些呢?

五,Response.ContentType
ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/html。

6,contenttype.asp(非text/html的)
<% Response.ContentType = "text/HTML" %>
<% Response.ContentType = "image/GIF" %>
<% Response.ContentType = "image/JPEG" %>
<% Response.ContentType = "text/plain" %>
<% Response.ContentType = "image/JPEG" %>



六,Response.charset
Charset 属性将字符集名称附加到 Response 对象中 content-type 标题的后面,用来设置服务器响应给客户端的文件字符编码。

7,charset.asp
<% Response.charset = "big5" %>
中文显示,但采用的big5繁体的编码,所以看到的是乱码。



当然Response.ContentType和Response.charset应用得比较少了。直接在head头部属性里面添加就OK了。

七,Response.expires
该属性指定了在浏览器上缓冲存储的页,距过期还有多少时间。
如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。
但若设置 response.expires=0,则可使缓存的页面立即过期。
这是一个较实用的属性,当客户通过 ASP 的登陆页面进入 WEB 站点后,应该利用该属性使登陆页面立即过期,以确保安全。
引用一个经典的例子

8,expires.asp
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>



八,Response.status
设置服务器要响应的状态行的值。Response.status="状态描述字符串",字符串可以为一个三位整数或一串说明文字组成,但必须防在之前。

9,status.asp
<% Response.Status = "401 Unauthorized" %>



九,Response.buffer
比较重要的一个,值为true or false。该属性指示是否缓冲页输出。
引用:当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了 Flush 或 End 方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置 Buffer 属性。因此应该在 .asp 文件的第一行调用 Response.Buffer。

Response.buffer=true



对于Response对象的属性和方法先到这里,剩下一个数据集合,即cookie。
继续看cookies讲座吧
36楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:31   |  只看该作者   |  转账至  kabu

ASP内置对象:SERVER

Server 对象提供对服务器上的方法和属性的访问 , 其中大多数方法和属性是作为实用程序的功能服务。(IIS HELP翻译)
有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数。
一,Script.ScriptTimeout
在脚本运行超过一段时间之后,即作超时处理。
服务器一般的默认脚本运行时间是90秒。
你可以从“Internet信息服务”中“默认Web站点”的属性弹出框中看出,你也可以自己设定。

呵呵,上面的可不是,900秒了。
应该是“主目录”标签中的“配置”对话框中,WINXP一样。



在理解脚本运行时间之前,先来看一个程序,主要功能就是进行计算网页执行时间的。


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

当然对应的ASP也就是看到许多站点都有的页面执行时间显示

1,time.asp
<%startime=timer()%>
到下面看执行的时间
<%
for i= 1 to 5000
response.write("
")
next
%>
当然中间还可以添加其它内容。

<%endtime=timer()%>

<%=FormatNumber((endtime-startime)*1000,3)%>毫秒



那如果上面的程序变成for i= 1 to 5000000
呵呵,是不是机器快反应不过来的感觉,那这个就是脚本的执行时间了。
为了让程序能很好的执行,就该把脚本执行时间放长了。
怎么放长?把默认的改?呵呵,当然不是:)
<%Server.ScriptTimeout=110%>


时间的设定当然要是比默认90秒大的,现在的代码就是:指定服务器处理脚本在 110 秒后超时。
还有,脚本时间的确定要看自身的程序了,一般情况100秒左右也差不多了,即使能执行出来,可能观看网页的人早就把它叉叉了。

以上的ScriptTimeout就是Server对象唯一属性了

二,Server.HtmlEncode
HtmlEncode就是Server对象的其中一个方法了。它允许你对特定的字符串进行 HTML 编码,虽然 HTML 可以显示大部分你写入 ASP 文件中的文本,但是当你需要实际包含 HTML 标记中所使用的字符,就会遇到问题。这是因为,当浏览器读到这样的字符串时,会试图进行解释。

还是看一个程序,我想在页面显示“ ”这样的代码(附: 是空格的代码)
那么当我进行书写的时候你会发现,浏览器已经给我解释了的。
空格的代码是:

你会发现上面的代码都被执行了。

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

所以,为了要让一些特殊代码能够显示,就运用该方法了。

2,htmlencode.asp
<%Response.write ("这是没有采用 HTMLEncode 方法的测试。
这里就另起一行,说明代码被执行。 ")%>


<%Response.write Server.HtmlEncode("这是对 HTMLEncode 方法的测试。
这里应该不会另起一行,也就是代码没有被执行了。 ")%>


这在许多网站,论坛都存在的一些BUG,不信你可以到各论坛试试:敲入 就是没有,急死你呢:)当然HtmlEncode只是其中的一个原因,最主要的还是UBB代码的转换。不过关于这点我也已经调试解决了。
调试地址参看 www.cnbruce.com/juven/showart.asp
当然经典论坛不存在这问题,要不你也不会看到效果了。

三,Server.UrlEncode
正如 HtmlEncode 方法使客户可以将字符串翻译成可接受的 HTML 格式一样,Server 对象的 UrlEncode 方法则是根据 URL 规则对字符串进行正确编码,当字符串数据以 URL 的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果你希望在发送字符串之前进行 URL 编码,可以使用 Server.URLEncode 方法。
为方便起见,我们先看为处理送交,然后处理接受的效果。

3,urlencode.asp
<%filepath=request.servervariables("script_name")%>
接受URL中的值(没有处理接受值,发现值被解释了): <%=request.querystring("cnbruce")%>

你可以输入“
”等代码看看:

接受URL中的值(进行了urlencode编码,不会执行): <%=Server.URLEncode(request.querystring("cnbruce"))%>



当然你会发现,虽然不执行了,但会出现“<”变成了“%3C”,“>”变成了“%3E”,那这就是因为没有在发送之前处理。
不过,我们还可以通过Replace函数将这些特殊代码再逆转过来。

4,vurlencode.asp
<%
function tihuan(what)
tihuan=what
if not isnull(what) then
tihuan=replace(tihuan,"%3C","<")
tihuan=replace(tihuan,"%3D","=")
tihuan=replace(tihuan,"%3E",">")
tihuan=replace(tihuan,"%26","&")
tihuan=replace(tihuan,"空格我不知道,呵呵。哪个告诉我下:)"," ")
tihuan=replace(tihuan,"%3B",";")
tihuan=replace(tihuan,"%22",""")
tihuan=replace(tihuan,"%2B","+")
tihuan=replace(tihuan,"%2F","/")
end if
end function
%>

<%filepath=request.servervariables("script_name")%>

接受URL中的值(没有处理接受值,发现值被解释了): <%=request.querystring("cnbruce")%>


你可以输入“
”等代码看看:

接受URL中的值(进行了urlencode编码,不会执行): <%=tihuan(Server.URLEncode(request.querystring("cnbruce")))%>



呵呵,其实上面我是做的无用功啦,真正应该是在发送之前就该处理下的,不过对学习该方法的举例确是个好方法:)

四,Server.MapPath
相信看过我写的《DW2ASP系列》的朋友,都卡在这个上了。DW毕竟是入门的好东西,但要系统学ASP编程,对这个就该好好认识了解下。
MapPath方法,具体的就是将指定的相对或虚拟路径,映射到服务器上相应的物理目录上。
用法,也就是语法了,如下:
Server.MapPath(Path)


Path 指定要映射物理目录的相对或虚拟路径。若 Path 以一个正斜杠 (/) 或反斜杠 (\) 开始,则 MapPath 方法返回路径时将 Path 视为完整的虚拟路径。若 Path 不是以斜杠开始,则 MapPath 方法返回同本文件中已有的路径相对的路径。这里需要注意的是 MapPath 方法不检查返回的路径是否正确或在服务器上是否存在。
当然这可以和Request.ServerVariables连起来使用看看。

5,mappath.asp
Request.ServerVariables("APPL_PHYSICAL_PATH") : <%=Request.ServerVariables("APPL_PHYSICAL_PATH")%>


Request.ServerVariables("PATH_INFO") : <%=Request.ServerVariables("PATH_INFO")%>


Request.ServerVariables("SCRIPT_NAME") : <%=Request.ServerVariables("SCRIPT_NAME")%>


Request.ServerVariables("URL") : <%=Request.ServerVariables("URL")%>


Request.ServerVariables("PATH_TRANSLATED") : <%=Request.ServerVariables("PATH_TRANSLATED")%>



上面都是通过ServerVariables提取得出的值,下面就来运用mapath把一个虚拟地址转变为实际的物理地址。


Server.MapPath(Request.ServerVariables("URL")) :<%=Server.MapPath(Request.ServerVariables("URL"))%>


或者自己随便写个不存在的路径,同样能够执行


Server.MapPath("cnbruce.asp") : <%=Server.MapPath("cnbruce.asp")%>


再来个“/”的


Server.MapPath("/cnbruce.asp") : <%=Server.MapPath("/cnbruce.asp")%>

Server.MapPath("\cnbruce.asp") : <%=Server.MapPath("\cnbruce.asp")%>


你会发现物理地址转变到IIS默认根目录下面了。
这就是如6to23之类的站点mappath的问题所在。还是虚拟主机好,即使是根,也还是自己站点的默认存放节点根。



注意测试的地址和根目录下的地址,对应的是同一文件夹(这就是虚拟主机),6to23之类是不会相同的。

有此些了解,对路径的处理应该要好多了,再返回我的站点,看看我对数据库的mappath路径的处理方法,相信又是一个理解层次了。


五,Server.CreatObject
Server.CreateObject 这个方法恐怕是 ASP 中最为实用,也是最强劲的功能了。它可用于创建已经注册到服务器上的 ActiveX 组件实例。这是一个非常重要的特性,因为通过使用 ActiveX 组件能够使你轻松地扩展 ActiveX 的能力,正是使用了 ActiveX 组件,你可以实现至关重要的功能,譬如数据库连接、文件访问、广告显示和其他 VBScript 不能提供或不能简单地依靠单独使用 ActiveX 所能完成的功能。也正是因为这些组件才使得 ASP 具有了强大的生命力。
呵呵,不过,在我们没有谈及连接数据库之前,这个先空着,“要得好,到临了”:)等我们接触到数据库连接的时候再说不迟。

恩,那今天就主要把Server对象学习了下,感觉好象是每个都有用的,重要啊。
还有,需要说明的,如果您从本处转载,发现和本源件有差错,比如代码  、 < 、 >等等,根本就是被执行了的。都说明您的站点存在着这些问题。

37楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:21   |  只看该作者   |  转账至  kabu

BIOS短句的解释

  开机自检时出现问题后会出现各种各样的英文短句,短句中包含了非常重要的信息,读懂这些信息
可以自己解决一些小问题,可是这些英文难倒了一部分朋友,下面是一些常见的bios短句的解释,大家
可以参考一下。

  1.cmos battery failed

  中文:cmos电池失效。

  解释:这说明cmos电池已经快没电了,只要更换新的电池即可。

  2.cmos check sum error-defaults loaded

  中文:cmos 执行全部检查时发现错误,要载入系统预设值。

  解释:一般来说出现这句话都是说电池快没电了,可以先换个电池试试,如果问题还是没有解决,
那么说明cmos ram可能有问题,如果没过一年就到经销商处换一块主板,过了一年就让经销商送回生产
厂家修一下吧!

  3.press esc to skip memory test

  中文:正在进行内存检查,可按esc键跳过。

  解释:这是因为在cmos内没有设定跳过存储器的第二、三、四次测试,开机就会执行四次内存测试
,当然你也可以按 esc 键结束内存检查,不过每次都要这样太麻烦了,你可以进入coms设置后选择bios
featurs setup,将其中的quick power on self test设为enabled,储存后重新启动即可。

  4.keyboard error or no keyboard present

  中文:键盘错误或者未接键盘。

  解释:检查一下键盘的连线是否松动或者损坏。

  5.hard disk install failure

  中文:硬盘安装失败。

  解释:这是因为硬盘的电源线或数据线可能未接好或者硬盘跳线设置不当。你可以检查一下硬盘的
各根连线是否插好,看看同一根数据线上的两个硬盘的跳线的设置是否一样,如果一样,只要将两个硬
盘的跳线设置的不一样即可(一个设为master,另一个设为slave)。

  6.secondary slave hard fail

  中文:检测从盘失败

  解释:可能是cmos设置不当,比如说没有从盘但在cmos里设为有从盘,那么就会出现错误,这时可
以进入coms设置选择ide hdd auto detection进行硬盘自动侦测。也可能是硬盘的电源线、数据线可能
未接好或者硬盘跳线设置不当,解决方法参照第5条。

  7.floppy disk(s) fail 或 floppy disk(s) fail(80) 或floppy disk(s) fail(40)

  中文:无法驱动软盘驱动器。

  解释:系统提示找不到软驱,看看软驱的电源线和数据线有没有松动或者是接错,或者是把软驱放
到另一台机子上试一试,如果这些都不行,那么只好再买一个了,好在软驱还不贵。

  8.hard disk(s) diagnosis fail

  中文:执行硬盘诊断时发生错误。

  解释:出现这个问题一般就是说硬盘本身出现故障了,你可以把硬盘放到另一台机子上试一试,如
果问题还是没有解决,只能去修一下了。

  9.memory test fail

  中文:内存检测失败。

  解释:重新插拔一下内存条,看看是否能解决,出现这种问题一般是因为内存条互相不兼容,去换一
条吧!

  10.override enable-defaults loaded

  中文:当前cmos设定无法启动系统,载入bios中的预设值以便启动系统。

  解释:一般是在coms内的设定出现错误,只要进入coms设置选择load setup defaults载入系统原来
的设定值然后重新启动即可。

  11.press tab to show post screen

  中文:按tab键可以切换屏幕显示。

  解释:有的oem厂商会以自己设计的显示画面来取代bios预设的开机显示画面,我们可以按tab键来
在bios预设的开机画面与厂商的自定义画面之间进行切换。

  12.resuming from disk,press tab to show post screen

  中文:从硬盘恢复开机,按tab显示开机自检画面)。

  解释:这是因为有的主板的bios提供了suspend to disk(将硬盘挂起)的功能,如果我们用suspend
to disk的方式来关机,那么我们在下次开机时就会显示此提示消息。

  13.hareware monitor found an error,enter power management setup for details,press f1
to continue,del to enter setup

  中文:监视功能发现错误,进入power management setup察看详细资料,按f1键继续开机程序,按
del键进入coms设置。

  解释:有的主板具备硬件的监视功能,可以设定主板与cpu的温度监视、电压调整器的电压输出准位
监视和对各个风扇转速的监视,当上述监视功能在开机时发觉有异常情况,那么便会出现上述这段话,
这时可以进入coms设置选择power management setup,在右面的**fan monitor**、**thermal monitor
**和**voltage monitor**察看是哪部分发出了异常,然后再加以解决。
38楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:27   |  只看该作者   |  转账至  kabu

ASP进阶第二天脚本程序

有了前面的html中关于form的强化知识,是不是在想,下面就可以开始ASP之旅呢?未必。
一般系统学过ASP的编程人员都会切身体会到:在系统学习ASP的内置对象和内置组件之前,学会脚本语言永远是至关重要的。
为什么这么说呢?为什么要学脚本语言呢?ASP和脚本语言又有什么关系呢?

首先说说ASP是贵为何物吧。ASP是Microsoft Active Server Pages的简称,它是一种服务器端脚本环境,可用来创建交互式 Web 页并建立强大的 Web 应用程序。可以表明ASP是一种基于服务器端的脚本环境,那就明白ASP为什么需要IIS支持了,因为IIS即为常用的一类web服务器;那也就明白为什么要学脚本语言了,因为ASP提供的是一种脚本环境。

再次需要说明的是,ASP只是一种环境,而非一种语言。如果真要形象化地说是ASP是网络编程语言的话,那也是属于一个html+脚本+asp提供的内置对象及组件的功能强大的混合语言。

所以,学点脚本非常重要!其实无论是学脚本语言,还是其它语言,我认为首先需要了解的是该语言涵盖的各类特性,包括:数据类型、事件、方法、 对象、属性、语法等当然这都是些空谈,正如在大学课堂上的某计算机语言课一样,搞纯研究性的就是觉得有些索而无味。还是实用些的好,能解决问题的程序才是好程序(印证能逮到老鼠的猫就是好猫的经典圣语,呵呵)

当然,语言这东西还是要你去好好钻研的,比如你写求绝对值的程序,其实一个abs()函数就搞定了。再比如你会vb脚本,但把同样程序替换成java脚本就会出错,它们的数据类型不同,语句语法也不一样啊。正如说中文和外文一样,要会发音标(数据类型),会如何发音(方法),如何说成一句话(语法)……呵呵,有点让你难受吧。行!直接了当。你以后需要注意的是语言的函数、语法。当然也不是让你全看,按照教程中的遇到一个掌握一个。教程学完,差不多也结束了。呵呵,你要相信我。

目前有两种主要的脚本语言:VbScript和JavaScript。因为VbScript作为IIS默认的服务器脚本,所以我们所谈所学的基本是围绕VbScript为脚本的ASP的,当然也不排除有的时候使用javascript.

举一个很简单的例子:









vbscript中的Sub 就是一个事件过程。过程名包含两部分:一部分为按钮名,即 Button1(从 < INPUT > 标记中的 NAME 属性获取);另一部分为事件名,即 OnClick。两部分由下划线 (_) 连接。单击按钮时,Internet Explorer 查找并运行相应的事件过程,即 Button1_OnClick,而MsgBox 就是一个函数,对于它更具体的参数,你就好好看下了。

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

一时来劲,可能大家都看到网上有种狂恶心的对话框组,原理是什么呢?请看:


其实站长用这些玩弄别人的时候,先玩弄了自己:因为这都是他想出来的啊:)
呵呵,我没有损大家的意思,只是为了学习。

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

在来个开页和退页弹出对话框的原理吧

开页显示“welcome you!”,关页显示“see you late!”

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

以上只是一个显示对话框msgbox,当然还有书写对话框inputbox也顺便看下吧。


有关inputbox的想关参数也去看看吧。

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

再来看看几个实用的函数:
len():返回字符串长度或者变量的字节长度 
lef():截取一个字符串的前部分内容
right():截取一个字符串的后部分内容


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
根据这几个,经常看到的长文章后面加“......”的情况就是如下:


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
还有个比较重要的函数replace()
在字符串中查找,替代指定的字符串
replace(strtobesearched,strsearchfor,strreplacewith)
strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用来替代的子字符串。
下面的一个就是很有用的文字转换程序


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

这些都是比较现实较好玩的些,玩中学习也不错:)但毕竟我们是要编程的,说到编写程序,我知道程序结构可以分:
1,顺序结构:就是最普通的,从上往下,从左往右执行的程序
2,选择结构:给你两个条件,要不这样(if ... then),要不那样(else),任君选择:)
3,循环结构:给你一个最大发挥的空间,在不超出这个范围内进行活动(循环),否则自动退出(跳出循环)。
再复杂的程序也无非是由这三种结构综合嵌套运用过来的,你说是吧。

顺序结构没多少要说,因为程序执行基本都是这方向。
来看看选择结构,当然选择结构也可以嵌套。


hello,

本页的作用是根据不同时间显示不同颜色和欢迎信息。


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

以上程序很简单吧,只要能认识英文就会懂程序(我是这么理解的:)
先把现在的小时提交出来:hour(time);
然后和12比较判断,如果<=12,肯定是上午了,否则就是下午和晚上;
否则里面继续条件判断,如果时间再<=18的话,那肯定就是下午了;
最后,不用说,瞎子猜猜也知道是晚上了:)

有关上一程序中的document.bgcolor就是文档的背景色,document.fgcolor就是文档的前景色(文字色),下一程序是动态改变背景颜色的。



red

green

blue

yellow

gray



[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

有关条件选择结构的嵌套再show出一个表单检测的程序

abc




your name:

your addr:

your email:






[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

程序是给出来了,但看起来比较难懂,有时程序执行时间也比较重要,所以得精简程序代码。
正所谓:写程序容易,写经典程序难啊,那上面的程序还可以换种思维方式。改用javascript(注:学的是编程思想,不要太过计较脚本类型)

abc




your name:

your addr:

your email:






[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


最后来看下循环结构吧:1到500可不是一个一个写出来的。


for  i=  1  to  500
document.write(i&"
")
next


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

当然循环不只可以用for,还可以用do while...loop等
反正程序这东西是代替我们少做了许多重复单一无聊的事——只要你合理利用程序。

应该有些成就吧,学语言,学编程就是学语法语义,学编程架构思想。
当然这要你有扎实的本语言的基础,基础是什么?你知道哪些函数吗?你知道怎么用程序怎么判断偶数吗(包含了运算)?你知道如何进行表单检测吗?你知道哪三种程序架构吗?


呵呵,把以上的程序吃透,最好再多看看脚本参考手册,跟我就可以开始ASP的上路了。
39楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
kabu

卡卜

中级会员

卡不?YES!I卡!

贴子 3539

精华 1

积分 1794

信用 0

竞猜 0

魅力 9

威望 0

现金 4843 CZB

银行 0 CZB

黄金 0

比特币 0

注册时间 2005-01-24

发表于:2006-03-02 19:03:50   |  只看该作者   |  转账至  kabu

asp基础知识 1小时ASP入门

<%
   语句
   ……
   %>
  <2>定义变量dim语句
   <%
   dim a,b
   a=10
   b=”ok!”
   %>
  注意:定义的变量可以是数值型,也可以是字符或者其他类型的
  <3>简单的控制流程语句
   1. If 条件1 then
   语句1
  elseif 条件2 then
   语句2
  else
   语句3
  endif
   2.while 条件
   语句
   wend
   3.for count=1 to n step m
   语句1
   exit for
   语句2
  next
  二.ASP数据库简单*作教程
  <1>.数据库连接(用来单独编制连接文件conn.asp)
   <%
   Set conn = Server.CreateObject("ADODB.Connection")
   conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bbs\db1\user.mdb")
   %>
  (用来连接bbs\db1\目录下的user.mdb数据库)
  <2>显示数据库记录
   原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录
   如果是从头到尾:用循环并判断指针是否到末 使用: not rs.eof
   如果是从尾到头:用循环并判断指针是否到开始 使用:not rs.bof
   
    (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)
   <%
   set rs=server.CreateObject("adodb.recordset") (建立recordset对象)
   sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
   rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)
   rs.movefirst ---->(将指针移到第一条记录)
   while not rs.eof ---->(判断指针是否到末尾)
   response.write(rs("name")) ---->(显示数据表message中的name字段)
   rs.movenext ---->(将指针移动到下一条记录)
   wend ---->(循环结束)
  ------------------------------------------------------
   rs.close
   conn.close 这几句是用来关闭数据库
   set rs=nothing
   set conn=nothing
  -------------------------------------------------------
   %>
   其中response对象是服务器向客户端浏览器发送的信息
  <3>增加数据库记录
   增加数据库记录用到rs.addnew,rs.update两个函数
    (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)
   <%
   set rs=server.CreateObject("adodb.recordset") (建立recordset对象)
   sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
   rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)
   rs.addnew 新增加一条记录
   rs("name")="xx" 将xx的值传给name字段
   rs.update 刷新数据库
  ------------------------------------------------------
   rs.close
   conn.close 这几句是用来关闭数据库
   set rs=nothing
   set conn=nothing
  -------------------------------------------------------
   
   %>
  <4>删除一条记录
   删除数据库记录主要用到rs.delete,rs.update
    (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)
   <%
   dim name
   name="xx"
   set rs=server.CreateObject("adodb.recordset") (建立recordset对象)
   sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)
   rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)
  -------------------------------------------------------
   while not rs.eof
   if rs.("name")=name then
   rs.delete
   rs.update 查询数据表中的name字段的值是否等于变量name的值"xx",如果符合就执行删除,
   else 否则继续查询,直到指针到末尾为止
   rs.movenext
   emd if
   wend
  ------------------------------------------------------
  ------------------------------------------------------
   rs.close
   conn.close 这几句是用来关闭数据库
   set rs=nothing
   set conn=nothing
  -------------------------------------------------------
   %>
  <5>关于数据库的查询
   (a) 查询字段为字符型
   <%
   dim user,pass,qq,mail,message
   user=request.Form("user")
   pass=request.Form("pass")
   qq=request.Form("qq")
   mail=request.Form("mail")
   message=request.Form("message")
   if trim(user)&"x"="x" or trim(pass)&"x"="x" then (检测user值和pass值是否为空,可以检测到空格)
   response.write("注册信息不能为空")
   else
   set rs=server.CreateObject("adodb.recordset")
   sqlstr="select * from user where user='"&user&"'" (查询user数据表中的user字段其中user字段为字符型)
   rs.open sqlstr,conn,1,3
   if rs.eof then
   rs.addnew
   rs("user")=user
   rs("pass")=pass
   rs("qq")=qq
   rs("mail")=mail
   rs("message")=message
   rs.update
   rs.close
   conn.close
   set rs=nothing
   set conn=nothing
   response.write("注册成功")
   end if
   rs.close
   conn.close
   set rs=nothing
   set conn=nothing
   response.write("注册重名")
   %>
   (b)查询字段为数字型
   <%
   dim num
   num=request.Form("num")
   set rs=server.CreateObject("adodb.recordset")
   sqlstr="select * from message where id="&num (查询message数据表中id字段的值是否与num相等,其中id为数字型)
   rs.open sqlstr,conn,1,3
   if not rs.eof then
   rs.delete
   rs.update
   rs.close
   conn.close
   set rs=nothing
   set conn=nothing
   response.write("删除成功")
   end if
   rs.close
   conn.close
   set rs=nothing
   set conn=nothing
   response.write("删除失败")
   %>
  <6>几个简单的asp对象的讲解
   response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向URL,或设置cookie值
   request对象:客户端向服务器提出的请求
   session对象:作为一个全局变量,在整个站点都生效
   server对象:提供对服务器上方法和属性的访问
  (a) response对象的一般使用方法
   比如:
   <%
   resposne.write("hello, welcome to asp!")
   %>
   在客户端浏览器就会看到 hello, welcome to asp! 这一段文字
   <%
   response.Redirect("http://www.sohu.com/";' target="_blank" >http://www.sohu.com/";;)
   %>
   如果执行这一段,则浏览器就会自动连接到 “搜狐” 的网址
   关于response对象的用法还有很多,大家可以研究研究
   request对象的一般使用方法
  比如客户端向服务器提出的请求就是通过request对象来传递的
  列如 :你在申请邮箱的所填写的个人信息就是通过该对象来将
   你所填写的信息传递给服务器的
  比如:这是一段表单的代码,这是提供给客户填写信息的,填写完了按
   “提交”传递给request.asp文件处理后再存入服务器数据库
   

   


   
   


   


   
   


   


   
   


  

  那么request.asp该如何将其中的信息读入,在写入数据库,在这里就要用到
  request对象了,下面我们就来分析request.asp的写法
  <%
   dim name,password (定义user和password两个变量)
   name=request.form(“user”) (将表单中的user信息传给变量name)
   password=request.form(“pass”) (将表单中的pass信息传给变量password)
  %>
  通过以上的几句代码我们就将表单中的数据读进来了,接下来我们要做的就是将
  信息写入数据库了,写入数据库的方法上面都介绍了,这里就不一一复述了。
  (通过上面的学习大家完全可以自己做一个留言版了
40楼
编辑   |    引用    回帖
关闭    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
 85 123456789