zoukankan      html  css  js  c++  java
  • 网页脚本中值类型的测试

    摘  要:

    随着电脑的普及及网络技术发展,人们发现,现在越来越离不开电脑,离不开网络了。有什么问题解决不了,有什么信息你不知道,好,到网上搜索,你会发现外面的世界如此丰富多彩。是否有冲动建立自己的站点呢?注意,别忘了利用数据库技术,它使你的页面更精彩。学学HTML、ASP等,看看SQL2000,摸摸VBScript,我们开始上路啦。问题很多,慢慢来,这里谈谈网页脚本中值的类型。

    关键词:

    网页制作;ASP;VBScript;值类型

     

    在动态网页设计中,常常要编写脚本,常用的有VbScript和JavaScript等,一般客户端默认采用JavaScript,服务器端默认是VbScript。因为VbScript是ASP动态网页设计的默认脚本,所以本文以VbScript为例来谈一下值的类型及测试。
    在编写网页时,由于爱好,常工作于代码状态下。经常要和一些变量或取得的值打交道,常有些问题该用时忘了具体细节,临时还得进行验证测试,很不方便,本文以详尽的例子向大家说明了这些问题。

    一、值类型

    在VbScript中,变量只有一种类型,那就是Variant。Variant变量能够存储所有类型的数据。一个变量中究竟存储的是什么类型的数据,可用函数VarType返回,该函数返回一个整数,代表变量值的类型,表1列出了该函数的返回值。

    表1  VarType函数返回值

    常数 描述
    vbEmpty 0 Empty(未初始化)
    vbNull 1 Null(无有效数据)
    vbInteger 2 整数
    vbLong 3 长整数
    vbSingle 4 单精度浮点数
    vbDouble 5 双精度浮点数
    vbCurrency 6 货币
    vbDate 7 日期
    vbString 8 字符串
    vbObject 9 Automation 对象
    vbError 10 错误
    vbBoolean 11 Boolean
    vbVariant 12 Variant(只和变量数组一起使用)
    vbDataObject 13 数据访问对象
    vbByte 17 字节
    vbArray 8192 数组

     

    下面的ASP代码简单测试了Vartype函数。

    <%
    dim a
    response.write "dim a  后 vartype(a)=" & vartype(a) & "<br>"
    a=2
    response.write "a=2   后 vartype(a)=" & vartype(a) & "<br>"
    a="2"
    response.write "a=""2""  后 vartype(a)=" & vartype(a) & "<br>"
    a=empty
    response.write "a=empty 后 vartype(a)=" & vartype(a) & "<br>"
    %>

    执行后的结果是:

    dim a  后 vartype(a)=0
    a=2   后 vartype(a)=2
    a="2"  后 vartype(a)=8
    a=empty 后 vartype(a)=0

    下面对一些特殊的返回值进行说明

    1、Empty值

    Empty值用来标记尚未初始化的Variant变量。当一个Variant变量包含Empty值时,仍可在表达式中使用它,此时根据表达式的上下文情况将其作为0或零长度字符串来处理。另外,也可用IsEmpty函数测试Empty值。如下面的ASP代码段:

    <%
    dim a
    if a=0 then response.write "a=0<br>"
    if a="" then response.write "a=""""<br>"
    if a=false then response.write "a=false<br>"
    if a=#0:0# then response.write "a=#0:0#<br>"
    if isempty(a) then response.write "isempty(a)<br>"
    %>

    执行结果是:

    a=0
    a=""
    a=false
    a=#0:0#
    isempty(a)

    2、Null值

    Null值通常用于数据库应用程序,表示未知数据或丢失的数据。可用IsNull函数测试是否包含Null值,我们也可将Null值赋值给变量。

    一般说来,对包含Null的表达式,其计算结果总是Null。但需要注意的是运算符“&”,它用来强制两个表达式作字符串连接。如果两个表达式都是Null,则结果也是Null。但是,若只有一个表达式是Null,那么在与其它表达式连接时,都将其作为长度为零的字符串处理。

    Null与Empty是不同的,请分析下面的ASP测试程序:

    <%
    dim a
    a=null
    if a=0 then response.write "a=0<br>"
    if a="" then response.write "a=""""<br>"
    if a=false then response.write "a=false<br>"
    if isempty(a) then response.write "isempty(a)<br>"
    if isnull(a) then response.write "isnull(a)<br>"
    if a=null then response.write "a=null<br>"
    if a<>null then response.write "a<>null<br>"
    a=a+6
    if isnull(a) then response.write "after a=a+6, a is null still.<br>"
    a=a & 6
    if not isnull(a) then response.write "after a=a&6, a is not null.<br>"
    %>

    执行结果如下:

    isnull(a)
    after a=a+6, a is null still.
    after a=a&6, a is not null.

    二、不同取值方法的值类型测试

    1、获取Application对象存储的数据

    Application对象内的数据能被该应用程序的所有用户共享,可用来存储和读取共享的应用程序信息。下面是测试的ASP程序:

    <%
    application("a")=6
    response.write "application(""a"")=6  后类型值="&varitype(application("a"))&"<br>"
    application("a")="6"
    response.write "application(""a"")=""6""后类型值="&varitype(application("a"))&"<br>"
    response.write "application(""b"")没赋值 类型值="&varitype(application("b"))&"<br>"
    %>

    执行结果如下:

    application("a")=6  后类型值 = 2
    application("a")="6" 后类型值 = 8
    application("b")没赋值 类型值 = 0

    2、获取Session对象存储的数据

    Session对象用于在页面间跳转时保存和传递数据,和Application对象不同的是,Session对象只保存单个用户信息。下面是测试的ASP程序:

    <%
    session("a")=123
    session("b")="123"
    response.write vartype(session("a")) & " "
    response.write vartype(session("b")) & " "
    response.write vartype(session("c")) & " "
    %>

    显示结果是:

    2 8 0 

    3、获取Cookies集合的值

    Cookies按生存周期可分为会话Cookies和永久Cookies。虽然可给Cookies赋予不同的值类型,但取得Cookies值时类型只有一个,那就是字符串。请分析下面的代码:

    <%
    response.cookies("a")=123
    response.cookies("b")=now
    response.write vartype(request.cookies("a")) & " "
    response.write vartype(request.cookies("b")) & " "
    response.write vartype(request.cookies("c")) & " "
    %>

    显示结果是:

    8 8 8 

    4、用QueryString方法获取表单数据

    当使用GET方法提交表单数据时,数据作为URL地址的查询字符串字段参数传递给服务器,若字段存在,返回字符串,若不存在,返回Empty。

    将下面的代码保存到test.asp文件中,然后用http://localhost/test.asp?a=123&b="123"进行测试,代码如下:

    <%
    a=request.querystring("a")
    b=request.querystring("b")
    c=request.querystring("c")
    response.write vartype(a) & " "
    response.write vartype(b) & " "
    response.write vartype(c) & " "
    %>

    执行结果是:

    8 8 0 

    5、使用Form方法获取表单数据

    当使用POST方法提交表单数据时,在服务器端可用Form方法获取数据。

    下面是表单网页的代码:

    <form method="POST" action="qa.asp">
    <p>姓名:<input type="text" name="a" size="20"></p>
    <p><input type="submit" value="提交"></p>
    </form>

    下面是处理表单数据的代码:

    <%
    a=request.form("a")
    b=request.form("b")
    response.write vartype(a) & " "
    response.write vartype(b) & " "
    %>

    执行结果是:

    8 0 

    6、从数据库中获取数据

    一个真正的、完整的站点是离不开数据库的。下面是SQL2000数据库的使用例子。

    数据库的名字是test,ueses是该库中的一个表,其各字段的定义如图1所示。

    图1 users表结构

    图2 users表中的数据

     

    下面的代码完成数据库的连接,然后查询users表中的数据并将其显示在表格中。

    <%
    dim conn, rs, cs
    set conn=server.CreateObject("ADODB.Connection")
    set rs=server.createobject("adodb.Recordset")
    cs="Provider=SQLOLEDB.1;server=(local);database=test;uid=xx;pwd=xxxxx;"
    conn.Open cs
    rs.open "select 姓名,口令,昵称,身高,出生 from users where id=4", conn
    %>
    <table border="1" width="300" id="table1">
        <tr><td>字段</td><td>字段值</td><td>值类型</td></tr>
        <tr><td>姓名<td><%=rs("姓名")%><td><%=vartype(rs("姓名"))%></tr>
        <tr><td>口令<td><%=rs("口令")%><td><%=vartype(rs("口令"))%></tr>
        <tr><td>昵称<td><%=rs("昵称")%><td><%=vartype(rs("昵称"))%></tr>
        <tr><td>身高<td><%=rs("身高")%><td><%=vartype(rs("身高"))%></tr>
        <tr><td>出生<td><%=rs("出生")%><td><%=vartype(rs("出生"))%></tr>
    </table>
    <%
    rs.close
    conn.close
    %>

    下面表2是代码执行的结果:

    表2 数据库查询结果

    字段 字段值 值类型
    姓名 仝婷 8
    口令   1
    昵称   8
    身高 180 2
    出生 1986-1-6 7

     

    上面已经用代码详尽描述了数据的类型及检测的方法,利用这些,我们能更好地组织我们的程序,使代码更严谨,更规范,避免一些错误的发生。希望本文的描述,对你能有所帮助。由于本人水平有限,有不到的地方还请大家批评指正,本人深表感谢!

  • 相关阅读:
    NSIS 2.0界面快速入门
    [反汇编练习] 160个CrackMe之016
    [反汇编练习] 160个CrackMe之015
    [反汇编练习] 160个CrackMe之014
    [反汇编练习] 160个CrackMe之013
    Ubuntu 安装之python开发
    git 技能图
    linux 系统 权限
    Git 常用命令
    python 之virtualenv和virtualenvwrapper使用
  • 原文地址:https://www.cnblogs.com/crane/p/335281.html
Copyright © 2011-2022 走看看