以前看书时记得一些笔记(三),很早了,现在再看都有些看不懂了

1.ASP内部对象可以分为下面几个:RequestResponseSessionApplicationServer
       Request
对象的功能是获得用户端的数据(包括用户的表单,用户点击的超链接,用户Cookies,服务器环境变量信息和客户端身份验证)。

       Response对象的功能是向客户端输出信息(包括显示一般页面,引导用户去另一个页面,输出二进制信息,清输用户缓存,终止ASP程序,送出缓存信息,

              设置缓冲信息,设置用户Cookies等)

       Session对象是用来记载特定客户的信息。(包括设置特定用户的信息,获得特定用户的信息

       Application对象是用来记载所有客户信息,也就是说,这些信息对所有客户都是共享的。(包括设置和获得所有客户的信息,在写信息时加锁与写完后的解锁

              功能)

       Server对象是用来创建COM对象和Scripting信息(包括创建对象、应用对象、脚本、脚本对象的实例,还可以转化字符串,获得文件路径,执行asp程序等)

 

2.Request对象:  (获取客户端的信息)
      
语法:Request[.数据集合|属性|.方法] (变量或字符串)
      
如:
Request.Form(“user_name”)    Request.QueryString(“user_name”)
       Request
对象的获取方法有

              QueryString  -------  
查询字符串读取用户提交的数据,一般提效的信息写在超级链接中:如:
              <a href = "4-1.asp?name=<%=use_name%>&age=<%Response.write use_age%>">
显示</a>   ‘In 4-2.asp 变量前的=符号与Response.Write功能相同
              Response.write("your name is:")&Request.QueryString("name")&"<p></p>"     ‘In 4-1.asp 
查询提交上来的数据值

              Response.Write("your age is :")&Request.QueryString("age")

              Form   -------   取得客户端在FORM表单中所输入的信息. 想简洁的话,可以省去.Form,直接用Request”User_name”

ServerVariables  -------   取得服务器端环境变量信息,环境变量有好多属性,如:
      
Request.ServerVariables(“ALL_HTTP”)   客户端浏览器所发出的HTTP标题文件
       Request.ServerVariables(“AUTH_TYPE”) 
当访问被保护的脚本时,用以判断该用户是否合法
       Request.ServerVariables(“CONTENT_LENGTH”) 
发送到客户端的文件长度
       Request.ServerVariables(“CONNTENT_TYPE”) 
发送到客户端的文件类型
       Request.ServerVariables(“LOCAL_ADDR”) 
服务器端的IP地址
       Request.ServerVariables(“LOGON_USER”) 
记录客户端的信息
       Request.ServerVariables(“QUERY_STRING”)     HTTP
请求后?后的内容
       Request.ServerVariables(“REMOTE_ADDR”)     
客户端IP地址
       Request.ServerVariables(“REMOTE_HOST”)     
客户端主机名
       Request.ServerVariables(“REQUEST_METHOD”)     
数据请求的方法,可以是GET,HEAD,POST等方法
       Request.ServerVariables(“SCRIPT_NAME”)      
当前ASP文件的虚拟路径
       Request.ServerVariables(”SERVER_NAME”)      
服务器端的IP地址或名称
       Requst.ServerVariables(“SERVER_POST”)        
HTTP作数据请求时,所用到的服务器端的端口号
       Requst.ServerVariables(“URL”)     URL
的相对网址

Cookies  -------   取得客户端浏览器的Cookies信息,如:
      
Response.Write Request.Cookies(“user_name”)   获得Cookiesuser_name中的值,当然,你的Cookies要有这个变量,如没有,可以先存储进去
       Response.Cookies(“user_name”)=”shipfi”
       TotalBytes  -------  
得到客户端响应数据的字节大小,如:
      
<% Response.Write Request.TotalBytes ‘输出客户端响应数据的字节的大小 %>
       BinaryRead   -------  
可以以二进制方式获取客户端用Post方法提交的数据:如:
      
<% Response.Write Request.BinaryRead(Request.TotalBytes) %>

 

3.Response对象   (向客户端输出信息)
      
Response对象的方法有:WriteRedirectBinaryWriteClearEndFlush
       Response
对象的属性有:BufferContentType
       Write  ------
向客户端显示Write后面的内容
       Redirect  ------  
引导客户至另一个URL位置,如:
      
<% Response.Redirect “http://www.sina.com.cn”   引导至新浪网
              Response.Redirect “other.asp”           
引导至站内其它网页
              theURL = “http://www.pku.edu.cn”       
              Response.Redirect theURL          
引导至变量表示的网址
       %>
       END  -------   
停止处理ASP程序,如:
      
<%  Response.Write “这是第一句
               Response.End   
终止ASP程序

               Response.Write “
这是第二句   这名将不被处理
       %>
       Buffer
属性  ------   设置服务器是否将页面先输出到缓冲区,取值可以为TRUEFALSE,如
       <% Response.Buffer = TRUE %>
       BinaryWrite
方法  ------   输出二进制信息,它不进行任何二进制转换,直接输出。如
       Response.BinaryWrite
变量或字符串
       Cookies
方法  ------   保存值到用户的Cookies。如:
       Response.Cookies(“user_name”) = “shipfi”
       Response.Cookies(“user_name”).Expires = #2005-4-1# 
Cookies设置有效期
       Response.Cookies(“book”)(“name) = “windows programming” ‘
类似数组的方式存储Cookies
       Response.Cookies(“book”)(“auther”) = “Petzod”
      
关于获取Cookies,即用Request.Cookies后加变量名即可


 

4.Session对象  (记载特定客户的信息)
       Session
是针对一个客户的,不同的客户用不同的Session,Application对象则是针对全部客户的,全部的客户共享一个Application对象,这是它们两个不同之处,至于其它的,则相差不大。
       Session
的属性有:SessionIDTimeoutSessionID是存储用户的Session ID,TimeOut则是指Session的有效期时长。
       Session
的方法只有一个,Abandon,它是清除Session对象。
       Session
的事件有两个:Session_OnStartSession_OnEnd,分别是指在一个Session对象开始前调用指定程序,或在一个Session对象结束后,调用指定程序。
       Session
事件一般在Global.asa文件中指定。
      
Session存储信息:可以如下:
       <% Session(“user_name”) = hisname
              Session(“age”) = 23
              Session(“School”)=”BeiJing Colloge” %>
      
以后获取Session中存储的信息的话,则可以如下:
       <% Dim name,age,school
              name = Session(“user_name”)
              age = Session(“age”)
              school = Session(“School”)  %>
      
强制清除Session中的信息:
      
一般Session到期后会自动清除(到期时间可在Session.TimeOut中指定,默认为20分钟),但到期前可以用Abandon方法强行清除。如:
       Session.Abandon

 

5.Aplication对象,(记载所有客户信息)
       Appliation
中的信息是为所有客户共享的,它只有一份。所以,一个客户更改Applciation中的数据,其它的客户再查看该数据时会看到更改后的值。
      
为了防止两个用户同时更改数据,一般Applciation在更改数据过过程中会Lock锁住数据,修改完后再解锁UnLock,如:
       <% Application.Lock
          Application(“show”) = Request(“pronunciation”)&<”br”>&Application(“show”)
          Application.Unlock  %>

 

6.Server对象 (处理服务器上的特定任务)
       Server
的属性有SciptTimeoutServer对象的方法有CreateObjectHTMLEncodeURLEncodeMapPathExecuteTransfer.
       ScriptTimeout
用来规定脚本文件执行的最长时间。如果超过规定时间,脚本还没处理完,则停目执行。

       CreateObject
Server对象中最重要的方法,主要用于创建组件、应用对象或脚本对象的实例,在存取数据库和存取文件时经常用到。如:
       <% Set db=Server.CreateObject(“ADODB.Connection”) ‘
建立数据库实例 %>
       ExeCute
用来停止执行当前网页,转到新的网页执行,执行完毕后返回原网页,继续执行ExeCute方法后面的语句。如:
      
Server.ExeCute(“6-4.asp”)
      
注意,与Response.Redirect不同的是,Redirect执行完新的网页后,并不会返回原网页再执行Redirect后的语句,但ExeCute不同,它会返回原网页执行
ExeCute
      
后的语句。Redirect方法可以转向一个网页和其它网站,但ExeCute方法一般只能转到同一个应用程序的其它文件。

 

 

7.利用数据源和不利用数据源连接数据库
利用数据源连接数据库方便,简单。但是缺点是要在服务器上设置数据源,如果程序从一个服务器移植到另一个服务器,还需要在另一台服务器上设置数据源,比较麻烦。不利用数据源的话,可以免去上面的麻烦,但是连接时自己要设定参数。下面是它们的示例:
-----
利用数据源连接(首先要自己要用ODBC配置好数据源)
<%    '利用数据源连接数据库

dim db

set db = Server.CreateObject("ADODB.Connection")

db.Open "db1"

%> 
------
不利用数据源连接 (无需配置ODBC数据源)
<%   '
不利用数据源连接数据库

Dim db

set db = Server.CreateObject("ADODB.Connection")

db.Open "Dbq="e:\theweb\db1.mdb;driver={Microsoft Access Driver (*.mdb)}"    ‘Driver和括号之间有一个空格

%>

 

8.实例:连接数据库并设置查询语句,并用表格显示出来。
<%    '利用数据源连接数据库

dim db

set db = Server.CreateObject("ADODB.Connection")

db.Open "userdb"   用数据源连接

Dim strSql,rs

strSql = "Select * from wwwlink order by link_id desc"

Set rs = db.Execute(strSql)     '记住:是db.Execute,而不是Server.Execute

%> 

<table width="75%" align = "center" border="0" cellpadding="0" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#000000">

<% Do while Not rs.Eof %>

  <tr bgcolor="#FFFFFF">

    <td><%=rs("name") %></td>

    <td><a href="<%=rs("URL")%>" target="_blank" ><% =rs("URL") %></a></td>

    <td><% =rs("intro") %></td>

       <td><% =rs("submit_date") %></td>
       <td><a href="delete.asp?link_id=<%=rs("link_id")%>">
删除</a></td>

       <td><a href="update.asp?link_id=<%=rs("link_id")%>">更新</a></td>

   </tr>

<%

       rs.MoveNext

       Loop

%> 

 

9.Server中的Connection对象
       Connection
对象是用来连接数据库的。建立Connection对象的方法如下
       Dim db
       set db=Server.CreateObject(“ADODB.Connection”)
       Connection
对象可以有Execute方法,可以用来执行SQL语名命令,但该方法有局限性:如
       db.Execute(“Select * from wwwlink”)
       Connection
对象可以有Open方法,可以用来打开数据库,如:
       db.Open “Dbq=e:\theweb\dbq.mdb; Driver={Microsoft Access Driver (*.mdb)}”
      
以上用到了Open方法的两个参数,一个是Dbq参数,一个是Driver参数。还可以有其余的参数,如下:
       Dsn   ---      ODBC
数据源名称
       User   ---      
数据库登录帐号
       Password   ---  
数据库登录密码
       Driver     ---  
数据库类型(驱动程序)
       Dbq        ---  
数据库的物理路径
       Provider    ---  
数据提供者
      
Access中创建基于ODBC的连接,不设置数据源,可以用到DriverDbq参数,如下
       <%
              Dim db
              set db = Server.CreateObject(“ADODB.Connection”)
              db.Open “Dbq=e:\theweb\db1.mdb; Driver={Microsoft Access Driver (*.mdb)}”
       %>
      
但是,考虑到程序移植后的路径问题,一般在Dbq参数中不直接写绝对路径,而是用Server.mappath将虚拟路径转化为实际路么,如:
              db.Open “Dbq=”&Server.Mappath(“db1.mdb”)&”; Driver={Microsoft Access Driver (*.mdb)}”
      
Access中创建基于ODBC的连接,设置数据源,可以用DSN参数,如下:
       <%
              Dim db
              Set db = Server.CreateObject(“ADODB.Connection”)
              db.Open(“DSN=userdb”)             ‘Dsn
可以省略,直接可写成db.Open (“userdb”)

%>
      
Access中创建基于OLE DB的连接,如下
       <%

       Dim db

       Set db = Server.CreateObject(“ADODB.Connection”)
       db.Open “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\theweb\db1.mdb”

%>
Connection
属性:
Attributes   ---  
设置Connection对象控制事务处理时的行为
CommandTimeOut   ---   Execute
执行的最长时间,默认为30秒,如:

<% db.CommandTimeout=60 %>
ConnectionString   ---  
指定Connection对象的数据库连接信息,如:
       <%  Dim db
              Set db = Server.CreateObject(“ADODB.Connection”)
              db.ConnectionString = “dbq=”&Server.Mappath(“db1.mdb”)&”;Driver={Microsoft Access Driver (*.mdb)}”
              db.Open
       %>

ConnectionTimeout   ---   Open方法与数据库链接的执行的最长时间,默认为15,如:

<% db.ConnectionTimeout = 30 %>

CursorLocation   ---   控制光标的类型
DefaultDatabase   ---  
指定Connection对象的缺省数据库名称
IsolationLevel   ---  
指定Connection对象事务处理的时机
Mode   ---  
设置连接数据库的权限,一般有0123四种权限,分别为末定义、只读、只写、可读可写,如:

<% Dim db

       Set db = Server.CreateObject(“ADODB.Connection”)

       db.Mode = 1    对该数据的操作为只读

       db.Open “userdb”

%>

Provider   ---   设置Connection对象内定的数据库管理程序名称
Version   ---  
显示ADO对象的版本信息,如:
       <% Response.Write db.Version %>
Connection
方法:
Open   ---  
建立与数据库的连接,只有与数据库连接之后,才可以执行各种操作。上面已举例

Close   ---   关闭与数据库的连接,

       <% db.Close

              Set db = nothing

       %>

Execute   ---   执行数据库查询(可执行各种操作),它的语法有两种,一种是可以返回记录集,一种是不返回记录集,如

       <%  返回记录集的数据库查询

Dim st

              st = db.Execute(“Select * from wwwlink”)   返回记录集,st为查询后的记录集,它为一指针,指向第一行记录集

              Do while Not rs.Eof

                     //....do something in st
                     st.MoveNext 
指向下一行的记录集

              Loop

       %>
       <% 
不返回记录集的数据库的查询

              strSql = “Delete From wwwlink where name=’
李政’”
              db.Execute strSql,number   ‘number
返加此次操作影响记录的条数。

              Response.Write “
共删除”&number&”条记录
       %>

BeginTrans  ---   开始事务处理

CommitTrans   ---   提交事务处理结果

RollbackTrans   ---   取消事务处理结果

 

 

 

10.Connection对象中的Error对象:(数据库错误的信息)

       Errors集合的属性 --- Connection对象.Errors.Count  可以获得数据库是否发生了错误,如果Count等于0,则表示没有错误发生,大于0,表示有错误发生。

              <% 
                     if db.Errors.Count=0 then

                            Db.CommitTrans     如果无错误,提交事务
                     else

                            Db.RollbackTrans         有错误,取消事务处理结果
                     end if
              %>

       Errors集合的方法:它有两个方法,一个是Item,一个是Clear,前者用来建立Error对象,后者用来清除Errors集合中所有的Error对象。如:
              <% Set err = db.Errors.Item(0) %> ‘
设置一个Error对象,代表Errors集合中第0个错误,创建对象后,就可以分析Error对象的各种属性了。
              <%db.Errors.Clear %>  
清除掉Errors集合中所有的Error对象。

       Error对象的属性。 要区别Error对象和Errors集合的区别,一个Error对象是指Errors错误集合中的一个实体,有了Error对象,就可以对该错误进行
             
各种分析和操作。它的属性主要有Number(错误编号)Description(错误描述)Source(发生错误之原因)HelpContext(错误的帮助提示文字)
              HelpFile(
错误的帮助提示文件)NativeError(数据库服务器产生的原始错误)

 

11.Command对象  (命令对象,是对数据库执行命令的对象,可以执行对数据库的查询,它可以添加、删除、修改记录等操作)
       Command
对象是介于Connection对象和Recordset对象之间的一个对象,它主要通过传递SQL指令,对数据库提出操作请求,把得到的结果返给Recordset对象。Command对象依赖于Connection对象,因为Command对象必须经过一个已经建立的Connection对象才能发生SQL指令。
      
建立Command对象:语法如下:
              Set Command
对象 = Server.CreateObject(“ADODB.Command”)
      
通过Connection对象建立Command对象:
             
<% Dim db,cmd
                     Set db=Server.CreateObject(“ADODB.Connection”)
                     db.Open “addr”
                     Set cmd=Server.CreateObject(“ADODB.Command”)
                     cmd.ActiveConnection = db
              %>
      
不通过Connection对象建立Command对象  (其实还是要通过Connection对象的,只不过Connection对象隐藏起来罢了)
              <% Dim cmd
                     set cmd = Server.CreateObject(“ADODB.Command”)
                     cmd.ActiveConnection = “addr”     ‘addr
是数据源
              %>   
注意,在此不能操纵Connection对象的一些功能。
       Command
对象的属性
              ActiveConnection   ---  
指定Connection连接对象属性

              CommandText   ---   指定数据库查询信息,可以有SQL语句,数据表名,查询名或存储过程名,具体是什么在CommandType中指定,如:

                     <% cmd.CommandType = 2   指定查询信息为表名

cmd.CommandText = “wwwlink”   数据表名

cmd.CommandType=1  指定查询信息为SQL语句
cmd.CommandText = “Select * from wwwlink “  ‘SQL
语句

              CommandType   ---   指定数据库查询信息的类型,其中-1为默认,表示无法确定,程序本身去分析它;1SQL语句;2为表名;3为查

询名或存储过程名。

              Prepared  ---   指定数据查询信息是否要先进行编译,存储。如:
                            <
% cmd.Prepared = True %>

       Command对象的方法:
             
有两个方法,一个是Execute,另一个是CreateParameter,前者表示执行数据库的各种操作,后者表示用来创建一个Parameter子对象。
              Execute
方法   ---   执行数据库的各种操作,语法如下:

                     Command对象.Execute number,parameters,options   注意,有三个参数。如

                     <% ...
                            Set cmd = Server.CreateObject(“ADODB.Command”)
                            cmd.ActiveConnection = db

                            下面执行查询操作(用SQL语句)

cmd.CommandText = “Select * from wwwlink”

                            cmd.CommandType = 1

                            Set rs = cmd.Execute   ‘Execute返回查询结果集
                           
下面执行查询操作(用表名)
                            cmd.CommandText = “wwwlink”

                            cmd.CommandType=2

                            Set rs = cmd.Execute

                            下面执行删除操作

                            cmd.CommandText = “Delete From wwwlink”

                            cmd.CommandType = 1

                            cmd.Execute

                  %>
         Command
三个参数中number表示返回本次操作符合条件的记录总数,parameters用来输入查询参数数组,options可以设定CommandType类型。如

                     上面的删除操作可以用下面来表示,并可以返回影响的行数。

                     <%

                            cmd.CommandText = “Delete From wwwlink”
                            cmd.Execute (number,,1)  ‘number
为影响的行数,第二参数没指定,第三参数表示为CommandType1.

                     %>

         CreaParameter行为在后面讨论

 

 

12.ASP中的时间函数
      
Now()函数同时返回当前的日期和时间。Date()函数返回当前的日期,Time()函数返回当前的时间。
       Year(Date())
返回当前的年份,Date后面的括号可以省略。Month(Date)返回当前的月份,Day(Date)返回这个月的号数,WeekDay(Date)函数返回星期几。
       WeekDay
默认是从星期天开始的,也就是说,星期天返回”1”,星期一返回”2”,可以在后面指定基数,如WeekDay(Date,vbMonday)
       Year,Month,Day,WeekDay
后面可以指定日期常数,常数的格式可以有:WeekDay(#12/25/2000#)
WeekDay(“12-25-2000”)
      
可以返回日期的字符串,如MonthName(date),如果今天是四月,它会返回”April”,WeekDayName(Date),如今天是星期一,它会返回
Monday
       Hour(Time)
返回当前的小时,Minute(Time)返回当前的分钟,Second(Time)返回当前的秒数
.
      
可以指定参数为常数,如Minute(#12:34:15#),或Minute(“12:34:15”)它返回
34,
      
把字符串转化成日期格式的函数为DateValue()

      
可以把日期和时间作加法和减法运算,它们用DateAdd函数,如DateAdd(“ww”,6,Date),意思是说把当前的日期加上六个星期。DateAdd(“s”,15,Time)意思是
      
把当前的时间加上15秒。
       DateAdd
的第一个参数可以有:”yyyy”表示年,”q”表示季度,”m”表示月,”y”/”d”/”w”表示天,”ww”表示星期,”h”表示小时,”m”表示分钟,”s”表示秒。
      
可以用DateDiff函数表示时间的间隔:
      
DateDiff(“d”,”1/1/1998”,Date)表示1998-1-1到今天的天数。

 

13.格式化货币函数FormatCurency()
      
如:ad_revenue=3000  formatCurrency(ad_revenue)在中国则为¥3,000.00。计算机区域不同有不同的设置。在美国则为$3,000.00

 

 

14.Request.Form语法解释

       Request.Form(element) [ (index) | Count ]

       其中element我们知道是表单中元素的名称,但index,Count究竟是什么意思呢?index表示如果一个元素名称有多个实例,那么index就是其中的第几项,
      
Count表示得则是这个名字有多少个实例。比如:

    <input type="text" name="hobby">

    <input type="checkbox" name="hobby" value="足球">足球</p>

    <input type="checkbox" name="hobby" value="蓝球">蓝球 </p>

    <input type="checkbox" name="hobby" value="乒乓">乒乓 </p>

    <input type="checkbox" name="hobby" value="排球">排球 </p>

<input type="submit" name="Submit" value="提交">
      
上面是在表单中载下来的一些项,基中nameHobby的有五项,如果直接用Request.Form(“hobby”)的话,虽然也能一一列举出来,但是要逗号输出。另外,其中有个type类型和checkbox类型的,text类型不写的话,他还会在最前面加一个逗号,意思也不是很明显。如果我们用indexCount来控制输出的话,意思就明显多了,如下:

       <%
              for i=1 Request.Form(“hobby”).Count   ‘Count
表示名字hobby被选中的有几项。
                     Response.Write Request.Form(“hobby”)(i) 
表示输出第几项。
              Next
       %>
      
以上代码可以见E:\TheWeb\Client\main.asp

 

 

posted @ 2005-03-19 10:52  shipfi  阅读(2533)  评论(2编辑  收藏  举报