欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用JScript.NET创建asp.net页面】,下面是详细的分享!
使用JScript.NET创建asp.net页面
大家一定习惯于使用vb.net和C#来创建asp.net页面,但是不知大家知不知道我们还可以使用Jscript.net编写asp.net.
这可能是自微软1996年推出基于IE3.0的Jscript1.0以来在功能上最大的飞跃。JScript传统上被用作开发客户端脚本。在internet上它普遍存在,特别是在Activeseverpage(ASP)中。
当脚本变得很大的时候,程序员需要编写更有效的代码;并且程序变得越来越复杂,程序员往往受到Jscript的局限性。
如果你对Jscript很熟悉的话,你将很快的在.net平台上使用Jscript.net,应为Jscript.net就像是Jscript的升级版,而不是一门新的语言。
Jscript.net最新的特性是Jscript.net是真正的编译语言。这使它完全可以与vb.net和C#相媲美。从语法方面,Jscript.net改善了变量类型的定义,不但支持明确的变量类型定义,还支持模糊的变量类型定义。模糊定义是一项激动人心的技术,它可以分析你脚本中使用的变量,并且推断出变量的类型。这就意味着你可以使用未定义的变量并以更快的速度执行。
请参照下面的例子:
functiontest()
{
for(varx=0;x<100;x++)
{
print(x);
}
}
当Jscript.net编译这个程序的时候,它分析变量X的用途并确定变量X只用做数值型,结果变量被安全的定义为数值型。技术进步在于把变量定义为数值型要明显优于把变量定义为genericObject或variant。
为了实现Jscript.net的推断变量类型的功能,你需要遵守以下几条规则!
一.永远声明你的局部变量。这看起来像是显而易见的,但是这是非常重要的,Jscript.net只能推断你的局部变量,而不是全局变量。如果你没有声明它,直接使用,它就将成为全局变量,将不能被优化。
二.仅使用一种数据类型,如果你声明一个数值型变量,却用来储存字符型的数据,Jscript将把该变量定义为genericObject或variant。
//无法推断类型--glob是一个全局变量
varglob=42;
functionmyfunc()
{
//无法推断类型--s没有定义因此它被当作全局变量
s="hello";
//可以推断类型
vari=0;
//无法推断类型—q被指派成其他的类型
varq=newDate();
q=3.14159;
}
尽管类型推断是非常好的功能,但是它还是有一定的缺点的。它无法帮助我们捕获类型不匹配或其他的错误。为了解决这个问题,Jscript.net提供一种方法明确定义变量的类型。通过例子,你将很容易的了解它的使用方法。
//定义数值类型
varmyInt:int=42;
//定义一个函数,返回一个字符串
functionGetName():String
{
//程序行
}
//定义一个带两个参数的函数返回一个逻辑类型
functionCheckNumber(dVal:double):Boolean
{
//functioncode
}
下面给出一个完成的函数,仔细的体会一下。
functiongetConditions(strCity:String):String
{
varnow:Date=newDate();
switch(strCity.toUpperCase())
{
case"LONDON":
if(now.getMonth()<=7||now.getMonth()>=9)
{
return"overcast";
}
else
{
return"partlyovercastandhumid";
}
break;
case"SEATTLE":
if(now.getMonth()==7&&now.getDay()==4)
{
return"torrentialrain";
}
else
{
return"rain";
}
break;
case"LA":
return"smoggy";
break;
case"PHOENIX":
return"damnhot";
break;
default:
return"partlycloudywithachanceofshowers";
}
}
使用Jscript.net,你也可以定义其他.net架构的类型,通过引用命名空间和派生类可以向Jscript.net引入新的数据类型。这样在两者的数据类型中就有可能产生重叠。参见下表:
Boolean.NETFrameworkBoolean/JScriptboolean
Number.NETFrameworkDouble/JScriptnumber
String.NETFrameworkString/JScriptstring
Int.NETFrameworkInt32
Long.NETFrameworkInt64
Float.NETFrameworkSingle
Double.NETFrameworkDouble
Object.NETFrameworkObject/JScriptObject
DateJScriptDateobject
ArrayJScriptArray
FunctionJScriptFunctionobject
在Jscript中定义类通过类声明,包含方法和对象和var声明。对于类的派生通过下面两个程序的对比,你讲清楚地明白。
JScript5.5Code
//Simpleobjectwithnomethods
functionCar(make,color,year)
{
this.make=make;
this.color=color;
this.year=year;
}
functionCar.prototype.GetDescription()
{
returnthis.year+""+this.color+""+this.make;
}
//CreateanduseanewCarobject
varmyCar=newCar("Accord","Maroon",1984);
print(myCar.GetDescription());
JScript.NETCode
//Wrapthefunctioninsideaclassstatement.
classCar
{
varmake:String;
varcolor:String;
varyear:int;
functionCar(make,color,year)
{
this.make=make;
this.color=color;
this.year=year;
}
functionGetDescription()
{
returnthis.year+""+this.color+""+this.make;
}
}
varmyCar=newCar("Accord","Maroon",1984);
print(myCar.GetDescription());
Jscript.net还支持定义private和protectedproperty通过GET和SET进行读写。
如下例:
classPerson
{
privatevarm_sName:String;
privatevarm_iAge:int;
functionPerson(name:String,age:int)
{
this.m_sName=name;
this.m_iAge=age;
}
//Name只读
functiongetName():String
{
returnthis.m_sName;
}
//Age读写但是只能用SET
functiongetAge():int
{
returnthis.m_sAge;
}
functionsetAge(newAge:int)
{
if((newAge>=0)&&(newAge<=110))
this.m_iAge=newAge;
else
thrownewAge+"isnotarealisticage!";
}
}
varfred:Person=newPerson("Fred",25);
print(fred.Name);
print(fred.Age);
//这将产生一个编译错误,name是只读的。
fred.Name="Paul";
//这个将正常执行
fred.Age=26;
//这将得到一个run-time错误,值太大了
fred.Age=200;
Jscript.net可以用JScript或任意NET框架语言(如C#,VB7.0)通过增加extends主题词在类声明以后来继承和扩展现有类。这能力允许Jscript.net非常容易地利用NET平台的丰厚资源。为了说明这些,给出一个程序。这个程序扩展了NET框架的ServiceBase类。
//导入需要的.net命名空间
importSystem;
importSystem.ServiceProcess;
importSystem.Diagnostics;
importSystem.Timers;
classSimpleServiceextendsServiceBase
{
privatevartimer:Timer;
functionSimpleService()
{
CanPauseAndContinue=true;
ServiceName="JScriptService";
timer=newTimer();
timer.Interval=1000;
timer.AddOnTimer(OnTimer);
}
protectedoverridefunctionOnStart(args:String[])
{
EventLog.WriteEntry("JScriptServicestarted");
timer.Enabled=true;
}
protectedoverridefunctionOnStop()
{
EventLog.WriteEntry("JScriptServicestopped");
timer.Enabled=false;
}
protectedoverridefunctionOnPause()
{
EventLog.WriteEntry("JScriptServicepaused");
timer.Enabled=false;
}
protectedoverridefunctionOnContinue()
{
EventLog.WriteEntry("JScriptServicecontinued");
timer.Enabled=true;
}
functionOnTimer(source:Object,e:EventArgs)
{
EventLog.WriteEntry("HelloWorldfromJScript!");
}
}
ServiceBase.Run(newSimpleService());
如何在asp+中使用Jscript.net这才是我们关键的问题。我们将通过一个例子来说明这个问题。
访问sqlserver数据库
第一个aps+例子是使用Jscript.net和.net的数据访问类来访问sqlserver数据库,
这里我还将使用大家熟悉的<%%>格式来编写,访问pubs中的authors表,我知道这很简单但是它可以体现一些新的特性。
<%@ImportNamespace="System.Data"%>
<%@ImportNamespace="System.Data.SQL"%>
<%@language="JScript"%>
<linkrel="STYLESHEET"type="text/css"href="http://www.chinaz.com/program/2008/0910/style.css">
<%
//设置数据库连接
varmyConnection:SQLConnection=newSQLConnection("server=scripting;uid=sa;pwd=;database=pubs");
//执行查询
varmyCommand:SQLDataSetCommand=newSQLDataSetCommand("select*fromAuthors",myConnection);
//声明变量
vards:DataSet=newDataSet();
varmyTable:DataTable
varmyColumns:ColumnsCollection
varmyCol:DataColumn
varmyRows:RowsCollection
varmyRow:DataRow
//通过FillDataSet方法获取数据
myCommand.FillDataSet(ds,"Authors");
myTable=ds.Tables[0]
%>
<h1>
<%=ds.Tables[0].TableName%>
</h1>
<br>
<TABLE>
<THEAD>
<TR>
<%
//在表格的最上面输出字段名
myColumns=myTable.Columns
for(myColinmyColumns)
{
%>
<THclass="spec">
<%=myCol.ColumnName%>
</TH>
<%
}
%>
</TR>
</THEAD>
<%
//输出所有的纪录
myRows=myTable.Rows
for(myRowinmyRows)
{
%>
<TR>
<%
for(vari:int=0;i<myColumns.Count;i++)
{
%>
<TDclass="spec">
<%=myRow[i]%>
</TD>
<%
}
%>
</TR>
<%
}
%>
</TABLE>
例子2
<%@WebServiceLanguage="JScript"class="Weather"%>
importSystem
importSystem.Web.Services
classWeather{
WebMethodAttributefunctiongetConditions(strCity:String):String
{
varnow=newDate();
switch(strCity.toUpperCase())
{
case"LONDON":
if(now.getMonth()<=7||now.getMonth()>=9)
{
return"overcast"
}
if
{
return"partlyovercast"
}
break;
case"SEATTLE":
if(now.getMonth()==7&&now.getDay()==4)
{
return"torrentialrain"
}
else
{
return"rain"
}
break;
case"LA":
return"smoggy"
break;
case"PHOENIX":
return"damnhot"
break;
default:
return"partlycloudywithachanceofshowers"
}
}
}
以上所分享的是关于使用JScript.NET创建asp.net页面,下面是编辑为你推荐的有价值的用户互动:
相关问题:怎样在vs2008中新建的asp.net项目中新建一个web页面
答:在解决方案资源管理器中,右击网站或者里面的某个自定义的文件夹(不要是appcode或者appdata等就行),选择添加新项,在对话框中选择web form(一般是第一个),确定。就可以了。 >>详细
相关问题:ASP.NET登录后可以编辑自己的页面是什么原理
答:呵呵,楼上的说得那么玄殊干嘛,楼主好像不懂这些, 要做这种效果只要很简单, 1. 首先在页面判断用户有没有登录 像3楼说的,在登录成功的时候用SESSION来保存用户名.session["loginname"]=this.textbox.tex; 2.在你要限制的面做个判断 if(session[lo... >>详细
相关问题:如何构建ASP.NET 的运行环境
答:安装IIS6.0,在IIS6.0的配合下我们如何来安装和部署ASP.net环境,以及它们之间关系。 1、使用"配置您的服务器向导"安装 IIS6.0 1)从"开始"菜单,单击"管理您的服务器"。 2)在"管理您的服务器角色"下,单击"添加或删除角色"。 3)阅读"配置您的服... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
