基于asp.net+vbscript+wsc编写网站

news2024/12/29 10:39:41

1、前言

        asp大家应该都比较熟悉,就是一个动态服务器页面,有点类似于jsp。只是不同的是asp可以在IIS服务器上创建,并且如果配置了.net环境的话,那么就可以在asp里面<%%>写vbscript。vbscript是一种脚本语言,其实就是把Visual Basic做了一个轻量级化。要注意的是vbscript和Visual Basic之间的关系不等同于javascript和java之间的关系。vbscript是可以操作数据库,写业务层和持久层的,而且许多语法机制和Visual Basic是差不多的。而javascript就是一个纯前端的语言,主要负责一些前端的动态效果以及一些响应事件,和java完全没有关系。只是因为当时javascript的开发者为了推广这门语言,才给它名字中带了“java”,目的就是为了借助java的名气来让更多的人使用javascript。wsc是一种windows脚本文件类型“.wsc”,wsc全称是“Windows Script Component”,是一种在windows下跑的脚本文件,如果你要使用它的话,要先将其注册为windows脚本文件。asp,vbscript,IIS这些是微软开发的一套专门建立网站技术工具。asp和vbscript都是20多年前的语言了,IIS我查了一下貌似在windows98上面就已经有了。反正年纪应该都比我大。我目前所在公司的内网系统就是用了这套微软的技术。所以特地熟悉一下。

vbscript开发手册

链接:https://pan.baidu.com/s/1FPHefYjhQWWMx863p3lGLw 
提取码:yyds 

2、编写网站代码

操作系统windows10

2.1、asp内嵌vbscript编写网页

Step1、搭建IIS服务器

        可参考:使用IIS服务器搭建一个网站_金斗潼关的博客-CSDN博客

Step2、编写一个asp页面

        "<%%>"里的是vbscript脚本语言

<%
Response.write "HelloWorld"
dim sName,sSex
sName="张三"
sSex="男"
iAge=20
%>
<table border="1">
    <tr>
        <td>姓名:</td>
        <td><%=sName%></td>
    </tr>
    <tr>
        <td>性别:</td>
        <td><%=sSex%></td>
    </tr>
    <tr>
        <td>年龄:</td>
        <td><%=iAge%></td>
    </tr>
</table>

2.2、asp内嵌vbscript并调用wsc编写网页

        wsc全称是“Windows Script Component”,“.wsc”是一种在windows下跑的脚本文件。可以在".wsc"文件里面写vbscript,在windows里面注册一下注册成windows组件,这样就可以用面向对象的方式,在asp里面通过CreateObject("XXX.wsc")创建该组件的对象,然后调用里面的那些vbscript函数。

Step1、创建编写一个.wsc

bzExample.wsc

<?xml version="1.0" encoding="gb2312" ?>
<component>
<registration
	description="bzExample"
	progid="bzExample.WSC"
	version="1.00"
>
</registration>
<public>
    <method name="ListPeople">
		<PARAMETER name="idPeople"/>
        <PARAMETER name="sName"/>
        <PARAMETER name="sSex"/>
        <PARAMETER name="iAge"/>
	</method>
</public>

<implements type="ASP" id="ASP"/>

<script language="VBScript">
<![CDATA[

Option Explicit

    Public Function ListPeople(idPeople,sName,sSex,iAge)
        Response.write "PeopleId:"&idPeople&"<br/>"&"姓名:"&sName&"<br/>"&"性别:"&sSex&"<br/>"&"年龄:"&iAge
    End Function

]]>
</script>
</component>

 关于.wsc文件的结构可以看下这篇:◎简单WSC组件的基本结构_jinghaianlange的博客-CSDN博客_wsc是什么结构

.wsc文件差不多是这么的一种结构

Step2、把.wsc文件注册成windows组件

        编写好的.wsc文件要想可以在asp里面使用,可以CreateObject("XXX.wsc")创建该组件的对象就必须先将其注册。

方法一、右键.wsc文件,点击"Register"

        如果注册的时候碰到了这个问题,那就用cmd以管理员的身份打开命令提示符窗口。用代码注册。

 

//cmd注册代码
regsvr32 scrobj.dll /i:D:\MyWsc\bzExample.wsc

 

         当然如果用命令行的方式也不成功的话,有可能就是windows系统中少了一些组件,建议更新一下windows或者把错误代码去网上查一下。

.wsc注册成功后就可以在asp里面调用了。

bzExample.wsc

<%
Response.write "HelloWorld"&"<br/>"
Set bzExample=CreateObject("bzExample.WSC")
Call bzExample.ListPeople("001","张三","男",20)
%>

 当然如果某个.wsc文件不想用的话,可以将其Unregister。

注意直接鼠标右键Unregister可能不生效,所以建议用cmd命令直接移除注册的.wsc组件

scrobj.dll /u /i:D:\MyWsc\bzExample.wsc

 

 这样的话,asp页面就无法调用.wsc了

3、使用vbscript连接mysql数据库

3.1、一个简单的asp内嵌vbscript访问mysql数据库Demo

        首先要确保你电脑上有安装mysql驱动

如果不知道怎么装mysql驱动的话可以参考下这篇:MySQL的ODBC驱动下载、安装以及配置数据源_arlene032的博客-CSDN博客_mysql odbc数据源下载

HelloDB.asp

<%
Response.write "HelloDB"&"<br/>"

Set cn = CreateObject("ADODB.Connection")
cn.CursorLocation = 3 'adUseClient
connStr="driver={MySQL ODBC 8.0 Unicode Driver};server=127.0.0.1;port=3306;uid=root;pwd=123456;database=mydb"
cn.Open connStr
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
Set BuildCommand = cmd

sSQL = "SELECT * from t_student where sno=20160001;"
Set rs=cn.Execute(sSQL)
Response.write rs("sname")
%>

 

 从数据库表中取出了“张三”

这种方式通常是用来做测试的,在实际开发中是不会用这种方式访问数据库的。

3.2、创建一个dbXXX.wsc作为持久层访问数据库

Step1、创建一个.wsc文件dbExample.wsc作为持久层用来访问数据库并将其注册到windows上

Step2、编写增删改查代码

dbExample.wsc

<?xml version="1.0" encoding="gb2312" ?>
<component>
<registration
	description="dbExample"
	progid="dbExample.WSC"
	version="1.00"
>
</registration>
<public>
    <method name="ListStudentByClass">
		<PARAMETER name="sClass"/>
	</method>

    <method name="AddStudent">
        <PARAMETER name="sNo"/>
        <PARAMETER name="sName"/>
        <PARAMETER name="iAge"/>
        <PARAMETER name="sSex"/>
        <PARAMETER name="sClass"/>
    </method>

    <method name="DeleteStudentBySno">
        <PARAMETER name="sNo"/>
    </method>

    <method name="UpdateStudentBySno">
        <PARAMETER name="sNo"/>
        <PARAMETER name="sName"/>
        <PARAMETER name="iAge"/>
        <PARAMETER name="sSex"/>
        <PARAMETER name="sClass"/>
    </method>
    
</public>


<implements type="ASP" id="ASP"/>

<script language="VBScript">
<![CDATA[

Option Explicit

dim CONNSTR
CONNSTR="driver={MySQL ODBC 8.0 Unicode Driver};server=127.0.0.1;port=3306;uid=root;pwd=123456;database=mydb"

    '查找
    Public Function ListStudentByClass(sClass)
        dim cn,cmd,sSQL,BuildCommand
        Set cn = CreateObject("ADODB.Connection")
        cn.CursorLocation = 3 'adUseClient
        cn.Open CONNSTR
        Set cmd = CreateObject("ADODB.Command")
        cmd.ActiveConnection = cn
        Set BuildCommand = cmd
        sSQL = "SELECT * from t_student where sclass="&"'"&sClass&"'"
        'response.write sSQL
        Set ListStudentByClass=cn.Execute(sSQL)
    End Function

    '添加
    Public Function AddStudent(sNo,sName,iAge,sSex,sClass)
        dim cn,cmd,sSQL,BuildCommand
        Set cn = CreateObject("ADODB.Connection")
        cn.CursorLocation = 3 'adUseClient
        cn.Open CONNSTR
        Set cmd = CreateObject("ADODB.Command")
        cmd.ActiveConnection = cn
        Set BuildCommand = cmd
        sSQL = "INSERT INTO t_student(sno, sname, age, sex, sclass) VALUES ("&sNo&","&"'"&sName&"'"&","&iAge&","&"'"&sSex&"'"&","&"'"&sClass&"'"&")"
        'response.write sSQL
        Set AddStudent=cn.Execute(sSQL)
    End Function

    '删除
    Public Function DeleteStudentBySno(sNo)
        dim cn,cmd,sSQL,BuildCommand
        Set cn = CreateObject("ADODB.Connection")
        cn.CursorLocation = 3 'adUseClient
        cn.Open CONNSTR
        Set cmd = CreateObject("ADODB.Command")
        cmd.ActiveConnection = cn
        Set BuildCommand = cmd
        sSQL = "Delete from t_student where sno="&sNo
        'response.write sSQL
        Set DeleteStudentBySno=cn.Execute(sSQL)
    End Function

    '修改
    Public Function UpdateStudentBySno(sNo,sName,iAge,sSex,sClass)
        dim cn,cmd,sSQL,BuildCommand
        Set cn = CreateObject("ADODB.Connection")
        cn.CursorLocation = 3 'adUseClient
        cn.Open CONNSTR
        Set cmd = CreateObject("ADODB.Command")
        cmd.ActiveConnection = cn
        Set BuildCommand = cmd
        sSQL = "Update t_student set sname="&"'"&sName&"'"&","&"age="&iAge&","&"sex="&"'"&sSex&"'"&","&"sclass="&"'"&sClass&"'"&" where sno="&sNo
        'response.write sSQL
        Set UpdateStudentBySno=cn.Execute(sSQL)
    End Function
]]>
</script>
</component>

HelloDBwsc.asp

<%
Set dbExample=CreateObject("dbExample.wsc")
'查询
Set rs=dbExample.ListStudentByClass("2016222")

do while not rs.eof
    Response.write rs("sno")&";"&rs("sname")&"<br/>"
rs.movenext
loop

'添加
'Call dbExample.AddStudent(20180002,"钱七",25,"男","2018223")

'删除
'Call dbExample.DeleteStudentBySno(20180001)

'修改
'Call dbExample.UpdateStudentBySno(20180002,"钱七",24,"男","2018223")
%>

我这里写的不太规范,通常asp是不好直接访问持久层(dbExample.wsc)的,要经过业务层,业务层里调用持久层的方法并做一些处理,然后asp再调用业务层的方法。

4、总结

        因为最近得了新冠,刚刚好,还有些咳嗽,所以周末就待在家里,正好有时间就整理了一下。从我工作中接触下来,vbscript还是蛮方便的一门语言。作为一种轻量级解释型语言,vbscript不需要专门去下载安装特定的运行环境。因为.Net是微软开发的一个平台,我们所使用的windows操作系统里面就有集成.Net环境,比如.Net Framework。因此在windows环境下我们用记事本编写.Net代码然后保存为.vbs的文件,直接鼠标双击就可以运行了。因此早期的一些木马病毒都会用vbscript编写。不过我看网上很多人说微软要淘汰vbscript,据说IE11就要禁用vbscript,不知真假。我们公司因为是2000年才成立,所以公司的信息系统中很多网页业务都是用asp+vbscript写的,服务器就是IIS。在当时算是比较先进的技术了。当然嘛技术栈更新迭代很快的。目前虽然也有用微服务+react去重构一些内网的系统。但也是针对一些不太复杂的,或者一些门面网站。其他像销售、采购、库存、商务、财务等等这些因为代码经过近20年的不断迭代,业务层和持久层太过复杂了。所以还在用vbscript,一时半会儿只能维持现状,哪怕过几年也这样。不过因为是内网系统都是公司内部的人在用,用户数不多,所以其实IIS服务器也够用了。现在的主要重点难点在于数据处理和数仓建设上面。

        vbscript其实还是蛮适合作为一门入门的语言的,我当年读高中的时候有一门信息科技的课,就教了Visual Basic。不过还要特地去下专门的编译软件才行。对于电脑小白来说还是蛮麻烦的,网上捆绑软件各种恶意程序太多了。如果当时教材能选用vbscript作为教学语言,就方便许多。

        总而言之,vbscript+asp+IIS搭建一个小型网站还是蛮方便的,反正仁者见仁智者见智吧。

5、参考资料

◎简单WSC组件的基本结构_jinghaianlange的博客-CSDN博客_wsc是什么结构

C#调用WSC(Windows Script Component)_weixin_30598225的博客-CSDN博客

利用regsvr32注册和卸载wsc格式的com组件文件 - VBS求助&讨论 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powered by Discuz!

利用regsvr32注册和卸载wsc格式的com组件文件(页 1) - VBS求助&讨论 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powered by Discuz! Archiver

C#调用WSC(Windows Script Component)_weixin_30598225的博客-CSDN博客

MySQL的ODBC驱动下载、安装以及配置数据源_arlene032的博客-CSDN博客_mysql odbc数据源下载

VBScript连接各种数据库_脑袋凉凉的博客-CSDN博客

百度百科-验证

<VBScript>VBS(一)VBScript的简介、优缺点介绍、VBS的用法_Dyhamics的博客-CSDN博客_vbscript

VBScript 快速入门_哔哩哔哩_bilibili

VBScript是什么?有什么优缺点? - 走看看 (zoukankan.com)

使用IIS服务器搭建一个网站_金斗潼关的博客-CSDN博客

Regsvr32_百度百科 (baidu.com)

VBScript 用法 | 菜鸟教程 (runoob.com)

使用 VBA 脚本连接到 SQL 数据库 - Dynamics GP | Microsoft Learn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

因果推断5--DML(个人笔记)

目录 1论文介绍 1.1论文 1.2摘要 1.3DML思路 2价格需求曲线 2.1价格需求弹性 2.2价格需求弹性计算DML代码 2.3价格需求弹性例子--数据集 2.4建模过程 2.5回归结果 1论文介绍 1.1论文 V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W.…

(强制)类型转换方法

目录 一、C语言中的类型转换 二、C中的强制类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 2.5 总结 一、C语言中的类型转换 在C语言中&#xff0c;若赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或…

[PyTorch笔记]深度学习计算

[PyTorch笔记]深度学习计算1 层和块1.1自定义神经网络块1.2顺序块1.3在前向传播中执行代码2.参数管理2.1 访问参数、用于调试、诊断和可视化2.2 参数初始化2.2.1内置初始化&#xff1a;2.2.2 自定义初始化2.3 在不同模型组件间共享参数3.延后初始化4.自定义层4.1 不带参数的层4…

深入理解数据结构 —— 跳表

什么是跳表 只要是平衡搜索二叉树能实现的功能&#xff0c;跳表都能实现&#xff0c;且时间复杂度都相同 例如&#xff1a; 哈希表的功能&#xff1a;插入&#xff0c;查找&#xff0c;删除有序表的功能&#xff1a;查找大于某值最小的数&#xff0c;小于某值最大的数&#…

干货 | 数据跨境传输合规体系的构建思路

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;研究背景随着经济活动数字化转型加快&#xff0c;“数据”对生产、流通、分配和消费活动产生重要影响&#xff0c;成为新的生产要素。地区之间数据流通愈发频繁&#xff0c;…

图像频域滤波(理想低通滤波)

图像变换是对图像信息进行变换&#xff0c;是能量保持但重新分配&#xff0c;利于加工处理。这里主要介绍傅里叶变换的图像频域滤波。 图像从空间域变换到频域后&#xff0c;其低频分量对应图像中灰度值变化较为缓慢的区域&#xff0c;高频分量表征图像中物体的边缘和随机噪声等…

基于yolov5的钢材表面缺陷识别(pycharm连接远程服务器,老版本yolov5运行遇到的问题)

时间&#xff1a;2023年1月 1 pycharm远程连接服务器 提示&#xff1a;需要下载pycharm专业版。 参考文献&#xff1a; [1] [2] [3] [4] 设置解释器的界面有一些不同&#xff0c;在此截图记录一下。 &#xff08;这是已经弄好了之后回头截图的&#xff0c;假设它不存在哈) …

【寒假每日一题】洛谷 P6206 [USACO06OCT] Another Cow Number Game G

题目链接&#xff1a;P6206 [USACO06OCT] Another Cow Number Game G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 奶牛们在玩一种数字游戏&#xff0c;Bessie 想让你帮她预测一下结果。游戏开始时&#xff0c;Bessie 将得到一个正整数 N。此时她的分数为 0。 奶…

C 程序设计教程(07)—— 数据类型转换

C 程序设计教程&#xff08;07&#xff09;—— 数据类型转换 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;07&#xff…

mysql学习总结(一)

总结一下近期学习的mysql内容&#xff1a;这里主要总结一下mysql的底层数据结构索引的本质是什么&#xff1f;索引的本质就是排好序的一种数据结构&#xff0c;通过索引我们能干什么呢&#xff1f;&#xff0c;快速的去定位到我们想要查找的数据&#xff0c;就像是你看书&#…

Ansible 介绍与实战操作演示

文章目录一、概述二、Ansible 架构三、Ansible 工作原理四、Ansible 安装与基础配置1&#xff09;开启记录日志2&#xff09;去掉第一次连接ssh ask确认五、Ansible 的七个命令1&#xff09;ansible2&#xff09;ansible-doc3&#xff09;ansible-playbook4&#xff09;ansible…

非线性系统辨识:非线性 ARX 和 Hammerstein-Wiener

1. 系统辨识 系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。现代控制理论中的一个分支。通过辨识建立数学模型的目的是估计表征系统行为的重要参数&#xff0c;建立一个能模仿真实系统行为的模型&#xff0c;用当前可测量的系统的输入和输出预测系统输出…

Js逆向教程25-BOM DOM过检测

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程25-BOM DOM过检测 一、JS BOM 检测 它是一种浏览器环境&#xff0c;脱离了浏览器在外部不能直接调用的就是BOM 在浏览器中…

SAP工作流对象类

目录 1. 实现IF_WORKFLOW接口 2. 创建流程属性 3. 接口方法参考 4. 定义事件 5. 工作流触发&#xff08;事件抛出&#xff09; 业务对象作为工作流的数据内核&#xff0c;也是联系业务流程和工作流的重要核心&#xff0c;体现形式一般为BOR或者业务对象类&#xff0c;用来标识不…

SpringCloud从入门到精通(六)

Hystrix-熔断器 Hystrix-概述 • Hystix 是Netflix 开源的一个延迟和容错库&#xff0c;用于隔离访问远程服务、第三方库&#xff0c;防止出现级联失败&#xff08;雪崩&#xff09;。• 雪崩&#xff1a;一个服务失败&#xff0c;导致整条链路的服务都失败的情形 Hystix 主要功…

【Neo4j构建知识图谱】:cypher操作语言加载 CSV电影人数据集链接文件

这目录 数据链接来源1、创建约束2、从 CSV 文件添加节点3、从 CSV 文件添加关系4、运行cypher查询5、清理数据库参考CSV 文件可以使用LOAD CSV密码条款。出于安全原因,无法加载本地CSV文件,这些文件必须在HTTP或HTTPS服务器(如GitHub,Google Drive和Dropbox)上公开访问。使…

Python 中将列表中的每个元素除以一个数字

Python 中将列表中的每个元素除以一个数字&#xff1a; 使用列表理解来遍历列表。在每次迭代中&#xff0c;将当前列表元素除以数字。新列表将包含除法结果。 my_list [8, 12, 20]# ✅ divide each element in list by number new_list [item / 2 for item in my_list] pri…

雪花算法笔记

SnowFlake 雪花算法 SnowFlake 中文意思为雪花&#xff0c;故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。 实现原理 雪花算法原理就是生成一个的64位比特位的 long 类型的唯一 id。 最高1位固定值0&#xff0c;因…

React Context 完美替代品 Jotai

1. 前言 React 的属性透传场景 虽然有很多方式可以实现&#xff0c;但能做到代码写的少、re-render 轻松处理的方式并不多。 而状态管理工具 Jotai 却可以很好的解决这些问题。 最近的业务和组件场景里 也在用此方式实现。 2. React Context 的不足 常规解决数据透传通常使…

BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)

BUUCTF 之 [ACTF2020 新生赛]Exec&#xff08;命令执行漏洞&#xff09;相关观察进攻相关 项目内容难度简单类型WEB靶场BUUCTF坐标Exec观察 这界面和这网页标题结合起来&#xff0c;相信给位都能猜到这个靶场中很有可能存在命令执行漏洞。 进攻 构造如下语句显示当前路径中的…