电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网站运营-> 网站运营
以前收集的一些资料---XML在ASP中的一些运用
作者:网友供稿 点击:23
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
翻译得很蹩脚,望大家谅解,呵呵。
scriptlets - 一个更好的组织你的asp代码的方法

使用可扩展标志语言(xml)编写的脚本和组件和.xml被用来定义对象,方法,属性等等。
同时脚本还提供函数。脚本语言可以是javascript, vbscript等等。运用在网站的运用程序和网站的
普通例子,现在都可以被转换成scriptlets. 只要使用scriptlets 来写组件,
他们可以再被从新使用在网站或则运用程序各部分,既可以使用在服务端(例如asp代码)
也能够被使用在客户端(例如浏览器)

这里将集中讨论服务端的用来组件asp代码的scriptlets。
早些时候,asp开发者习惯写include文件。用来做公共的服务端例行程序,
还用在他们的网站运用程序中。从功能上说,include文件被局限在仅仅是在页面中引用。
完成传递参数的功能。
现在同样的公共例行程序能够中添加了scriptlet方法和并且有助与在运用程序中使用组件。
这个方法现在非常普遍的运用在网站运用程序中,能够被运行在同一个服务器上的运用程序重用。
这个方法使得从数据库中获取(pull-down)数据将变得非常通俗化。

例子:建立scriptlet方法和属性,使得很通俗的从数据库中获取数据。
并且使得运行在同一个服务器上所有的运用程序使用这个同样的scriptlet,而不用重新写代码了。

代码如下:
scriptlet文件名为scp_query2list.sct

  <?xml version="1.0"?>
  <scriptlet>
  <registration
          description="scp_query2list"
          progid="scpquery2list.scriptlet"
          version="1.00"
          classid="{e32d2a70-4e11-11d3-a9f0-0080c8034244}"
  >
  </registration>

  <public>
          <method name="query2list">
                  <parameter name="objconn"/>
                  <parameter name="query"/>
          </method>
  </public>

  <implements type="asp" id="asp"/>
  <script language="vbscript">

  <![cdata][
          sub query2list(objconn, query)          
                  dim objrs
                  set objrs = objconn.execute(query)
                          if objrs.eof and objrs.bof then
                                  response.write "<option value=none>没有找到记录。</option>"
                          else
                                  do while not objrs.eof
                                          response.write "<option value=" & objrs(0) & ">" & objrs(0) & "</option>"
                                          objrs.movenext
                                  loop
                          end if
                  objrs.close
                  set objrs = nothing
          end sub
  ]]>

  </script>
  </scriptlet>
其中在scriptlets中使用的各种元素的具体说明可以在http://msdn.microsoft.com/scripting处找到。
下面是怎么具体调用scriptlets的代码:(只要是在同一个服务器上注册了scriptlets的运用程序,都可以使用这段代码)
query2list.asp 文件:
  <%@ language=vbscript %>
  <%

          option explicit

          dim objconn
          dim dbpath
          dim sql
          dim objscpquery2list

          set objconn = server.createobject ("adodb.connection")
          dbpath="dbq=" & server.mappath("techpapers_test.mdb")

          objconn.open "driver={microsoft access driver (*.mdb)}; " & dbpath

          --- query required for pull down
          sql = "select authorfirst from papers"
          set objscpquery2list = server.createobject ("scpquery2list.scriptlet")
  %>
  <html>
  <body>
  <center>
  <form name = "fr1">
          <select>
          <option value="none" selected>选择发行人</option>
          <% call objscpquery2list.query2list(objconn, sql) %>
          </select>
  </form>
  </center>
  </body>
  </html>

  <%
          objconn.close
          set objconn = nothing
          set objscpquery2list = nothing
  %>

出现的问题:
第一次使用scriptlets有可能会出现这样的问题,就是内存浪费现象,改进方法如下:
将asp对象传递给scriptlets,而代替使用asp接口。(就是不使用  <implements type="asp" id="asp"/>申明)
testscp.sct:
          <?xml version="1.0"?>
  <scriptlet>
  <?scriptlet error="true" debug="true"?>
  <registration
                  description="testscp"
                  progid="testscp.scriptlet"
                  version="1.00"
                  classid="{78a33aa0-335d-11d3-a9a9-0080c8034244}"
  >
  </registration>

  <public>
            <property name="cnnstate">
             <get/>
            </property>
            <method name="testwrite">
            <parameter name="shtml"/>
     </method>
            <method name="testwriteline">
      <parameter name="shtml"/>
     </method>
     <method name="aspconnect">
      <parameter name="oserver"/>
             <parameter name="oapplication"/>
             <parameter name="osession"/>
            <parameter name="orequest"/>
      <parameter name="oresponse"/>
     </method>
  </public>
  <script language="vbscript">
  <![cdata][
    private cnnstate, server, application, session, request, response
    cnnstate = false

    function get_cnnstate()
      get_cnnstate = cnnstate
    end function
   
    sub aspconnect(oserver, oapplication, osession, orequest, oresponse)
      set server = oserver
      set application = oapplication
      set session = osession
      set request = orequest
      set response = oresponse
      cnnstate = true
    end sub

    sub testwrite(shtml)
      response.write shtml
    end sub

    sub testwriteline(shtml)
      response.write shtml & "<br>"
    end sub
  ]]>

  </script>
  </scriptlet>

传递asp对象的asp程序如下:
testscp.asp代码

  <%
  set scrip=server.createobject("testscp.scriptlet")
  if err then
    response.write "<br>error:" & err.number
    response.write "<br>" & err.description
    response.write "<br>" & err.source
    response.end
  end if

  response.write "<br> cnnstate=" & scrip.cnnstate
  if err then
    response.write "<br>error:" & err.number
    response.write "<br>" & err.description
    response.write "<br>" & err.source
    response.end
  end if
     
  response.write "<br>connecting..."
  scrip.aspconnect server, application, session, request, response
  if err then
    response.write "<br>error" & err.number
    response.write "<br>" & err.description
    response.write "<br>" & err.source
    response.end
  end if
    
  response.write "<br>cnnstate=" & scrip.cnnstate & "<br>"
  response.write "<br>testing ...write<br>"
   
  scrip.testwriteline ""
  scrip.testwrite "this is the first part "
  scrip.testwrite "and this is the second."

  response.write "<br>testing ...writeline<br>"
  scrip.testwriteline "this is text with a line break."
  scrip.testwriteline "and so is this."
  %>
上面的代码没有包括<implement type = "asp"/>, 但是仍然可以访问asp对象。
因为他们是被当成对象传递给scriptlet.
下面再给出一个很常用的取时间的狸子:

scp_dmy.sct
  <?xml version="1.0"?>
  <scriptlet>   

  <?scriptlet error="true" debug="true"?>

  <registration
          description="scp_dmy"
          progid="scpdmy.scriptlet"
          version="1.00"
          classid="{bba68a50-3ae0-11d3-a9c0-0080c8034244}"
  >
  </registration>   

  <public>        
          <method name = "option_num">
          <parameter name = "num"/>
          </method>
          <method name = "option_month">
          </method>
          <method name = "option_year">
          </method>
  </public>    

  <implements type="asp" id="asp"/>    
  <script language="vbscript">

  <![cdata][
  sub option_num(num)
          for i = 1 to num
                  if i<10 then
                          x = 0 & i
                  else
                          x = i
                  end if
                  response.write "<option value = " & x & ">" & x & "</option>"
          next
  end sub     

  sub option_month()
          for i = 1 to 12
                  if i<10 then
                          x = 0 & i
                  else
                          x = i
                  end if
                  response.write "<option value = " & x & ">" & monthname(x,true) & "</option>"
          next
  end sub  

  sub option_year()
          for i = -1 to 3
                  yy = year(dateadd("yyyy",i,date()))
                  response.write "<option value = " & yy & ">" & yy & "</option>"
           next
  end sub
     
  ]]>
  </script>
    
  </scriptlet>

dmy_check.asp: 文件
  <%
          set scrip = server.createobject("scp_dmy.scriptlet")
  %>

  <html>
  <head></head>
  <body>

  <form name = "form1">
  从 :
  <select name = "d1">
  <option value="">dd</option>
  <% call scrip.option_num(31) %>
  </select>
    
  <select name = "m1">
  <option value="">mm</option>
  <% call scrip.option_month() %>
  </select>

  <select name = "y1">
  <option value="">yy</option>
  <% call scrip.option_year() %>
  </select>
  <br><br>

  到 :
  <select name = "d2">
  <option value="">dd</option>
  <% call scrip.option_num(31) %>
  </select>
    

  <select name = "m2">
  <option value="">mm</option>
  <% call scrip.option_month() %>
  </select>

  <select name = "y2">
  <option value="">yy</option>
  <% call scrip.option_year() %>
  </select>
  </form>

  <%
          set scrip = nothing
  %>    

  </body>
  </html>
要记住的是,现在服务器上所有的程序都能够使用这个scriptlet,这能够减少include文件的使用。
上面的代码还能够增加一些功能,例如使用不同的格式显示日期。
也就是说如果一个运用程序需要显示dd-mm-yyyy的日期格式,可以在scriptlet中调用各自的函数。

最后,使用scriptlet的还有一个好处就是,它不象真正的asp组件,因为真正的asp组件在注册和取消注册的
时候都需要你重新启动iis,而使用scriptlet是不需要这么干的,仅仅是几句代码而已。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·ASP.NET的安装与运行环境-.NET教程,Asp.Net开发
·运用.NET+SQL Server2005构建多层网站(3)-.NET教程,数据库应用
·JAVA写的四则混合运算-JSP教程,Java技巧及代码
·获取高精度的时间差,可以用来分析页面运行时间的长短-.NET教程,Asp.Net开发
·基于.Net平台应用程序唯一运行实例C#代码实现-.NET教程,C#语言
·Alexa 世界网站排名研究(下)-网站运营,搜索引擎推广
·运用.NET+SQL Server2005构建多层网站(1)-.NET教程,数据库应用
·优化系统让Photoshop运行更流畅-网页设计,Photoshop
·ASP.NET 2.0运行时简要分析-.NET教程,Asp.Net开发
·手工打造运算符重载过程-.NET教程,C#语言

最新文章
·MySQL服务器内部安全数据目录访问
·MySQL和SQL Server,到底选择谁?
·五种推广模式的优劣的比较
·基于.Net平台应用程序唯一运行实例C#代码实现-.NET教程,C#语言
·运用反射给实体赋值-.NET教程,Asp.Net开发
·大数运算(一)-.NET教程,评论及其它
·虚拟主机上asp.net运行权限不足问题及解决-.NET教程,Asp.Net开发
·ASP.NET底层架构探索之进入.NET运行时-.NET教程,Asp.Net开发
·基于.Net平台应用程序唯一运行实例实现-.NET教程,.NET Framework
·ASP.NET 2.0运行时简要分析-.NET教程,Asp.Net开发




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号