JavaScript、ASP、ASP.Net、JSP笔记

   JavaScript、ASP、ASP.Net、JSP笔记    2005-3 v1.7
JavaScript  

ASP.net

  ASP
    1.基本控件的使用
6.客户端脚本的基本对象    ***
41.常用的Javascript内建类的方法  ***
2.让TextArea自动换行
3.让TextArea支持Table键
4.复制数据到剪贴板
5.得到当前选中的文本
7.保护自己编写的HTML和脚本的方法
8.IE地址栏前换成自己的图标
9.可以在收藏夹中显示出你的图标
10.关闭输入法
11.直接查看源代码
12.在Javascript中自定义一个对象(属性,方法) ***
13.取得控件的绝对位置
14.光标是停在文本框文字的最后
15.判断上一页的来源
16.最小化、最大化、关闭窗口
17.检查一段字符串是否全由数字组成
18.获得一个窗口的大小
19.怎么判断是否是字符
20.检测某个网站的链接速度
21.各种样式的光标
22.让TEXTAREA自适应文字的行数
23.日期减去天数等于第二个日期
24.选择了哪一个Radio
25.获得本页url的request.servervariables("")集合
26.ENTER键可以让光标移到下一个输入框
27.多用途的RichEdit控件
28.引用其他网页
29.常用的正则表达式
31.取得查询字符串,然后就生成成对的数组
32.另类的onload函数
33.取得IE的版本
34.提交表单到不同地方
35.判断是否是整数
36.链接css文件和js文件
37.引用框架的内容
38.打开没有最大化按钮的窗口
39.在页面上显示一个有边框的Frame
40.判断日期1是不是大于日期2
30.弹出来必须关闭才能继续运行的提示对话框
42.如何在另一个窗体对原来窗体进行操作 ***
43.层的隐藏与显示
44.禁止右键
45.屏蔽页面中程序运行出错信息 **
46.得到当前显示器的分辨率
47.定时运行特定代码(Timer)
48.得到本页网址
49.保存当前页面的内容
50.刷新当前页面
51.获得当前日期
      1.ASP.net中如何在二个页面传递数
2.如何添加用户自定义标签、自定义控件、定制控件
3.添加客户端验证脚本
4.如何使得DataGrid有分页输出数据功能
5.如何写广告控件的XML
6.如何利用SessionApplication
7.如何利用Cookie
8.利用ASP.net上传文件
9.Asp.net中自定义异常页

10.Asp.net的安全认证及Web.config的配置
11.Asp网页的EnableViewState属性对网页性能的影响
12.Web打印文档
13.Web表格输出为word或者Excel格式的文件保存在客户端
    1.连接SQL Server数据库
2.连接Access数据库
3.使用系统DSN连接数据库
4.使用数据库操作 ***
5.使用数据库带返回值的存储过程
6.使用数据库带返回记录集的存储过程

7.VB中使用split对字符串进行切割
8.VB和数据库中使用转义字符
9.如何强制要求VB声明变量
10.如何处理不用的对象
11.如何设定缓冲
12.设定Session超时时间
13.获得访问者IP和浏览器类型等信息
14.将query string从一个asp文件传送到另一个
15.加密脚本
16.获得CPU信息
17.在ASP中读取注册表的信息 
18.取得所有的Session变量
19.定义数据库连接的一些常量
20.定义数据库的字段的初始值
21.修改contentType并下载gif等格式
22.RecordSet的基本属性和方法
23.获得查询获得的表的各个字段的名字
     

JSP

用VB编写ASP组件

  1.引入其他包和设置Html参数
2.包含文件,同时带设置参数
3.使用页面跳转并带参数
4.使用Applet
5.转为为数字
6.读取中文
7.Request对象(读取页面或者Form参数)
8.Response对象和out对象(输出值)
9.Session 和Application
10.JSP连接数据库
11.使用同步连接
12.使用beans  
  1.用VB编写一般组件
2.用VB编写ASP组件(包含request,response,Session等)
3.在VB组件里面添加对数据库的访问
4.函数返回多个值和数组型属性
5.在VB控件中编写对文件的读写


JavaScript

 1.基本控件的使用

 

控件名.value

控件名.value

控件名[i].checked    .value 

for each ob in控件名
   if ob.checked then
      window.alert ob.value
next

控件名.checked    .value


 
  
单行         多行         多选

添加选项

ExpList.add(new Option("New Option","3"));

删除选项

ExpList.remove(ExpList.selectedIndex);

设置当前选项位置

ExpList.selectedIndex=ExpList.length-1;

循环整个选项
并判断是否被选择

for(i=0;i<ExpList.options.length;i++) {
  if(ExpList.options[i].selected){
     //ExpList.options[i].text;
     //ExpList.options[i].value;
  }
}

单个选项的值

ExpList.options[i].text;
ExpList.options[i].value;
<span id="SomePlace1"></span>
<div id="SomePlace1"></div>

重新设计包含的html

SomePlace1.innerHTML="任意html字符串"

让该空间的内容消失

SomePlace1.style.display="none";

让该空间的内容显示

SomePlace1.style.display="block";

鼠标滑过出现提示 title="Help"

<input type="hidden" name="MyValueName" value="123">

控件名.value
跟随事件Event(声明方式特殊) <div id=hello1 style=position:absolute>太过分了!吃饭不叫我</div>
<SCRIPT for=document EVENT=onmousemove>
document_onmousemove();
function document_onmousemove() {
  hello1.style.left=event.x+10;
  hello1.style.top=event.y+10;
}
</SCRIPT>


<返回>

2.让TextArea自动换行

  使用TextArea的Wrap属性

  • Wrap may be set to one of the following values:

    • OFF - Default, lines are not wrapped.

    • PHYSICAL - Wrap lines and place new line characters where the line wraps.

    • VIRTUAL - Wrap lines on the screen, but receive them as one line.

ASP中手动换行用: replace(rs("A"),"</br>", VBCRLF)
str=request.querystring("text1")
str=Replace(str, Chr(32), " ")
'把空格换成 标志
str=Replace(str, vbCrLf, "<br>")
'把回车换行符换成<br>标志
调出时再转过来就好了

<返回>

3.让TextArea支持Table键
<SCRIPT LANGUAGE="JavaScript">
<!--
function testTab()
{
   var sel = document.selection.createRange();
   var mytext= sel.text;
   var i,j,k;
   if (event.shiftKey && event.keyCode == 9)
   {
      arr=mytext.split(String.fromCharCode(13,10))
      mytext=""

      for(k=0;k<arr.length;k++)
      {
         for (j=1; j<=4;j++)
         {
            if(arr[k].substr(0,1)=="\u0020")
            {
               arr[k]=arr[k].slice(1)
            }
         }
         mytext += arr[k] + ((k==(arr.length-1))? "" : String.fromCharCode(13,10));
      }
      with(sel){
         sel.text = mytext;
         collapse(true)
         moveEnd("character",0)
         moveStart("character",(mytext.length ) * -1)
         select()
      }

      window.event.cancelBubble = true;
      event.returnValue = false;
      return;
   }
   if (event.keyCode == 9)
   {
      arr=mytext.split(String.fromCharCode(13,10))
      mytext=""
      for(j=0;j<arr.length;j++)
      {
         mytext += "\u0020\u0020\u0020\u0020" + arr[j] + ((j==(arr.length-1))? "" : String.fromCharCode(13,10));
      }
      with(sel){
         sel.text = mytext;
         collapse(true)
         moveEnd("character",0)
         moveStart("character",(mytext.length -4) * -1)
         select()
      }

      window.event.cancelBubble = true;
      event.returnValue = false;
      return;
   }
}
//-->
</SCRIPT>

<返回>

4.复制数据到剪贴板

 JM_cc(txt)

 window.clipboardData.setData("Text", txt);
 global.focus();
 document.execCommand('Paste');
 window.clipboardData.setData("Text", old);

<返回>

5.得到当前选中的文本


var sel = document.selection.createRange();
var mytext= sel.text;  //当前选中的文本


var e = event.srcElement;  //设置文本为选中
var r =e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();

<返回>

6.客户端脚本的基本对象
 


<返回>

7.保护自己编写的HTML和脚本的方法
  (1). oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
    <table border oncontextmenu=return(false)><td>no</table> 可用于Table
  (2). <body onselectstart="return false"> 取消选取、防止复制
  (3). onpaste="return false" 不准粘贴
  (4). oncopy="return false;" oncut="return false;" 防止复制
  (5). 防止被人frame
      <SCRIPT LANGUAGE=JAVASCRIPT><!--
         if (top.location != self.location)top.location=self.location;
       // -->
      </SCRIPT>
  (6). 永远都会带着框架
     <script language="JavaScript"><!--
        if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
     // --></script>
  (7).网页将不能被另存为
     <noscript><iframe src=*.html></iframe></noscript>

<返回>

8.IE地址栏前换成自己的图标
 <link rel="Shortcut Icon" href="favicon.ico">

<返回>

9.可以在收藏夹中显示出你的图标

 <link rel="Bookmark" href="favicon.ico">

<返回>

10.关闭输入法

 <input style="ime-mode:disabled">

<返回>

11.直接查看源代码
 
 <input type=button value=查看网页源代码 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'">

<返回>

12.在Javascript中定义一个对象(属性,方法)

function pasta(grain, width, hasEgg) {
    this.grain = grain;
    this.width = width;
    this.hasEgg = hasEgg;
    this.toString = pastaToString;
}

function pastaToString() {
    return "Grain: " + this.grain + "\n" + "Width: " + this.width + "\n" + "Egg?: " + Boolean(this.hasEgg);
}

var P1=new pasta(3,3,false);

<返回>

13. 取得控件的绝对位置

//Javascript
<script language="Javascript">
function getIE(e){
   var t=e.offsetTop;
   var l=e.offsetLeft;
   while(e=e.offsetParent){
      t+=e.offsetTop;
      l+=e.offsetLeft;
   }
   alert("top="+t+"\nleft="+l);
}
</script>

<返回>

14. 光标是停在文本框文字的最后

<script language="javascript">
function cc()
{
   var e = event.srcElement;
   var r =e.createTextRange();
   r.moveStart('character',e.value.length);
   r.collapse(true);
   r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

<返回>

15. 判断上一页的来源

asp:
  request.servervariables("HTTP_REFERER")

javascript:
  document.referrer

<返回>

16. 最小化、最大化、关闭窗口

<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

<返回>

17. 检查一段字符串是否全由数字组成

<script language="Javascript"><!--
function checkNum(str){return str.match(/\D/)==null}
// --></script>

<返回>

18. 获得一个窗口的大小

document.body.clientWidth,document.body.clientHeight

<返回>

19. 怎么判断是否是字符

if (/[^\x00-\xff]/g.test(s))
  alert("含有汉字");
else
  alert("全是字符");

<返回>

20. 检测某个网站的链接速度

把如下代码加入<body>区域中:
<script language=Javascript>
tim=1
setInterval("tim++",100)
b=1

var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"

function butt(){
   document.write("<form name=autof>")
   for(var i=1;i<autourl.length;i++)
      document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br/>")
   document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url){
   document.forms[0]["url"+b].value=url
   if(tim>200)
   {
      document.forms[0]["txt"+b].value="链接超时"
   }
   else
   {
      document.forms[0]["txt"+b].value="时间"+tim/10+"秒"
   }
   b++
}
function run()
{
   for(var i=1;i<autourl.length;i++)
      document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto('http://"+autourl[i]+"')>")
}
run()</script>

<返回>

21. 各种样式的光标

auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize

<返回>

22.让TEXTAREA自适应文字的行数

<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight"></textarea>

<返回>

23. 日期减去天数等于第二个日期
<script language=Javascript>
function cc(dd,dadd)
{
//可以加上错误处理
   var a = new Date(dd)
   a = a.valueOf()
   a = a - dadd * 24 * 60 * 60 * 1000
   a = new Date(a)
   alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</script>

<返回>

24. 选择了哪一个Radio

<HTML>
<script language="vbscript">
function checkme()
   for each ob in radio1
   if ob.checked then
      window.alert ob.value
   next
end function
</script>
<BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>

<返回>

25.获得本页url的request.servervariables("")集合

Response.Write "<TABLE border=1><!-- Table Header --><TR><TD><B>Variables</B></TD><TD><B>Value</B></TD></TR>"
for each ob in Request.ServerVariables
   Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write "</TABLE>"

<返回>

26.ENTER键可以让光标移到下一个输入框

<input onkeydown="if(event.keyCode==13)event.keyCode=9">

<返回>

28.引用其他网页

<table width=100% border="0"><tr><td><script language="JavaScript" location="http://91down.7161.net" id="nd91down" src="http://91down.7161.net/js/new1-1.htm"></script></td><td><script language="JavaScript" location="http://91down.7161.net" id="nd91down" src="http://91down.7161.net/js/new1-2.htm"></script></td></tr></table>

<返回>

29.常用的正则表达式

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
        
    String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
   String.prototype.trim = function()
   {
      return this.replace(/(^\s*)|(\s*$)/g, "");
   }
(3)应用:利用正则表达式分解和转换IP地址
   function IP2V(ip) //IP地址转换成对应数值
   {
      re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
      if(re.test(ip))
      {
         return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
      }
      else
      {
         throw new Error("Not a valid IP address!")
      }
   }
(4)应用:从URL地址中提取文件名的javascript程序
   s="http://www.9499.net/page1.htm";
   s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") ; //Page1.htm
(5)应用:利用正则表达式限制网页表单里的文本框输入内容
   用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
   用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
   用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
   用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

<返回>

30.弹出来提示对话框
window.showModalDialog(url);

<返回>

31.取得查询字符串,然后就生成成对的数组
var argstr = window.top.location.search.substring(1,window.top.location.search.length);
var args = argstr.split('&');

<返回>

32.另类的onload函数
<SCRIPT FOR=window event=onload>
try
{
  Start();
}
catch (exception)
{
}
</script>

<返回>

33.取得IE的版本
var ieVer = parseFloat(navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE ")+5, navigator.appVersion.length))
var isIE6 = ieVer >= 6.0

<返回>

34.提交表单
// aimForm 为表单名    aimPage为提交到的页

//提交表单到新建的网页
function SubmitFormToNewPage(aimForm,aimPage){
   aimForm.method="POST";
   aimForm.target="_blank";
   aimForm.action=aimPage;
   aimForm.submit();
}

//在本地提交表单
function SubmitFormToLocalPage(aimForm,aimPage){
   aimForm.method="POST";
   aimForm.target="_self";
   aimForm.action=aimPage;
   aimForm.submit();
}


<返回>

35.判断是否是整数
function IsNum(s)  //整数
{
   if(s=="null"||s=="undefined"||s.length<1)
      return false;
   if(isNaN(parseInt(s)))
      return false;
   else
   if((parseInt(s)+"").length!=s.length)
      return false;
   else
      return true;
}

function IsNumber(JudgeNum){  //判断大于0的数
   var JudgeStr=JudgeNum.toString();
   for (var i=0;i<JudgeStr.length;i++) {
      var oneChar=JudgeStr.charAt(i);

      if (oneChar<"0" || oneChar >"9"){
         return false;
      }
   }
   return true;
}

<返回>

36.链接css文件和js文件
<link rel="stylesheet" href="../css/style.css" type="text/css">
<script language="javascript" src="../includes/jslib.js" ></script>

<返回>

37.引用框架的内容
window.top.frames["mainFrame"].location.href=s;
在IFRAME标签中引用框架的内容
parent.frames["mainFrame"].location.href
在窗口中引用IFrame中的内容
window.top.frames["mainFrame"].confFrame.location.href

<返回>

38.打开没有最大化按钮的窗口
window.open("http://www.google.com","","width=250,height=220,scrollbars=no,resizable=no,center=yes");


<返回>

39.在页面上显示一个有边框的Frame
<fieldset style="width:500;height:100">
<legend>标题</legend>
具体内容
</fieldset>

<返回>

40.判断日期1是不是大于日期2

function IsDate1AfterThanDate2(year1,month1,day1,year2,month2,day2){
   var iFrom=Date.parse(month1+"-"+day1+"-"+year1);
   var iTo=Date.parse(month2+"-"+day2+"-"+year2);
   if(iFrom>iTo)
      return true;
   else
      return false;
}

function IsDate(year,month,day){
   if( (!IsNumber(year))||(year.length!=4))
      return false;
   if( (!IsNumber(month))||(month>12)||(month<1) )
      return false;
   if( (!IsNumber(day))||(day>31)||(day<1) )
      return false;

   var myDate=new Date();
      myDate.setFullYear(year,month-1,day);
   if (isNaN(myDate.getFullYear())){
      return false;
   }
   else{
      if( (myDate.getFullYear()!=year)||(myDate.getDate()!=day)||(myDate.getMonth()!=(month-1).toString()) )
         return false;
   }
      return true;
}

function IsNumber(JudgeNum){
   var JudgeStr=JudgeNum.toString();
   for (var i=0;i<JudgeStr.length;i++) {
      var oneChar=JudgeStr.charAt(i);

      if (oneChar<"0" || oneChar >"9"){
         return false;
      }
   }
   return true;
}

<返回>

41.常用的Javascript内建类的方法
 

对象

方法或属性

意义

例子

Array

length

表示数组大小,也可以通过该属性动态调整数组大小。设置可以不调整它直接扩大数组。

var theMonths = new Array(12);

theMonths[0] = "Jan";

theMonths[1] = "Feb";
theMonths[2] = "Mar";

theMonths[20] = "12";

concat

把两个数组合并

a = new Array(1,2,3);

b = new Array(4,5,6);

a = a. concat(b)

join

把数组变为字符串

   a = new Array(0,1,2,3,4);

   b = a.join("-");

Date

Date.parse(dateVal)

将日期转为数字,用于比较两个日期的大小。dateVal格式为month+day+year

iFrom=Date.parse(“10-1-2004”);

setFullYear (year,month-1,day)

用于判断3个字符串合起来是不是日期或者判断该天是不是存在。这里month0开始,故和实际值差1

myDate.setFullYear(year,month-1,day);

if (isNaN(myDate.getFullYear())){

      return false;

}

else{

  if( (myDate.getFullYear()!=year)||

(myDate.getDate()!=day)||

(myDate.getMonth()!=(month-1) )

      return false; 

}

Date()

获得当前时间

d = new Date();                          

Global (全局类,引用方法可以不要带Global.

isNaN

当从字符到日期转换失败,或者从字符到数字转换失败,都返回NaN。用isNaN可以判断返回值是不是NaN

 

parseInt

将字符串转换为整数,转换失败返回NaN或者尽量转换。所以用它来判断是不是数字,还要加上判断转化后长度是不是一样

parseInt("abc")     // 返回 NaN

parseInt("12abc")   // 返回 12
parseInt("12")   //
返回 12

parseFloat

转为实数

 

String

主要函数和Java或者C#一样

replace

替代某个字符。如果仅替代一个和C#一样,如果要替代全部某字符,就得用到了匹配串

  re=/#/g;

  str=str.replace(re,"<br>");

 

把#用<br>代替

split

将某个字符串按指定间隔符分割

var s = "The rain in Spain";

ss = s.split(" ");  //ss是一个数组


<返回>

42.如何在另一个窗体对原来窗体进行操作

  (1)对用window.open打开的新窗体,用window.opener来访问原来窗体的对象。例如重新加载页面 window.opener.location.reload();  可以通过window.opener.varName 来访问原变量。
  (2)对用showModalDialog打开的新窗体
     (主页面)   var returnvalue=window.showModalDialog('2.htm',this,"status=no; help=no; dialogWidth=330px; dialogHeight=305px;");  //第二个参数传入本窗体
     (子页面)   window.dialogArguments.varName 来访问原变量
                window.returnValue=***         来设定returnvalue的值
<返回>

43.层的隐藏与显示

只要设置style的display属性即可。比如<div style="display:none" id="MyDiv">隐藏的层</div>
(1)如果要显示它可以通过脚本来控制    window.document.getElementById("MyDiv").style.display = "";
(2)如果要隐藏它可以通过脚本来控制    window.document.getElementById("MyDiv").style.display = "none";

<返回>

44.禁止右键

<body oncontextmenu="return false">

<返回>

45.屏蔽页面中程序运行出错信息
 

window.onerror = function()
{
   return true;
}
try{
......
}
catch(e){}

<返回>
46.得到当前显示器的分辨率

window.srceen.width 得到屏幕的宽度
window.srceen.height 得到屏幕的高度
如果当前分辨率为800*600,window.srceen.width是800,window.srceen.height是600
<返回>

47.定时运行特定代码

setTimeout(Code,Timeout);
setInterval(Code,Timeout);
Code是一段字符串,里边是js代码,Timeout是时间间隔,单位是微秒
setTimeout是从现在算起多少微秒后运行该代码(只运行一次)
setInterval是每隔多少微秒运行一次代码

<返回>

48.得到本页网址

var Url = window.location.href;

<返回>

49.保存当前页面的内容

document.execCommand("SaveAs","","C:\\index.htm"); 
//execCommand实际上是一个功能强大的函数,一般的编辑器都是用其实现。详见 http://www.51js.com/viewthread.php?tid=13450&fpage=1&highlight=execCommand

<返回>

50.刷新当前页面

window.location.reload();
<返回>

51.获得当前日期

var d; d = new Date();
alert (d.getMonth() + 1); // 获取月份。
alert (d.getDate()); // 获取日。
alert (d.getYear()); // 获取年份。

<返回>
 


ASP

1.连接SQL Server数据库

<!--#include file="adovbs.inc" -->
Dim ConnStr
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "translate"       '数据库名
SqlUsername = "WebCVO"              '用户名
SqlPassword = "webcvo"              '用户密码
SqlLocalName = "192.168.105.204"    '连接名(本地用local,外地用IP)
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"

Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr

<返回>

2.连接Access数据库

strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

<返回>

3.使用系统DSN连接数据库

Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=test;"

<返回>

4.使用数据库操作
<%
exec="delete from tbl_Privileges where PrivilegeGUID="+cstr(ParaID)
conn.Execute(exec)

Set rs = Server.CreateObject("ADODB.Recordset")
sql="select top 10 * from japanese"
rs.Open sql,conn,adopenStatic

while not(rs.eof)
%><%=rs("word")%>
<%
rs.movenext
wend
rs.Close()
Set rs = nothing
%>


<返回>

5.使用数据库带返回值的存储过程
 
<%
Set Comm=server.CreateObject("ADODB.Command")
Set Comm.ActiveConnection=conn
Comm.CommandType=adCmdStoredProc
Comm.CommandText="ProductsInfo" '存储过程名称
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"愛情") '输入参数
Comm.Parameters.Append Comm.CreateParameter("ID",adinteger,adParamInput,4,45)
Comm.Parameters.Append Comm.CreateParameter("mean1",adVarChar,adParamOutput,30) '输出参数
Comm.Execute '调用执行存储过程。
rs=Comm.parameters("mean1").value '返回参数
%><%=rs%>
<%
Set rs = nothing
Set Comm.ActiveConnection = nothing
Set Comm = nothing
%>
adEmpty
adTinyInt
adSmallInt
adInteger
adBigInt
adUnsignedTinyInt
adUnsignedSmallInt
adUnsignedInt
adUnsignedBigInt
adSingle
adDouble
adCurrency
adDecimal
adNumeric
adBoolean
adError
adUserDefined
adVariant
adGUID
adDATE
adDBDate
adDBTime
adDBTimeStamp
adBSTR
adChar
adVarChar
adLongVarChar
adWChar
adVarWChar
adLongVarWChar
adBinary
adVarBinary
adLongVarBinary
adChapter
adPropVariant
adIDispatch
adIUnknown
<返回>

6.使用数据库带返回记录集的存储过程
<%
Set Comm=server.CreateObject("ADODB.Command")
Set Comm.ActiveConnection=conn
Comm.CommandType=adCmdStoredProc
Comm.CommandText="SearchWord" '存储过程名称
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"私") '输入参数
Set Rs = Comm.Execute() '调用执行存储过程。
While Not rs.eof
%><%=rs("mean1")%><br>
<%rs.movenext
wend

Set rs = nothing
Set Comm.ActiveConnection = nothing
Set Comm = nothing
%>


<返回>


7.用split分割字符串

str = "ftp://username:password@server"
aryReturn = Split(str,":")
If UBound(aryReturn)<>-1 then
  For i = LBound(aryReturn) To UBound(aryReturn)
    aryReturn(i)
  Next
End If

<返回>

8.vb和数据库中使用转义字符

有些字符不转义,显示时候会出错
 

HTML ASP SQL查询
   FormatInSql = replace(tmpStr,"<","&lt;")      
   FormatInSql = replace(tmpStr,">","&gt;")      
   FormatInSql = replace(tmpStr,chr(13),"<br/>")
   FormatInSql = replace(tmpStr," ","&nbsp;")    
   FormatInSql = replace(tmpStr,"'","&apos;")    
FormatInSql = replace(tmpStr,chr(34),"""") 
str=  " id=""20""  "         
reString=chr(13)+chr(10)     
str=replace(str,reString,"")
CammandParaName=replace(CammandParaName,"'","''")

<返回>

9.如何强制要求VB声明变量

    在asp文件头部用Option Explicit

<返回>

10.如何处理不用的对象


  当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”来释放对象占用的内存,否则会因为对象太多导致WEB服务站点运行效率降低乃至崩溃,相应语句如下:
  <%
  对象.close
  set对象= nothing
  %>

<返回>

11.如何设定缓冲

  (1)设定缓冲
    Response.Buffer = True
    在结尾写:Response.Flush
  (2)不允许用缓冲
   <HTML>
   <HEAD>
     <META HTTP-EQUIV="REFRESH" CONTENT="5">
     <TITLE> 你的标题 </TITLE>
   </HEAD>
   <BODY>
      你的页面的其它部分。。。。。
   </BODY>
   <HEAD>
     <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
   </HEAD>
   </HTML>

     HTM网页
      <META HTTP-EQUIV="pragma" CONTENT="no-cache">
      <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
      <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
      或者<META HTTP-EQUIV="expires" CONTENT="0">

     ASP网页
      Response.Expires = -1
      Response.ExpiresAbsolute = Now() - 1
      Response.cachecontrol = "no-cache"|

      response.addHeader "pragma" , "no-cache"
      response.addHeader "cache-control" , "private"

     PHP网页
      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
      header("Cache-Control: no-cache, must-revalidate");
      header("Pragma: no-cache");

<返回>

12.设定Session超时时间

这么写:Session.Timeout=60 '设定超时时间为60分钟

<返回>

13.获得访问者IP和浏览器类型等信息 

本机ip<%=request.servervariables("remote_addr")%>
服务器名<%=Request.ServerVariables("SERVER_NAME")%>
服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服务器端口<%=Request.ServerVariables("SERVER_PORT")%>
服务器时间<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
脚本超时时间<%=Server.ScriptTimeout%>
本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服务器操作系统<%=Request.ServerVariables("OS")%>
检查来访者是否用了代理<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
                              response.write "<font color=#FF0000>您通过了代理服务器,"& _"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
                        end if%>
<返回>

14.将query string从一个asp文件传送到另一个

前者文件加入下句:
Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

<返回>

15.加密脚本

可以去下载一个微软的Windows Script Encoder(http://www.wrclub.net/down.aspx?id=223),它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装一个ie5就有了)才能执行。

<返回>

16.获得CPU信息

<%
Set objShell = CreateObject("WScript.Shell")
Set objEnv = objShell.Environment("SYSTEM")
Response.Write "<H4>Number of Processors: " & objEnv("NUMBER_OF_PROCESSORS") & "</H4>"
%>

<返回>

17.在ASP中读取注册表的信息 

通过 Windows Scripting object 的 Regread 方法,可以从注册表中读取信息。
下面的例子演示了如何得到 common files 的路径:
<%
Dim strPath
strPath = "HKLMSOFTWAREMICROSOFTWINDOWSCURRENTVERSIONCOMMONFILESDIR"
Set objShell = CreateObject("WScript.Shell")
Response.Write "<b>Registry value(Common files dir):</b> " & objShell.RegRead(strPath)
%>

<返回>

18.取得所有的Session变量

  在程序调试中,有时候需要知道有多少Session变量在使用,她们的值如何?由于Session对象提供一个称为Contents的集合(Collection),我们可以通过For...Each循环来达到目标:
Dim strName, iLoop
For Each strName in Session.Contents
Response.Write strName & " - " & Session.Contents(strName)& "<BR>"
Next

<返回>


19.定义数据库连接的一些常量

Const adOpenForwardOnly = 0 '游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly = 1 '锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 '当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 '当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002

<返回>

20.定义数据库的字段的初始值

  在Default中用(newid())  (getdate())
<返回>

21.修改contentType并下载gif等格式
<%
function dl(f,n)
   on error resume next
   set s=CreateObject("Adodb.Stream")
   S.Mode=3
   S.Type=1
   S.Open
   s.LoadFromFile(server.mappath(f))
   if err.number>0 then
      response.write err.number & ":" & err.description
   else
      response.contentType="application/x-gzip"
      response.addheader "Content-Disposition:","attachment; filename=" & n
      response.binarywrite(s.Read(s.size))
   end if
end function
call dl("012922501.gif","t1.gif")
%>
<返回>

22.RecordSet的基本属性和方法

rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数 
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

<返回>

23.获得查询获得的表的各个字段的名字

For i=0 to rs.fields.count-1
   response.write " "&rs(i).Name&" "
Next

'取字段内容
rs.movefirst
while not rs.eof
  For i=0 to rs.Fields.count-1
    response.write(rs(i))
  Next
  rs.MoveNext
wend

<返回>
 

Asp.net


1.ASP.net中如何在二个页面传递数据

 

一、提交数据
(1) 用服务器端控件后,再利用Server.Execute("send4.aspx"); 或者Server.Transfer("receive1.aspx"); 提交。前者仍然保持原有的web控件,后者不保存。
(2) 写在URL参数里Response.Redirect("receive3.aspx?name=" + this.TextBox1.Text);
(3) 通过HTML控件,加入带有action的form。

二、接收数据
(1) 按类接收数据
  if(Context.Handler is MyWebExample.send4)
  {
    send4 send = (send4)Context.Handler;
    Response.Write("Name:"+((TextBox)send.FindControl("TextBox1")).Text+"<p>");
  }
(2) 从URL中接收

  if(!IsPostBack)
  {
    Request.QueryString["text1"]

  }
(3) 从Form中接收Request.Form["text1"]
(4) 作为参数笼统接收Request.Params["text1"]

 

<返回>

 


2.如何添加用户自定义标签、自定义控件、定制控件

 

 <1>定制标签较容易,把HTML代码保存到一个文件。然后用二句话在需要的地方引用:

    <%@ Register TagPrefix="mycontrol" TagName="myc" Src="myUserControl.ascx"%>
    <mycontrol:myc runat="server" id="Myc1"></mycontrol:myc>

 <2>自定义控件

    和定制标签类似,只是可以自己添加属性。

   

 

<返回>

 

 

3.添加客户端验证脚本
 

(1)添加JavaScript
   <script language="javascript">
   function ClientCheck(source,arguments)
   {
      if(arguments.Value<1 || arguments.Value>100 )
      {
         arguments.IsValid=false;
         return false;
      }
      else
      {
         arguments.IsValid=true;
         return true;
      }
   }
   </script>

(2)添加CustomValidator控件,并且把ClientValidateFunction设为该函数

(3)设置ControlToValidate

 

<返回>

 

 

4.如何使得DataGrid有分页输出数据功能

(1).对DataGrid按右键,在弹出菜单的“属性生成器”中可以设置分页。
(2).接着对控件添加PageIndexChanged事件。并且输入以下代码
   private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
   {
      DataGrid1.EditItemIndex = -1;
      DataGrid1.CurrentPageIndex = e.NewPageIndex;
      DataGrid1.DataBind();
   }
 

<返回>
 

5.如何写广告控件的XML


<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
   <ImageUrl></ImageUrl>
   <NavigateUrl>http://www.neusoft.com</NavigateUrl>
   <AlternateText>欢迎</AlternateText>
   <Keyword>Keyword</Keyword>
   <Impressions>50</Impressions>
</Ad>
</Advertisements>

 

<返回>


 

6.如何利用Session和Application

 

使用Session和Application不要初始化,和普通的asp一样

   if(Application["userCount"]==null)
      Application["userCount"]=0;
   else
      Application["userCount"]=Convert.ToInt32(Application["userCount"])+1;

session用法和Application一样。

 

<返回>

 


7.如何利用Cookie

 

   if(Request.Cookies["cookie"]==null)
   {
      HttpCookie cookie = new HttpCookie("cookie","1");
      Response.Cookies.Add(cookie);

      this.Label3.Text="Cookies is 1";
   }
   else
   {
      HttpCookie cook = Request.Cookies["cookie"];

      Response.Cookies["cookie"].Value=(Int32.Parse(cook.Value)+1).ToString();

      this.Label3.Text=string.Format("Cookies is {0}",cook.Value);
   }

 

<返回>

8.利用ASP.net上传文件

  1.从HTML控件栏中拖入一个文件浏览控件
  2.设置该控件在服务器端运行
  3.给它的上传添加代码
   string fileName=this.File1.PostedFile.FileName;
   string UploadFileName=Request.MapPath(Request.ApplicationPath+"\\"+ System.IO.Path.GetFileName(fileName));
   this.File1.PostedFile.SaveAs(UploadFileName);
 

<返回>

9.在Asp.net中自定义异常页面

  按异常处理优先级排序
  (0)在Global.asax的Application_Error添加代码
    protected void Application_Error(Object sender, EventArgs e)
    {
        Context.ClearError();
        Response.Write("Error");
        Response.Redirect("errorpage.htm");
    }

  (1)后台代码中的WebForm1_Error
     aspx页面的属性中UI.Page的Error事件中添加异常处理代码
     private void WebForm1_Error(object sender, System.EventArgs e)
     {
        Exception ex=Server.GetLastError();
        Session["error"]=ex.Message;
        Server.ClearError();
        Response.Redirect("error.aspx");
     }
  (2)在html代码中加入ErrorPage
     ErrorPage="http://www.21cn.com"
  (3)在Web.config中添加异常处理的页面
    <customErrors mode="On" defaultRedirect="error.aspx">
    <error statusCode="401" redirect="error.aspx"/>
    <error statusCode="404" redirect="http://www.sina.com.cn"/>
    </customErrors>
  (4)在IIS中设置异常处理页

<返回>

10.Asp.net的安全认证及Web.config的配置

 (1)在Web.config的配置   
   在<system.web>中修改选项
     验证模式设为Form,并且验证页为
      <authentication mode="Forms">
        <forms loginUrl="Login.aspx" />
      </authentication>
     不允许匿名用户
      <authorization>
        <deny users="?" />
      </authorization>

   在</system.web>后加入不要验证就能使用数据库的页面,用于在该页访问数据库,察看是否存在该用户。
     <location path="Reg.aspx">
       <system.web>
         <authorization>
           <allow users="*"/>
         </authorization>
       </system.web>
     </location>

  (2)在代码中按普通方式,例如要求对方输入信息查找数据库或者XML进行验证,验证通过后,执行这句就表示验证通过同时跳会开始进入的页面
      System.Web.Security.FormsAuthentication.RedirectFromLoginPage(userName,true);
      注销用 System.Web.Security.FormsAuthentication.SignOut();  
      如果不想跳回原处,可以先授权再redirect到其他页面  System.Web.Security.FormsAuthentication.SetAuthCookie();

<返回>

11.Asp网页的EnableViewState属性对网页性能的影响

    ViewState主要是在提交以后回显用的,它只有在页面中的数据是提交到本页时才有用,在这个时候,比如Textbox,你用EnableViewState="false",后台同样可以得到数据,但由于你提交到本页,所以提交以后此Textbox中为空;而如果用EnableViewState="true",则提交以后返回时页面中Textbox中为你提交以前的数据。
    另外,除了页面Page中的EnableViewState,每个可以提交的控件,Textbox、Dropdownlist都有EnableViewState属性。实际上,回发的数据并不依赖于ViewState。回发的控件都实现了IPostBackDataHandler接口,该接口的LoadPostData方法中,会对返回的值和ViewState中的值进行判断,如果改变了的话,调用RaisePostDataChangedEvent方法触发相应的事件(对于TextBox来说就是TextChanged事件)。
    如果你把EnableViewState="False",LoadPostData方法中返回的值始终会和文本框的默认值比较大小,也就是说,如果你在页面TextBox中改变值以后,每次你点按钮提交窗口都会触发TextBox的TextChanged事件LoadPostData中如果返回的值和ViewState中的值不同的话,将把TextBox的值设置成返回的值这就是你看到的结果 。
    在很多情况下,把EnableViewState设为false,可以提高应用程序的性能。特别在等待后台把数据填充到DataGrid的情况下。如果这个时候设为true,那么cpu的时间都浪费 在序列化数据到 ViewState 中。
     每个控件(在标记上):sp:datagrid EnableViewState="false" ?/>
     每个页面(在指令中): <%@ Page EnableViewState="False" ?%>
     每个应用程序(在 web.config 中): <Pages EnableViewState="false" ?/>
    更多请查看微软中国


<返回>
 

12.Web打印文档

<!--语言无关 保存成 .HTML-->
<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>网络打印模板页</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>

<style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 1px;
border-left-width: 1px;
}
.NOPRINT {
font-family: "宋体";
font-size: 9pt;
}
</style>

</head>

<body >
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>

<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td colspan="3" class="tdp">第1页</td>
</tr>
<tr>
<td width="29%" class="tdp"> </td>
<td width="28%" class="tdp"> </td>
<td width="43%" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第2页</td>
</tr>
<tr>
<td class="tdp">看到分页了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>


在基于框架的网页打印时,用如下函数可以打印某个框架内的网页
<input type=button onclick="printweb(this)">
<script>
function printweb()
{
this.focus();
window.print();
}
</script>
 

<返回>


13.将Web表格输出为word或者Excel格式的文件保存在客户端

   Response.Clear();
   Response.Buffer= true;
   if (Session["Language"]!=null && Session["Language"].ToString()!="EN")
   {
      Response.Charset="GB2312";
   }
   Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
   if (Session["Language"]!=null && Session["Language"].ToString()!="EN")
   {
      Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   }//设置输出流为简体中文
   Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
   //application/ms-word || application/ms-txt || application/ms-html || 或其他浏览器可直接支持文档

   this.EnableViewState = false;
   System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   DataGrid1.RenderControl(oHtmlTextWriter); //DataGrid1为DataGrid控件,也可以是动态生成的HtmlTable  <---唯一需要修改的地方
   Response.Write(oStringWriter.ToString());
   Response.End();
 

<返回>


JSP

1.引入其他包和设置Html参数
 
  字体<%@ page lanage="java"%>
  <%@ page import="java.io.*","java.util.Date"%>
  <%@ page contentType="text/html; charset=GBK" %>
  <%@ page buffer="24kb"%>

<返回>

2.包含文件,同时带设置参数

  <jsp:param name="userName" value="kes2000">

  <%@ include file="filename"%>
  String a=request.getParameter("userName");
  out.print(a);

<返回>

3.使用页面跳转并带参数

  <jsp:forward page="result.jsp">
     <jsp:param name="number" value="10">
  </jsp:forward>

<返回>

4.使用Applet

   <jsp:plugin type="applet" code="B.class" codebase="/myfile" jreversion="1.2" width="200" height="260" >  </jsp:plugin>

<返回>

5. 转为为数字

   number=Double.parseDouble(textContent);

<返回>

6. 读取中文

   String str=request.getParameter("girl");
   byte b[]=str.getBytes("ISO-8859-1");
   str=new String(b);

<返回>

7.Request对象(读取页面或者Form参数)

  request.getProtocol()   getServletPath()   getContentLength()   getMethod()   getHeader(String s)   getRemoteAddr()   getRemoteHost()  getServerName()
  request.setContentType("application/msword;charset=GB2312");

<返回>

8.Response对象和out对象(输出值)

  response.sendRedirect("example.jsp");   setStatus(500);   setStatus(200);
  out.print("hello");

<返回>

9.Session 和Application

 String s=session.getId();   setAttribute(key,value)  getAttribute(key)   removeAttribute(key)   invalidate()   getCreationTime()   getLastAccessedTime()

<返回>

10.JSP连接数据库
 
一、jsp连接Oracle8/8i/9i数据库(用thin模式) <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
二、jsp连接Sql Server7.0/2000数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
三、jsp连接DB2数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
 
四、jsp连接Informix数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
五、jsp连接Sybase数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
六、jsp连接MySQL数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
七、jsp连接PostgreSQL数据库 <%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getInt(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
<返回>

11.使用同步连接

   if(conn!=null){
      synchronized(conn){
         //do something
      }
   }
<返回>

12.使用beans  
Jsp代码 Bean代码
<jsp:useBean id="jsp2BeanId" scope="session" class="myjsp.Jsp2Bean" />
<jsp:setProperty name="jsp2BeanId" property="*" />
<jsp:getProperty name="jsp2BeanId" property="sample" />




<@ import="tom.jiafei.primNumber">
 public class Jsp2Bean {
    private String sample = "Start value";
    //Access sample property
    public String getSample() {
        return sample;
    }
    //Access sample property
    public void setSample(String newValue) {
        if (newValue!=null) {
            sample = newValue;
        }
    }
 }
<返回>


 

用VB写ASP的组件


1.用VB编写一般组件

(1)在建立工程时候,ActiveX Dll方式建立工程

(2)添加一个类,会参数如下代码
Option Explicit

Private Sub Class_Initialize()  '构造函数

End Sub

Private Sub Class_Terminate()  '析构函数

End Sub
(3)添加自己的函数
Function String2Integer(data As String)
   If Len(data) = 1 Then
     String2Integer = "0" & data
   Else
     String2Integer = data
   End If
End Function


<返回>

2.用VB编写ASP组件(包括Response,Request,Session等内建对象)

Visual Basic工程

  创建组件的步骤是:启动Visual Basic,在对话框提示时,选择要创建的工程类型,这里选择ActiveX DLL:



设置工程的属性

  创建工程的名字为Project1,它包含一个单独的类模块叫做class1。这些就足够了。点击菜单“Project/Project1 Properties”,在出现的如下所示画面中设置工程的属性:



  在General/Tab页面上有一对需要注意的信息。首先,工程名Project Name已经改变为ASPToday,这将形成调用名字的第一个部分,这个调用的名字就是被ASP页面使用的CreateObject的名字。这里还选择了Unattended Execution选项,从而禁止了图形界面的交互(比如错误信息对话框),这么做,有可能导致IIS错误。



  在Make页面唯一发生重要变化的是设置Auto Increment选项,这样做,当程序编译后,组件的版本号就会提升。调试程序时,知道组件的版本号是非常有用的,特别是当拥有一个source safe系统时,不过这是另外的话题。



  编译(Compile)页面是选择让编译器如何创建组件的地方。在这里选择Optimize For Small Code,因为我要让Web服务器得到它能得到的最多内存。这个页面真正重要的选项是DLL基础地址,这和计算机调入组件相关的代码库的方式有关。做为一个32位的系统,会留下2兆字节的内存装入代码。你要设置的基础地址必须是建立在64K基础上,用英语方式表达出来就是需要设置类似 &Hxxxx0000 的数值,xxxx表示从1100到7FFF的16进制数字。



在Component页面,初始的版本兼容性默认是Project compatibility,如果不编译成第一个版本,这将会是不错的。当编译时,为了有利于注册表,就应该改变为Binary Compatibility,如上图所示。请查阅在线帮助得到关于这个复杂项目的详细资料。

设置工程的引用

  完成了工程属性的选择,下一步就是设置组件运行的ASP环境。通过引用对话框实现这一步。选择菜单“Project / References”,出现一个对话框,选择组件需要的库,在这里选择“Microsoft Active Server Pages Object Library”。



  通过上述引用,在程序中就可以访问ScriptingContext对象,从而能够使用在ASP页面中的5个对象:Request, Response, Session, Application 和 Server。

  如果在列表中找不到“Microsoft Active Server Pages Object Library”,点击“Browse”按钮定位寻找。ASP库引用实际上就是一个后缀为.tlb的文件,默认的路径应该位于:\Program Files\Microsoft Visual Studio\ Common IDE\IDE98\ASP.TLB。

在组件中命名对象

  在开始编程前,工程的唯一类模块class1,实在应该含有一个更有意义的名字。在工程浏览(Project Explorer)窗口中选择类项目:



  (如果在编程环境中看不到这个窗口,按“Ctrl+R”组合键调出它)在上面的窗口中就可以修改类的名字属性,接着出现属性对话框。



  修改名字为VisitorID。如果看不到这个对话框,按F4显示它。

编制代码

  到此为止,已经为组件设置了足够的属性,建立好了在ASP页面中调用组件实例的基础。但是,还需要一个接口方法。下面的图表显示了将要建立的接口(用长方形描述对象的方法,用园描述属性)。



在Visual Basic中,打开类VisitorID的代码编辑器(在工程浏览器中双击它的图标)。

《1》首先建立类的一些变量声明:
Private mstrError As String
Private ojbSContext As ScriptingContext  '定义了一个ScriptingContext类型的对象变量,ASP处理器根据这个应用传递给组件。
Private objResponse As Response
Private objRequest As Request
Private objApplication As Application
Private objServer As Server
Private objSession As Session
Private Const VISITOR_COOKIE = "VID"

Private Type GUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(7) As Byte
End Type


《2》其次定义类的函数:

 (1)首先看看OnStart,用于初始化与ASP内置对象的连接
(Request,Response,Session)

Public Function
OnStartPage(ByVal mysc As ScriptingContext)
Dim strID As String
Dim dtmExpires As Date

'IMPORTANT NEVER Leave a public method without an error handler.
On Error Resume Next

Set ojbSContext = mysc  'ASP处理器检查Scripting Context,并存储引用到事先声明的变量中。
Set objResponse = mysc.Response
Set objRequest = mysc.Request
Set objServer = mysc.Server
Set objApplication = mysc.Application
Set objSession = mysc.Session

'Exit Function
End Function

  (2)OnEndPage方法是放置清理代码的地方。

Public Function
OnEndPage()
'Release Scripting context
Set ojbSContext = Nothing
Set objResponse = Nothing
Set objRequest = Nothingt
Set objServer = Nothing
Set objApplication = Nothing
Set objSession = Nothing
End Function

  (3)自定义函数GetGUID 

Public Function
GetGUID() As String
 GetGUID = "00000000"
End Function

《3》最后定义属性

Private mvarResult As String
Public Property Let Result(ByVal vData As String)
   mvarResult = vData
End Property
Public Property Get Result() As String
   Result = mvarResult
End Property

   可以通过对类按右键,选择 Add -> Class Module 可视化地添加函数和属性

编译组件和分发组件

  为了使用新组件,必须将之生成DLL文件。选择菜单“File/make ASPToday.dll ...”,接着选择生成组件的路径。

  组件创建完成后,就要建立一个组件分发软件包。除了Visual Studio自带的,有许多第3方工具可以做这件事情,它们都提供了强大的向导来帮助建立一个安装程序,从而在Web服务器上安装组件。
   
    也可以手动发布,在命令提示符中输入 regsvr32 c:\test\fc1.dll
    手动卸载,在命令提示符中输入       regsvr32 c:\test\fc1.dll /u

在ASP页面中使用组件

  要实现组件要完成的任务“设置Cookie和到期时间”,需要在页面主体(Body)送到浏览器之前,在HTTP头部完成GUID的计算。执行下面的代码将足够为浏览器设置一个永久的GUID。

< %@ LANGUAGE="VBSCRIPT" % >
< %
Dim oCookieSetter
Set oCookieSetter = Server.CreateObject ("ASPToday.VisitorID")
% >
...

  创建这个独立组件的简单对象,足够可以完成要求的任务。这样做,就保证了Server.CreateObject方法不仅创建了一个组件的实例,而且将检查组件的一对方法:OnStartPage()和 OnEndPage(),它们将在适当的时候被执行。这是创建ASP组件、访问ASP内在对象的关键。

如:组件编译后,又要修改,发生”权限被拒绝,’f:\csdn\fcom.dll’”等等的错误。


修改组件时权限问题的解决

  可以使用以下几种方式来解决
  1. 重新启动iis.
    在控制面板中找到管理工具->internet信息服务->右键点击左边树图第二层本地计算机->所有任务->重新启动IIS即可,这个操作需要一点时间。
    此时你可以看到这个dllhost.exe的进程已经关闭
  2. 针对单个网站或者虚拟目录的重启
     在控制面板中找到管理工具->internet信息服务->找到你的组件运行的虚拟目录。->右键属性->第一项虚拟目录中->应用程序保护->点击卸载即可。此时你可以看到这个dllhost.exe的进程已经关闭
  3. 如果你觉得麻烦,直接在Windows任务管理器中结束该进程(有时是多个进程)既可。不过要多结束几次(平均3次可以得手)。
  4. 最后一种方法
     在控制面板中找到管理工具->组件服务->在树图中点击计算机,我的电脑,正在运行的进程->IIS Out-Of-Process Pooled Applications(2860)->右键关闭即可

<返回>


3. 在VB组件里面添加对数据库的访问

(1)在WebCVO项目中,可以通过  Private mobjDataAccess As New uti_DataCOM.DataAccess 构建对数据库的访问

例如
Private mobjDataAccess As New uti_DataCOM.DataAccess

Dim searchRS As New ADODB.Recordset
Dim str As String

searchRS.CursorLocation = adUseServer
searchRS.CursorType = adOpenKeyset
searchRS.LockType = adLockReadOnly

Set searchRS = mobjDataAccess.SelectSQL(SearchSQL)
searchRS.PageSize = PageSize

If Not searchRS.EOF Then
   str=searchRS("UserName")
End If

searchRS.Close
Set searchRS = Nothing

(2)在其他地方通过如下方法实现

设置工程的引用


  选择菜单“Project / References”,出现一个对话框,选择组件需要的库,在这里选择“Microsoft ActiveX Data Objects 2.7 Library”,如果没有这个版本的,选择其他版本的ADO library。

创建数据库对象
 
  这里的数据库对象不要用server来创建,而改为直接创建。或者用参数方式从asp传入已经建立好的连接。

Public Sub MakeSearchValue(conn As ADODB.Connection)
  Dim Rs As New ADODB.Recordset
  Rs.Open "select top 10 * from tbl_webPri_Privileges", conn, 1
  While Not (Rs.EOF)
    objResponse.Write (Rs("privilegeName") & "<br>")
    Rs.MoveNext
  Wend
  Rs.Close
  Set Rs = Nothing
End Sub

<返回>

4.函数返回多个值和数组型属性

   Dim a(3)
    
    Public Property Get MyArray() As Variant
     a(0) = 1
     a(1) = 2
     a(2) = 3
     MyArray = a()
    End Property
   调用时为:
   Dim n As New Class1
    
   Print n.MyArray(1)

<返回>

5.在VB控件中编写对文件的读写

folderName = 临时文件的目录
todayString = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())
     '如果定义了格式化日期的函数用   todayString = Year(Now()) & "-" & String2Integer(Month(Now())) & "-" & String2Integer(Day(Now()))
subFolodName = folderName & "\" & todayString
fileName = subFolodName & "\" & 你的文件名字 & ".html"

Set objFile = CreateObject("Scripting.FileSystemObject")
If objFile.FolderExists(subFolodName) = False Then
   objFile.CreateFolder (subFolodName)
End If

Set TempFile = objFile.CreateTextFile(fileName, True)
TempFile.Write ("hello World")

TempFile.Close

<返回>

 

 

posted @ 2006-02-27 15:53  Winner.Net(2007)  阅读(2338)  评论(0编辑  收藏  举报