CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

求助:ASP网页中代码复用的问题

楼主hxb74(开心小宝)2003-11-03 10:53:42 在 Web 开发 / ASP 提问

我以前都是用VC写的程序,对类还算比较熟悉。  
  最近在学写WEB应用,想请教各位高人在WEB页面里能用哪些方法实现代码复用、数据封装等任务。  
  最好能写详细一点,或推荐一些可以下载的电子书籍等的。  
  小弟先谢了。 问题点数:20、回复次数:5Top

1 楼KOON(卢云)回复于 2003-11-03 11:03:13 得分 0

技术是不大行类,不过推荐给你代码复用的方法倒是不少,若是你使用.NET   STUDIO开发的话,那么大家都熟悉,要是你用DW   MX开发的话,倒是推荐给你窗口-代码-代码片断,那里有很多已经封装好了的代码,你自己也可将自己收集或是自己写的添加进去,开发的时候很方便.Top

2 楼hxb74(开心小宝)回复于 2003-11-03 11:34:24 得分 0

我想知道如何在WEB页中实现类似封装的功能?  
  我知道如何在VBScript或JavaScript中写函数之类的,可是我怎样把一些相近的或说是针对某一任务的功能集中到一起呢?比如,我要写一个有关发票结算之类的应用,可以区分出一个结算单对象,相应的有一些方法,这些方法最好是在一个地方写好,网页中直接调用就好了。我如何实现这样的目的呢?Top

3 楼Dick001()回复于 2003-11-03 11:41:12 得分 20

这样:  
  <%  
  Class   类名  
   
  Private   d  
  Public   s  
   
  Private   Function   f()  
  ...  
  End   Function  
   
  Public   Function   f1()  
  ......  
  End   Function  
   
  End   Class  
  %>  
  <%  
  Set   obj=New   类名  
  类名.s=""  
  类名.f1()  
  %>Top

4 楼KOON(卢云)回复于 2003-11-03 17:45:13 得分 0

支持,楼上的写法正确,可以使用,贴上一个例子,IP地址搜索类  
   
  '作者:萧寒雪(S.F.)    
  'QQ号:410000  
  Server.ScriptTimeout   =   &HE10   '&H3C  
  Response.Buffer   =   ("S.F."   =   "S.F.")  
  Dim   IpSearch  
  '建立对象  
  Set   IpSearch   =   New   clsIpSearch  
  '   该句建立SQL   Server的IP地址库的连接,可使用默认连接,但要保证存在wry.mdb  
  IpSearch.ConnectionString   =   "DRIVER={SQL   Server};SERVER=hostname:UID=sa;PWD=;DATABASE=Ip"  
  '   设置要查询的IP,可用默认值,这里设置的是   127.0.0.1  
  IpSearch.IpAddress   =   &H7F   &   "."   &   &H00   &   "."   &   &H00   &   "."   &   &H01  
  If   Request.QueryString("IP")<>""   Then  
  If   IpSearch.Valid_IP(Request.QueryString("IP"))   Then  
  IpSearch.IpAddress   =   Trim(Request.QueryString("IP"))  
  End   If  
  End   If  
  '   取得IP   所在地,反馈值有三个,以逗号分割  
  '   格式为:所在国家或地区,当地上网地区,提供正确IP地址信息的用户名  
  Response.Write   ("所在地:"   &   IpSearch.GetIpAddrInfo()   &   "<br>")  
  '   取出IP地址  
  Response.Write   ("IP:"   &   IpSearch.IpAddress   &   "<br>")  
  '   将IP地址转换为数值  
  Response.Write   ("IP转换为数值:"   &   IpSearch.CLongIP(IpSearch.IpAddress)   &   "<br>")  
  '   将IP地址转换为数值后还原成IP字符串  
  Response.Write   ("数值还原成IP:"   &   IpSearch.CStringIP(IpSearch.CLongIP(IpSearch.IpAddress))   &   "<br>")  
  Response.Write   ("<hr>")  
   
  '这里是测试代码  
  'dim   a,b,c,d  
  'for   a   =   0   to   255  
  '   for   b=   0   to   255   step   20  
  '   for   c=0   to   255   step   20  
  '   for   d   =   0   to   255   step   20  
  '   IpSearch.IpAddress   =   a   &   "."   &   b   &   "."   &   c   &   "."   &   d  
  '   Response.Write   ("所在地:"   &   IpSearch.GetIpAddrInfo()   &   "<br>")  
  '   Response.Write   ("IP:"   &   IpSearch.IpAddress   &   "<br>")  
  '   Response.Write   ("IP转换为数值:"   &   IpSearch.CLongIP(IpSearch.IpAddress)   &   "<br>")  
  '   Response.Write   ("数值还原成IP:"   &   IpSearch.CStringIP(IpSearch.CLongIP(IpSearch.IpAddress))   &   "<br>")  
  '   Response.Write   ("<hr>")  
  '   next  
  '   next  
  '   next  
  'next  
  %>  
  <%  
  Class   clsIpSearch  
  '##################################################################  
  '声明:本程序采用的数据为网络上著名的IP工具软件《追捕》作者“冯志宏”  
  '先生所精心搜集整理。  
  '《追捕》数据库的转换方法:  
  '修改wry.dll   文件后缀名称为   wry.dbf  
  '方法一:  
  '   启动Access   数据,选择打开数据库,选择打开的文件类型为“dBASE   5   (*.dbf)”  
  '   打开wry.dbf文件,选择《工具》菜单下的《数据库实用工具》中的《转换数据库》  
  '   选择《转换为   Access   97   格式(版本可选)》功能,保存文件即可成为MDB格式。  
  '方法二:  
  '   使用SQL   Server提供的《导入和导出数据》向导。  
  '   方法简要说明:在ODBC   控制面板中设置指向wry.dbf的DSN。  
  '   使用《导入和导出数据》向导,选择其正确的驱动程序和要导入的库即可。  
  '   或者直接导入由方法一生成的MDB文件入库。  
  '方法三:  
  '   使用Access   打开wry.dbf   文件后将自动通过MDB库引用原库数据。  
  '  
  '未安装其他数据库平台,其他方法欠考虑。  
  '######################   类说明   ####################################  
  '#   IP   所在地搜索类  
  '#   ConnectionString   为数据库连接声明,默认声明同级目录的wry.mdb  
  '#   IpAddress   请设置为进行搜索的IP   地址,默认取当前访问者IP  
  '#   类建立方法  
  '#   Dim   objVal   '声明一个变量  
  '#   Set   objVal   =   New   clsIpSearch   '建立类对象  
  '#   Response.Write   (objVal.IpAddress)   '显示当前访问者IP  
  '#   IP   搜索类方法列表:  
  '#   .Valid_IP   'IP   地址正确性效验  
  '#   参数:IP   'IP   数值或者字符串  
  '#   .CLongIP   '将IP地址转换为长整型的数值  
  '#   参数:asNewIP   '要转换的IP地址字符串  
  '#   .CStringIP   '将长整型的数值转换为IP  
  '#   参数:anNewIP   '要还原为IP地址的数值  
  '#   .GetClientIP   '取访问者的IP  
  '#   .GetIpAddrInfo   '得到设置过IpAddRess属性的IP所在地  
  '#   属性列表(自动初始化):  
  '#   ConnEctionString   'ADo   访问数据库连接说明  
  '#   IpAddress   '要操作的IP地址  
  '#   内部错误处理:  
  '#   欠缺,未做,请自行补充。  
  '##################################################################  
   
  Public   ConnectionString  
  Public   IpAddress  
  Private   DBConn   '连接对象,模块级声明  
  '────────────────────────────────  
  '   类初始化  
  Private   Sub   Class_initialize()  
  '   这里建立的是通过“数据转换--方法一”生成的mdb   库文件  
  ConnectionString="DRIVER={Microsoft   Access   Driver   (*.mdb)};DBQ="   &   Server.MapPath("wry.mdb")  
  IpAddress   =   GetClientIP()  
  Set   DBConn   =   OpenConnection()  
  End   Sub  
  '────────────────────────────────  
  '   类注销  
  Private   Sub   Class_Terminate()  
  ConnectionString   =   Null  
  IpAddress   =   Null  
  DBConn.Close  
  Set   DBConn   =   Nothing  
  End   Sub  
  '────────────────────────────────  
  '   建立一个连接  
  Private   Function   OpenConnection()  
  Dim   tmpConn  
  Set   tmpConn=Server.CreateObject("ADODB.Connection")  
  tmpConn.Open   ConnectionString  
  Set   OpenConnection=tmpConn  
  Set   tmpConn=nothing  
  End   Function  
  '────────────────────────────────  
  '   执行一个SQL命令,并返回一个数据集对象  
  Private   Function   SQLExeCute(strSql)  
  Dim   Rs  
  Set   Rs=DBConn.ExeCute(strSQL)  
  Set   SQLExeCute   =   Rs  
  Set   Rs=nothing  
  End   Function  
  '────────────────────────────────  
  'IP   效验  
  Public   Function   Valid_IP(ByVal   IP)  
  Dim   i    
  Dim   dot_count    
  Dim   test_octet    
  Dim   byte_check    
  IP   =   Trim(IP)    
  '   确认IP长度    
  If   Len(IP)   <   &H08   Then    
  Valid_IP   =   False    
  '显示错误提示    
  Exit   Function    
  End   If    
   
  i   =   &H01    
  dot_count   =   &H00    
  For   i   =   1   To   Len(IP)    
  If   Mid(IP,   i,   &H01)   =   "."   Then    
  '   增加点的记数值    
  '   并且设置text_octet   值为空    
  dot_count   =   dot_count   +   &H01    
  test_octet   =   ""    
  If   i   =   Len(IP)   Then    
  '   如果点在结尾则IP效验失败    
  Valid_IP   =   False    
  '   显示错误提示    
  Exit   Function    
  End   If    
  Else    
  test_octet   =   test_octet   &   Mid(IP,   i,   &H01)    
  '   使用错误屏蔽来检查数据段值的正确性    
  On   Error   Resume   Next    
  '   进行强制类型转换    
  '   如果转换失败就可通过检查Err是否为真来确认    
  byte_check   =   CByte(test_octet)    
  If   (Err)   Then    
  Top

5 楼KOON(卢云)回复于 2003-11-03 17:45:43 得分 0

'   强制类型转换产生错误    
  '   所取段值的数据不为数值    
  '   或所取段值的数据长度大于&HFF  
  '   则类型不为byte类型    
  '   IP   地址的正确性为假    
  Valid_IP   =   False    
  Exit   Function    
  End   If    
  End   If    
  Next    
   
  '   通过上一步的验证,现在应该要检查小点是否有3个    
  If   dot_count   <>   &H03   Then    
  Valid_IP   =   False    
  Exit   Function    
  End   If    
  '   一切正常,那么该IP为正确的IP地址    
  Valid_IP   =   True    
  End   Function    
  '────────────────────────────────  
  '   转换一个数值为IP  
  Public   Function   CStringIP(ByVal   anNewIP)  
  Dim   lsResults  
  Dim   lnTemp  
  Dim   lnIndex  
  For   lnIndex   =   &H03   To   &H00   Step   -&H01  
  lnTemp   =   Int(anNewIP   /   (&H100   ^   lnIndex))  
  lsResults   =   lsResults   &   lnTemp   &   "."  
  anNewIP   =   anNewIP   -   (lnTemp   *   (&H100   ^   lnIndex))  
  Next  
  lsResults   =   Left(lsResults,   Len(lsResults)   -   &H01)  
  CStringIP   =   lsResults  
  End   function  
  '────────────────────────────────  
  '   转换一个IP到数值  
  Public   Function   CLongIP(ByVal   asNewIP)  
  Dim   lnResults  
  Dim   lnIndex  
  Dim   lnIpAry  
  lnIpAry   =   Split(asNewIP,   ".",   &H04)  
  For   lnIndex   =   &H00   To   &H03  
  if   Not   lnIndex   =   &H03   Then  
  lnIpAry(lnIndex)   =   lnIpAry(lnIndex)   *   (&H100   ^   (&H03   -   lnIndex))  
  End   if  
  lnResults   =   lnResults   +   lnIpAry(lnIndex)  
  Next  
  CLongIP   =   lnResults  
  End   function  
  '────────────────────────────────  
  '   取Client   IP  
  Public   Function   GetClientIP()  
  dim   uIpAddr  
  '   本函数参考webcn.Net/AspHouse   文献<取真实的客户IP>  
  uIpAddr   =   Request.ServerVariables("HTTP_X_FORWARDED_FOR")  
  If   uIpAddr   =   ""   Then   uIpAddr   =   Request.ServerVariables("REMOTE_ADDR")  
  GetClientIP   =   uIpAddr  
  uIpAddr   =   ""  
  End   function  
  '────────────────────────────────  
  '   读取IP所在地的信息  
  Public   function   GetIpAddrInfo()  
  Dim   tmpIpAddr  
  Dim   IpAddrVal  
  Dim   ic,charSpace  
  Dim   tmpSQL  
  charSpace   =   ""  
  IpAddrVal   =   IpAddress  
  If   Not   Valid_IP(IpAddrVal)   Then  
  GetIpAddrInfo   =NULL  
  Exit   Function  
  End   If  
  '将IP字符串劈开成数组好进行处理  
  tmpIpAddr   =   Split(IpAddrVal,".",-1,1)  
  For   ic   =   &H00   To   Ubound(tmpIpAddr)  
  '补位操作,保证每间隔满足3个字符  
  Select   Case   Len(tmpIpAddr(ic))  
  Case   &H01   :charSpace   =   "00"  
  Case   &H02   :charSpace   =   "0"  
  Case   Else   :charSpace   =   ""  
  End   Select  
  tmpIpAddr(ic)   =   charSpace   &   tmpIpAddr(ic)  
  Next  
  IpAddrVal   =   tmpIpAddr(&H00)   &   "."   &   tmpIpAddr(&H01)   &   "."   &   tmpIpAddr(&H02)   &   "."   &   tmpIpAddr(&H03)  
   
  '以下为查询,IP地址库基于《追捕》的IP数据库,感谢"冯志宏"先生的贡献  
  '库结构如下:  
  'CREATE   TABLE   [dbo].[wry]   (  
  '   [STARTIP]   [nvarchar]   (17)   COLLATE   Chinese_PRC_CI_AS   NULL   ,   --起始IP段  
  '   [ENDIP]   [nvarchar]   (17)   COLLATE   Chinese_PRC_CI_AS   NULL   ,   --终止IP段  
  '   [COUNTRY]   [nvarchar]   (16)   COLLATE   Chinese_PRC_CI_AS   NULL   ,   --国家或者地区  
  '   [LOCAL]   [nvarchar]   (54)   COLLATE   Chinese_PRC_CI_AS   NULL   ,   --本地地址  
  '   [THANK]   [nvarchar]   (23)   COLLATE   Chinese_PRC_CI_AS   NULL   --感谢修正IP地址用户姓名  
  ')   ON   [PRIMARY]  
  '经过分析库的数据存放结构,总结出准确的查询方法,具体看下面的查询过程  
  tmpSQL   =   "select   *   from   wry   where   (startIP<='"   &   IpAddrVal   &   "')   and   (ENDIP>='"   &   IpAddrVal   &   "')   "   &   _  
  "   and   left(startIP,"   &   Len(tmpIpAddr(&H00))   &   ")   =   '"   &   tmpIpAddr(&H00)   &   "'"   &   _  
  "   and   left(endip,"   &   Len(tmpIpAddr(&H00))   &   ")='"   &   tmpIpAddr(&H00)   &   "'"  
  charSpace   =   GetDbIpInfo(tmpSQL)  
  If   Len(charSpace)=&H00   Then  
  GetIpAddrInfo   =   NULL  
  Else  
  GetIpAddrInfo   =   charSpace  
  End   If  
  charSpace   =   Null  
  tmpSQL   =   Null  
  end   function  
  '────────────────────────────────  
  '   返回数据查询的字符串  
  Private   function   GetDbIpInfo(byVal   sql)  
  Dim   OpenIpSearchRs  
  Dim   result  
  Set   OpenIpSearchRs   =   SQLExeCute(sql)  
  If   Not   OpenIpSearchRs.Eof   Then  
  result   =   NullToSpace(OpenIpSearchRs("COUNTRY"))   &   ","   &   NullToSpace(OpenIpSearchRs("LOCAL"))   &   ","   &    
  NullToSpace(OpenIpSearchRs("THANK"))  
  Else  
  result   =   NULL  
  End   If  
  OpenIpSearchRs.Close  
  Set   OpenIpSearchRs=Nothing  
  GetDbIpInfo   =   result  
  End   function  
  '────────────────────────────────  
  '   将数据库空记录转换为空字符  
  Private   function   NullToSpace(byVal   rsStr)  
  If   isNull(rsStr)   Then  
  NullToSpace   =   ""  
  Else  
  NullToSpace   =   Trim(rsStr)  
  End   If  
  End   Function  
  End   Class  
  Top

相关问题

  • 求asp网页代码保护方法.
  • 网页全用ASP代码写,运用后查看源代码乱 乱 乱!
  • js的src=xx.asp时,asp网页代码如何写?
  • 求助ASP的网页的加密代码(高分回报)!
  • 怎么用ASP获取一个网页的HTML代码 (在线=)
  • 多线程与代码复用问题!
  • 有谁知道那里有可以放ASP代码网页的免费空间
  • 网页代码求教
  • 网页转为VB代码
  • 求网页框架代码

关键词

  • .net
  • 代码
  • 数值
  • ip
  • 转换
  • ic
  • 查询
  • ipsearch
  • tmpipaddr
  • lnindex

得分解答快速导航

  • 帖主:hxb74
  • Dick001

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo