国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
STORM--站長筆記
JavaScript、ASP、ASP.Net、JSP筆記    2006
JavaScript

1.基本控件的使用
6.客戶端腳本的基本對(duì)象    ***
41.常用的Javascript內(nèi)建類的方法  ***
2.讓TextArea自動(dòng)換行
3.讓TextArea支持Table鍵
4.復(fù)制數(shù)據(jù)到剪貼板
5.得到當(dāng)前選中的文本
7.保護(hù)自己編寫的HTML和腳本的方法
8.IE地址欄前換成自己的圖標(biāo)
9.可以在收藏夾中顯示出你的圖標(biāo)
10.關(guān)閉輸入法
11.直接查看源代碼
12.在Javascript中自定義一個(gè)對(duì)象(屬性,方法) ***
13.取得控件的絕對(duì)位置
14.光標(biāo)是停在文本框文字的最后
15.判斷上一頁的來源
16.最小化、最大化、關(guān)閉窗口
17.檢查一段字符串是否全由數(shù)字組成
18.獲得一個(gè)窗口的大小
19.怎么判斷是否是字符
20.檢測(cè)某個(gè)網(wǎng)站的鏈接速度
21.各種樣式的光標(biāo)
22.讓TEXTAREA自適應(yīng)文字的行數(shù)
23.日期減去天數(shù)等于第二個(gè)日期
24.選擇了哪一個(gè)Radio
25.獲得本頁url的request.servervariables("")集合
26.ENTER鍵可以讓光標(biāo)移到下一個(gè)輸入框
27.多用途的RichEdit控件
28.引用其他網(wǎng)頁
29.常用的正則表達(dá)式
31.取得查詢字符串,然后就生成成對(duì)的數(shù)組
32.另類的onload函數(shù)
33.取得IE的版本
34.提交表單到不同地方
35.判斷是否是整數(shù)
36.鏈接css文件和js文件
37.引用框架的內(nèi)容
38.打開沒有最大化按鈕的窗口
39.在頁面上顯示一個(gè)有邊框的Frame
40.判斷日期1是不是大于日期2
30.彈出來必須關(guān)閉才能繼續(xù)運(yùn)行的提示對(duì)話框
42.如何在另一個(gè)窗體對(duì)原來窗體進(jìn)行操作 ***
43.層的隱藏與顯示
44.禁止右鍵
45.屏蔽頁面中程序運(yùn)行出錯(cuò)信息 **
46.得到當(dāng)前顯示器的分辨率
47.定時(shí)運(yùn)行特定代碼(Timer)
48.得到本頁網(wǎng)址
49.保存當(dāng)前頁面的內(nèi)容
50.刷新當(dāng)前頁面
51.獲得當(dāng)前日期


1.ASP.net中如何在二個(gè)頁面?zhèn)鬟f數(shù)
2.如何添加用戶自定義標(biāo)簽、自定義控件、定制控件
3.添加客戶端驗(yàn)證腳本
4.如何使得DataGrid有分頁輸出數(shù)據(jù)功能
5.如何寫廣告控件的XML
6.如何利用Session和Application
7.如何利用Cookie
8.利用ASP.net上傳文件
9.Asp.net中自定義異常頁
10.Asp.net的安全認(rèn)證及Web.config的配置
11.Asp網(wǎng)頁的EnableViewState屬性對(duì)網(wǎng)頁性能的影響
12.Web打印文檔
13.將Web表格輸出為word或者Excel格式的文件保存在客戶端


1.連接SQL Server數(shù)據(jù)庫
2.連接Access數(shù)據(jù)庫
3.使用系統(tǒng)DSN連接數(shù)據(jù)庫
4.使用數(shù)據(jù)庫操作 ***
5.使用數(shù)據(jù)庫帶返回值的存儲(chǔ)過程
6.使用數(shù)據(jù)庫帶返回記錄集的存儲(chǔ)過程
7.VB中使用split對(duì)字符串進(jìn)行切割
8.VB和數(shù)據(jù)庫中使用轉(zhuǎn)義字符
9.如何強(qiáng)制要求VB聲明變量
10.如何處理不用的對(duì)象
11.如何設(shè)定緩沖
12.設(shè)定Session超時(shí)時(shí)間
13.獲得訪問者IP和瀏覽器類型等信息
14.將query string從一個(gè)asp文件傳送到另一個(gè)
15.加密腳本 
16.獲得CPU信息
17.在ASP中讀取注冊(cè)表的信息  
18.取得所有的Session變量 
19.定義數(shù)據(jù)庫連接的一些常量
20.定義數(shù)據(jù)庫的字段的初始值
21.修改contentType并下載gif等格式
22.RecordSet的基本屬性和方法
23.獲得查詢獲得的表的各個(gè)字段的名字


JSP
用VB編寫ASP組件

1.引入其他包和設(shè)置Html參數(shù)
2.包含文件,同時(shí)帶設(shè)置參數(shù)
3.使用頁面跳轉(zhuǎn)并帶參數(shù)
4.使用Applet
5.轉(zhuǎn)為為數(shù)字
6.讀取中文
7.Request對(duì)象(讀取頁面或者Form參數(shù))
8.Response對(duì)象和out對(duì)象(輸出值)
9.Session 和Application
10.JSP連接數(shù)據(jù)庫
11.使用同步連接
12.使用beans  

1.用VB編寫一般組件
2.用VB編寫ASP組件(包含request,response,Session等)
3.在VB組件里面添加對(duì)數(shù)據(jù)庫的訪問
4.函數(shù)返回多個(gè)值和數(shù)組型屬性
5.在VB控件中編寫對(duì)文件的讀寫


JavaScript
 1.基本控件的使用


控件名.value

控件名.value

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

控件名.checked    .value

 
   單行         多行         多選
添加選項(xiàng)
ExpList.add(new Option("New Option","3"));
刪除選項(xiàng)
ExpList.remove(ExpList.selectedIndex); 
設(shè)置當(dāng)前選項(xiàng)位置
ExpList.selectedIndex=ExpList.length-1;
循環(huán)整個(gè)選項(xiàng)
并判斷是否被選擇
for(i=0;i<ExpList.options.length;i++) {
  if(ExpList.options[i].selected){
     //ExpList.options[i].text; 
     //ExpList.options[i].value; 
  }
}
單個(gè)選項(xiàng)的值
ExpList.options[i].text; 
ExpList.options[i].value;
<span id="SomePlace1"></span>
<div id="SomePlace1"></div>
重新設(shè)計(jì)包含的html
SomePlace1.innerHTML="任意html字符串"
讓該空間的內(nèi)容消失
SomePlace1.style.display="none"; 
讓該空間的內(nèi)容顯示
SomePlace1.style.display="block";
鼠標(biāo)滑過出現(xiàn)提示
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自動(dòng)換行

  使用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中手動(dòng)換行用: replace(rs("A"),"</br>", VBCRLF) 
str=request.querystring("text1")
str=Replace(str, Chr(32), " ")
‘把空格換成 標(biāo)志
str=Replace(str, vbCrLf, "<br>")
‘把回車換行符換成<br>標(biāo)志
調(diào)出時(shí)再轉(zhuǎn)過來就好了

<返回>

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.復(fù)制數(shù)據(jù)到剪貼板

 JM_cc(txt)

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

<返回>

5.得到當(dāng)前選中的文本

var sel = document.selection.createRange(); 
var mytext= sel.text;  //當(dāng)前選中的文本


var e = event.srcElement;  //設(shè)置文本為選中
var r =e.createTextRange();
r.moveStart(‘character‘,e.value.length);
r.collapse(true);
r.select();

<返回>

6.客戶端腳本的基本對(duì)象

navigator 
screen 
window 
history 
location 
frames[]; Frame 
document 
anchors[]; links[]; Link 
applets[] 
embeds[] 
forms[]; Form 
Button 
Checkbox 
elements[]; Element 
Hidden 
Password 
Radio 
Reset 
Select 
options[]; Option 
Submit 
Text 
Textarea 
images[]; Image 

more >>>
瀏覽器對(duì)象
屏幕對(duì)象
窗口對(duì)象
 歷史對(duì)象
 地址對(duì)象
 框架對(duì)象
 文檔對(duì)象
  連接對(duì)象
  Java小程序?qū)ο?br>  插件對(duì)象
  表單對(duì)象
   按鈕對(duì)象
   復(fù)選框?qū)ο?br>   表單元素對(duì)象
   隱藏對(duì)象
   密碼輸入?yún)^(qū)對(duì)象
   單選域?qū)ο?br>   重置按鈕對(duì)象
   選擇區(qū)(下拉菜單、列表)對(duì)象
    選擇項(xiàng)對(duì)象
   提交按鈕對(duì)象
   文本框?qū)ο?br>   多行文本輸入?yún)^(qū)對(duì)象
  圖片對(duì)象 

<返回>

7.保護(hù)自己編寫的HTML和腳本的方法
  (1). oncontextmenu="window.event.returnValue=false" 將徹底屏蔽鼠標(biāo)右鍵
    <table border oncontextmenu=return(false)><td>no</table> 可用于Table
  (2). <body onselectstart="return false"> 取消選取、防止復(fù)制
  (3). onpaste="return false" 不準(zhǔn)粘貼
  (4). oncopy="return false;" oncut="return false;" 防止復(fù)制
  (5). 防止被人frame
      <SCRIPT LANGUAGE=JAVASCRIPT><!-- 
         if (top.location != self.location)top.location=self.location;
       // -->
      </SCRIPT>
  (6). 永遠(yuǎn)都會(huì)帶著框架
     <script language="JavaScript"><!--
        if (window == top)top.location.href = "frames.htm"; //frames.htm為框架網(wǎng)頁
     // --></script>
  (7).網(wǎng)頁將不能被另存為
     <noscript><iframe src=*.html></iframe></noscript> 

<返回>

8.IE地址欄前換成自己的圖標(biāo)
 <link rel="Shortcut Icon" href="favicon.ico"> 

<返回>

9.可以在收藏夾中顯示出你的圖標(biāo)

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

<返回>

10.關(guān)閉輸入法

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

<返回>

11.直接查看源代碼
 
 <input type=button value=查看網(wǎng)頁源代碼 onclick="window.location = ‘view-source:‘+ ‘http://www.csdn.net/‘">

<返回>

12.在Javascript中定義一個(gè)對(duì)象(屬性,方法)

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. 取得控件的絕對(duì)位置

//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. 光標(biāo)是停在文本框文字的最后

<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. 最小化、最大化、關(guān)閉窗口

<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=關(guān)閉 onclick=hh3.Click()>
本例適用于IE

<返回>

17. 檢查一段字符串是否全由數(shù)字組成

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

<返回>

18. 獲得一個(gè)窗口的大小

document.body.clientWidth,document.body.clientHeight

<返回>

19. 怎么判斷是否是字符

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

<返回>

20. 檢測(cè)某個(gè)網(wǎng)站的鏈接速度

把如下代碼加入<body>區(qū)域中:
<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=測(cè)試中……> =》<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="鏈接超時(shí)"
   }
   else
   {
      document.forms[0]["txt"+b].value="時(shí)間"+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. 各種樣式的光標(biāo)

auto :標(biāo)準(zhǔn)光標(biāo)
default :標(biāo)準(zhǔn)箭頭
hand :手形光標(biāo)
wait :等待光標(biāo)
text :I形光標(biāo)
vertical-text :水平I形光標(biāo)
no-drop :不可拖動(dòng)光標(biāo)
not-allowed :無效光標(biāo)
help :?幫助光標(biāo)
all-scroll :三角方向標(biāo)
move :移動(dòng)標(biāo)
crosshair :十字標(biāo)
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize

<返回>

22.讓TEXTAREA自適應(yīng)文字的行數(shù)

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

<返回>

23. 日期減去天數(shù)等于第二個(gè)日期
<script language=Javascript>
function cc(dd,dadd)
{
//可以加上錯(cuò)誤處理
   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. 選擇了哪一個(gè)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鍵可以讓光標(biāo)移到下一個(gè)輸入框

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

<返回>

28.引用其他網(wǎng)頁

<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.常用的正則表達(dá)式

匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]
匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]
匹配空行的正則表達(dá)式:\n[\s| ]*\r
匹配HTML標(biāo)記的正則表達(dá)式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)
匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網(wǎng)址URL的正則表達(dá)式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

(1)應(yīng)用:計(jì)算字符串的長度(一個(gè)雙字節(jié)字符長度計(jì)2,ASCII字符計(jì)1)         
    String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

(2)應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù),我們就可以利用這個(gè)表達(dá)式來實(shí)現(xiàn)
   String.prototype.trim = function()
   {
      return this.replace(/(^\s*)|(\s*$)/g, "");
   }
(3)應(yīng)用:利用正則表達(dá)式分解和轉(zhuǎn)換IP地址
   function IP2V(ip) //IP地址轉(zhuǎn)換成對(duì)應(yīng)數(shù)值
   {
      re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達(dá)式
      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)應(yīng)用:從URL地址中提取文件名的javascript程序
   s="http://www.9499.net/page1.htm";
   s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") ; //Page1.htm
(5)應(yīng)用:利用正則表達(dá)式限制網(wǎng)頁表單里的文本框輸入內(nèi)容
   用正則表達(dá)式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,‘‘)" onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\u4E00-\u9FA5]/g,‘‘))"
   用正則表達(dá)式限制只能輸入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,‘‘)" onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\uFF00-\uFFFF]/g,‘‘))"
   用正則表達(dá)式限制只能輸入數(shù)字:onkeyup="value=value.replace(/[^\d]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\d]/g,‘‘))"
   用正則表達(dá)式限制只能輸入數(shù)字和英文:onkeyup="value=value.replace(/[\W]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\d]/g,‘‘))" 

<返回>

30.彈出來提示對(duì)話框
window.showModalDialog(url); 

<返回>

31.取得查詢字符串,然后就生成成對(duì)的數(shù)組
var argstr = window.top.location.search.substring(1,window.top.location.search.length);
var args = argstr.split(‘&‘); 

<返回>

32.另類的onload函數(shù)
<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為提交到的頁

//提交表單到新建的網(wǎng)頁
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.判斷是否是整數(shù)
function IsNum(s)  //整數(shù)
{
   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的數(shù)
   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.引用框架的內(nèi)容
window.top.frames["mainFrame"].location.href=s;
在IFRAME標(biāo)簽中引用框架的內(nèi)容
parent.frames["mainFrame"].location.href
在窗口中引用IFrame中的內(nèi)容
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.在頁面上顯示一個(gè)有邊框的Frame
<fieldset style="width:500;height:100">
<legend>標(biāo)題</legend> 
具體內(nèi)容
</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內(nèi)建類的方法

對(duì)象
方法或?qū)傩?br>意義
例子
Array
length
表示數(shù)組大小,也可以通過該屬性動(dòng)態(tài)調(diào)整數(shù)組大小。設(shè)置可以不調(diào)整它直接擴(kuò)大數(shù)組。
var theMonths = new Array(12);
theMonths[0] = "Jan";
theMonths[1] = "Feb";
theMonths[2] = "Mar";
theMonths[20] = "12";
concat
把兩個(gè)數(shù)組合并
a = new Array(1,2,3);
b = new Array(4,5,6);
a = a. concat(b)
join
把數(shù)組變?yōu)樽址?br>   a = new Array(0,1,2,3,4);
   b = a.join("-");
Date
Date.parse(dateVal)
將日期轉(zhuǎn)為數(shù)字,用于比較兩個(gè)日期的大小。dateVal格式為month+day+year
iFrom=Date.parse(“10-1-2004”);
setFullYear (year,month-1,day)
用于判斷3個(gè)字符串合起來是不是日期或者判斷該天是不是存在。這里month從0開始,故和實(shí)際值差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āng)前時(shí)間
d = new Date();                           
Global (全局類,引用方法可以不要帶Global.)
isNaN
當(dāng)從字符到日期轉(zhuǎn)換失敗,或者從字符到數(shù)字轉(zhuǎn)換失敗,都返回NaN。用isNaN可以判斷返回值是不是NaN
 
parseInt
將字符串轉(zhuǎn)換為整數(shù),轉(zhuǎn)換失敗返回NaN或者盡量轉(zhuǎn)換。所以用它來判斷是不是數(shù)字,還要加上判斷轉(zhuǎn)化后長度是不是一樣
parseInt("abc")     // 返回 NaN。
parseInt("12abc")   // 返回 12。
parseInt("12")   // 返回 12
parseFloat
轉(zhuǎn)為實(shí)數(shù)
 
String
主要函數(shù)和Java或者C#一樣
replace
替代某個(gè)字符。如果僅替代一個(gè)和C#一樣,如果要替代全部某字符,就得用到了匹配串
  re=/#/g; 
  str=str.replace(re,"<br>");


把#用<br>代替
split
將某個(gè)字符串按指定間隔符分割
var s = "The rain in Spain";
ss = s.split(" ");  //ss是一個(gè)數(shù)組

<返回>

42.如何在另一個(gè)窗體對(duì)原來窗體進(jìn)行操作

  (1)對(duì)用window.open打開的新窗體,用window.opener來訪問原來窗體的對(duì)象。例如重新加載頁面 window.opener.location.reload();  可以通過window.opener.varName 來訪問原變量。
  (2)對(duì)用showModalDialog打開的新窗體
     (主頁面)   var returnvalue=window.showModalDialog(‘2.htm‘,this,"status=no; help=no; dialogWidth=330px; dialogHeight=305px;");  //第二個(gè)參數(shù)傳入本窗體
     (子頁面)   window.dialogArguments.varName 來訪問原變量
                window.returnValue=***         來設(shè)定returnvalue的值
<返回>

43.層的隱藏與顯示

只要設(shè)置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.屏蔽頁面中程序運(yùn)行出錯(cuò)信息

window.onerror = function()
{
   return true;
}
try{
......
}
catch(e){}
<返回>
46.得到當(dāng)前顯示器的分辨率

window.srceen.width 得到屏幕的寬度
window.srceen.height 得到屏幕的高度
如果當(dāng)前分辨率為800*600,window.srceen.width是800,window.srceen.height是600
<返回>

47.定時(shí)運(yùn)行特定代碼

setTimeout(Code,Timeout);
setInterval(Code,Timeout);
Code是一段字符串,里邊是js代碼,Timeout是時(shí)間間隔,單位是微秒
setTimeout是從現(xiàn)在算起多少微秒后運(yùn)行該代碼(只運(yùn)行一次)
setInterval是每隔多少微秒運(yùn)行一次代碼

<返回>

48.得到本頁網(wǎng)址

var Url = window.location.href;

<返回>

49.保存當(dāng)前頁面的內(nèi)容

document.execCommand("SaveAs","","C:\\index.htm");  
//execCommand實(shí)際上是一個(gè)功能強(qiáng)大的函數(shù),一般的編輯器都是用其實(shí)現(xiàn)。詳見 http://www.51js.com/viewthread.php?tid=13450&fpage=1&highlight=execCommand

<返回>

50.刷新當(dāng)前頁面

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

51.獲得當(dāng)前日期

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

<返回>

ASP
1.連接SQL Server數(shù)據(jù)庫

<!--#include file="adovbs.inc" -->
Dim ConnStr
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "translate"       ‘?dāng)?shù)據(jù)庫名
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數(shù)據(jù)庫

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

<返回>

3.使用系統(tǒng)DSN連接數(shù)據(jù)庫

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

<返回>

4.使用數(shù)據(jù)庫操作
<%
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.使用數(shù)據(jù)庫帶返回值的存儲(chǔ)過程

<%
Set Comm=server.CreateObject("ADODB.Command") 
Set Comm.ActiveConnection=conn 
Comm.CommandType=adCmdStoredProc 
Comm.CommandText="ProductsInfo" ‘存儲(chǔ)過程名稱
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"愛情") ‘輸入?yún)?shù)
Comm.Parameters.Append Comm.CreateParameter("ID",adinteger,adParamInput,4,45)
Comm.Parameters.Append Comm.CreateParameter("mean1",adVarChar,adParamOutput,30) ‘輸出參數(shù)
Comm.Execute ‘調(diào)用執(zhí)行存儲(chǔ)過程。
rs=Comm.parameters("mean1").value ‘返回參數(shù)
%><%=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.使用數(shù)據(jù)庫帶返回記錄集的存儲(chǔ)過程
<%
Set Comm=server.CreateObject("ADODB.Command") 
Set Comm.ActiveConnection=conn 
Comm.CommandType=adCmdStoredProc 
Comm.CommandText="SearchWord" ‘存儲(chǔ)過程名稱
Comm.Parameters.Append Comm.CreateParameter("returncode",adInteger,adParamReturnValue)
Comm.Parameters.Append Comm.CreateParameter("word",adVarChar,adParamInput,30,"私") ‘輸入?yún)?shù)
Set Rs = Comm.Execute() ‘調(diào)用執(zhí)行存儲(chǔ)過程。
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和數(shù)據(jù)庫中使用轉(zhuǎn)義字符

有些字符不轉(zhuǎn)義,顯示時(shí)候會(huì)出錯(cuò)

HTML
ASP
SQL查詢
   FormatInSql = replace(tmpStr,"<","<")       
   FormatInSql = replace(tmpStr,">",">")       
   FormatInSql = replace(tmpStr,chr(13),"<br/>")
   FormatInSql = replace(tmpStr," "," ")     
   FormatInSql = replace(tmpStr,"‘","'")     
FormatInSql = replace(tmpStr,chr(34),"""")  
str=  " id=""20""  "          
reString=chr(13)+chr(10)      
str=replace(str,reString,"")
CammandParaName=replace(CammandParaName,"‘","‘‘")

<返回>

9.如何強(qiáng)制要求VB聲明變量

    在asp文件頭部用Option Explicit

<返回>

10.如何處理不用的對(duì)象

  當(dāng)使用完對(duì)象后,首先使用Close方法來釋放對(duì)象所占用的系統(tǒng)資源;然后設(shè)置對(duì)象值為“nothing”來釋放對(duì)象占用的內(nèi)存,否則會(huì)因?yàn)閷?duì)象太多導(dǎo)致WEB服務(wù)站點(diǎn)運(yùn)行效率降低乃至崩潰,相應(yīng)語句如下:
  <%
  對(duì)象.close
  set對(duì)象= nothing
  %>

<返回>

11.如何設(shè)定緩沖

  (1)設(shè)定緩沖
    Response.Buffer = True 
    在結(jié)尾寫:Response.Flush 
  (2)不允許用緩沖
   <HTML> 
   <HEAD> 
     <META HTTP-EQUIV="REFRESH" CONTENT="5"> 
     <TITLE> 你的標(biāo)題 </TITLE> 
   </HEAD> 
   <BODY> 
      你的頁面的其它部分。。。。。 
   </BODY> 
   <HEAD> 
     <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
   </HEAD> 
   </HTML>

     HTM網(wǎng)頁
      <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網(wǎng)頁
      Response.Expires = -1
      Response.ExpiresAbsolute = Now() - 1
      Response.cachecontrol = "no-cache"|

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

     PHP網(wǎng)頁
      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
      header("Cache-Control: no-cache, must-revalidate");
      header("Pragma: no-cache");

<返回>

12.設(shè)定Session超時(shí)時(shí)間

這么寫:Session.Timeout=60 ‘設(shè)定超時(shí)時(shí)間為60分鐘 

<返回>

13.獲得訪問者IP和瀏覽器類型等信息  

本機(jī)ip<%=request.servervariables("remote_addr")%>
服務(wù)器名<%=Request.ServerVariables("SERVER_NAME")%>
服務(wù)器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服務(wù)器端口<%=Request.ServerVariables("SERVER_PORT")%>
服務(wù)器時(shí)間<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
腳本超時(shí)時(shí)間<%=Server.ScriptTimeout%>
本文件路徑<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服務(wù)器CPU數(shù)量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服務(wù)器解譯引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服務(wù)器操作系統(tǒng)<%=Request.ServerVariables("OS")%>
檢查來訪者是否用了代理<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
                              response.write "<font color=#FF0000>您通過了代理服務(wù)器,"& _"真實(shí)的IP為"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
                        end if%>
<返回>

14.將query string從一個(gè)asp文件傳送到另一個(gè) 

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

<返回>

15.加密腳本

可以去下載一個(gè)微軟的Windows Script Encoder(http://www.wrclub.net/down.aspx?id=223),它可以對(duì)asp的腳本和客戶端javascript/vbscript腳本進(jìn)行加密。。。不過客戶端加密后,只有ie5才能執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝一個(gè)ie5就有了)才能執(zhí)行。 

<返回>

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中讀取注冊(cè)表的信息  

通過 Windows Scripting object 的 Regread 方法,可以從注冊(cè)表中讀取信息。 
下面的例子演示了如何得到 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變量 

  在程序調(diào)試中,有時(shí)候需要知道有多少Session變量在使用,她們的值如何?由于Session對(duì)象提供一個(gè)稱為Contents的集合(Collection),我們可以通過For...Each循環(huán)來達(dá)到目標(biāo): 
Dim strName, iLoop 
For Each strName in Session.Contents 
Response.Write strName & " - " & Session.Contents(strName)& "<BR>" 
Next 

<返回>


19.定義數(shù)據(jù)庫連接的一些常量

Const adOpenForwardOnly = 0 ‘游標(biāo)只向前瀏覽記錄,不支持分頁、Recordset、BookMark
Const adOpenKeyset = 1 ‘鍵集游標(biāo),其他用戶對(duì)記錄說做的修改將反映到記錄集中,但其他用戶增加或刪除記錄不會(huì)反映到記錄集中。支持分頁、Recordset、BookMark
Const adOpenDynamic = 2 ‘動(dòng)態(tài)游標(biāo)功能最強(qiáng),但耗資源也最多。用戶對(duì)記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽(ACCESS不支持)。
Const adOpenStatic = 3 ‘靜態(tài)游標(biāo),只是數(shù)據(jù)的一個(gè)快照,用戶對(duì)記錄說做的修改,增加或刪除記錄都不會(huì)反映到記錄集中。支持向前或向后移動(dòng)

Const adLockReadOnly = 1 ‘鎖定類型,默認(rèn)的,只讀,不能作任何修改
Const adLockPessimistic = 2 ‘當(dāng)編輯時(shí)立即鎖定記錄,最安全的方式
Const adLockOptimistic = 3 ‘只有在調(diào)用Update方法時(shí)才鎖定記錄集,而在此前的其他操作仍可對(duì)當(dāng)前記錄進(jìn)行更改、插入和刪除等
Const adLockBatchOptimistic = 4 ‘當(dāng)編輯時(shí)記錄不會(huì)被鎖定,而更改、插入和刪除是在批處理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002

<返回>

20.定義數(shù)據(jù)庫的字段的初始值

  在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 將記錄指針從當(dāng)前的位置向下移一行 
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行 
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行 
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行 
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行 
rs.absolutepage=N 將記錄指針移到第N頁的第一行 
rs.pagesize=N 設(shè)置每頁為N條記錄 
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù) 
rs.recordcount 返回記錄總數(shù)  
rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否 
rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否 
rs.delete 刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng) 
rs.addnew 添加記錄到數(shù)據(jù)表末端 
rs.update 更新數(shù)據(jù)表記錄 

<返回>

23.獲得查詢獲得的表的各個(gè)字段的名字

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

‘取字段內(nèi)容
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中如何在二個(gè)頁面?zhèn)鬟f數(shù)據(jù)

一、提交數(shù)據(jù)
(1) 用服務(wù)器端控件后,再利用Server.Execute("send4.aspx"); 或者Server.Transfer("receive1.aspx"); 提交。前者仍然保持原有的web控件,后者不保存。
(2) 寫在URL參數(shù)里Response.Redirect("receive3.aspx?name=" + this.TextBox1.Text);
(3) 通過HTML控件,加入帶有action的form。

二、接收數(shù)據(jù)
(1) 按類接收數(shù)據(jù)
  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) 作為參數(shù)籠統(tǒng)接收Request.Params["text1"]

<返回>


2.如何添加用戶自定義標(biāo)簽、自定義控件、定制控件

 <1>定制標(biāo)簽較容易,把HTML代碼保存到一個(gè)文件。然后用二句話在需要的地方引用:
    <%@ Register TagPrefix="mycontrol" TagName="myc" Src="myUserControl.ascx"%>
    <mycontrol:myc runat="server" id="Myc1"></mycontrol:myc>
 <2>自定義控件
    和定制標(biāo)簽類似,只是可以自己添加屬性。
    

<返回>


3.添加客戶端驗(yàn)證腳本

(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設(shè)為該函數(shù)
(3)設(shè)置ControlToValidate

<返回>


4.如何使得DataGrid有分頁輸出數(shù)據(jù)功能

(1).對(duì)DataGrid按右鍵,在彈出菜單的“屬性生成器”中可以設(shè)置分頁。
(2).接著對(duì)控件添加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控件欄中拖入一個(gè)文件瀏覽控件
  2.設(shè)置該控件在服務(wù)器端運(yùn)行
  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中自定義異常頁面
  按異常處理優(yōu)先級(jí)排序
  (0)在Global.asax的Application_Error添加代碼
    protected void Application_Error(Object sender, EventArgs e) 
    { 
        Context.ClearError();
        Response.Write("Error"); 
        Response.Redirect("errorpage.htm"); 
    }
  (1)后臺(tái)代碼中的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中設(shè)置異常處理頁

<返回>

10.Asp.net的安全認(rèn)證及Web.config的配置

 (1)在Web.config的配置    
   在<system.web>中修改選項(xiàng)
     驗(yàn)證模式設(shè)為Form,并且驗(yàn)證頁為
      <authentication mode="Forms">
        <forms loginUrl="Login.aspx" />
      </authentication>
     不允許匿名用戶
      <authorization>
        <deny users="?" /> 
      </authorization>

   在</system.web>后加入不要驗(yàn)證就能使用數(shù)據(jù)庫的頁面,用于在該頁訪問數(shù)據(jù)庫,察看是否存在該用戶。
     <location path="Reg.aspx">
       <system.web>
         <authorization>
           <allow users="*"/>
         </authorization>
       </system.web>
     </location>

  (2)在代碼中按普通方式,例如要求對(duì)方輸入信息查找數(shù)據(jù)庫或者XML進(jìn)行驗(yàn)證,驗(yàn)證通過后,執(zhí)行這句就表示驗(yàn)證通過同時(shí)跳會(huì)開始進(jìn)入的頁面
      System.Web.Security.FormsAuthentication.RedirectFromLoginPage(userName,true);
      注銷用 System.Web.Security.FormsAuthentication.SignOut();   
      如果不想跳回原處,可以先授權(quán)再redirect到其他頁面  System.Web.Security.FormsAuthentication.SetAuthCookie();
<返回>

11.Asp網(wǎng)頁的EnableViewState屬性對(duì)網(wǎng)頁性能的影響

    ViewState主要是在提交以后回顯用的,它只有在頁面中的數(shù)據(jù)是提交到本頁時(shí)才有用,在這個(gè)時(shí)候,比如Textbox,你用EnableViewState="false",后臺(tái)同樣可以得到數(shù)據(jù),但由于你提交到本頁,所以提交以后此Textbox中為空;而如果用EnableViewState="true",則提交以后返回時(shí)頁面中Textbox中為你提交以前的數(shù)據(jù)。
    另外,除了頁面Page中的EnableViewState,每個(gè)可以提交的控件,Textbox、Dropdownlist都有EnableViewState屬性。實(shí)際上,回發(fā)的數(shù)據(jù)并不依賴于ViewState?;匕l(fā)的控件都實(shí)現(xiàn)了IPostBackDataHandler接口,該接口的LoadPostData方法中,會(huì)對(duì)返回的值和ViewState中的值進(jìn)行判斷,如果改變了的話,調(diào)用RaisePostDataChangedEvent方法觸發(fā)相應(yīng)的事件(對(duì)于TextBox來說就是TextChanged事件)。
    如果你把EnableViewState="False",LoadPostData方法中返回的值始終會(huì)和文本框的默認(rèn)值比較大小,也就是說,如果你在頁面TextBox中改變值以后,每次你點(diǎn)按鈕提交窗口都會(huì)觸發(fā)TextBox的TextChanged事件LoadPostData中如果返回的值和ViewState中的值不同的話,將把TextBox的值設(shè)置成返回的值這就是你看到的結(jié)果 。
    在很多情況下,把EnableViewState設(shè)為false,可以提高應(yīng)用程序的性能。特別在等待后臺(tái)把數(shù)據(jù)填充到DataGrid的情況下。如果這個(gè)時(shí)候設(shè)為true,那么cpu的時(shí)間都浪費(fèi) 在序列化數(shù)據(jù)到 ViewState 中。
     每個(gè)控件(在標(biāo)記上):sp:datagrid EnableViewState="false" ?/> 
     每個(gè)頁面(在指令中): <%@ Page EnableViewState="False" ?%> 
     每個(gè)應(yīng)用程序(在 web.config 中): <Pages EnableViewState="false" ?/> 
    更多請(qǐng)查看微軟中國

<返回>

12.Web打印文檔

<!--語言無關(guān) 保存成 .HTML-->
<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>網(wǎng)絡(luò)打印模板頁</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 這個(gè)屬性可以在打印時(shí)有效-->
<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=頁面設(shè)置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印預(yù)覽 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>這樣的報(bào)表</p>
<p>對(duì)一般的要求就夠了。</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>這樣的報(bào)表</p>
<p>對(duì)一般的要求就夠了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>


在基于框架的網(wǎng)頁打印時(shí),用如下函數(shù)可以打印某個(gè)框架內(nèi)的網(wǎng)頁
<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");
   }//設(shè)置輸出流為簡體中文
   Response.ContentType = "application/ms-excel";//設(shè)置輸出文件類型為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控件,也可以是動(dòng)態(tài)生成的HtmlTable  <---唯一需要修改的地方
   Response.Write(oStringWriter.ToString());
   Response.End();

<返回>

JSP
1.引入其他包和設(shè)置Html參數(shù)
  
  字體<%@ page lanage="java"%>
  <%@ page import="java.io.*","java.util.Date"%>
  <%@ page contentType="text/html; charset=GBK" %>
  <%@ page buffer="24kb"%>

<返回>

2.包含文件,同時(shí)帶設(shè)置參數(shù)

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

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

<返回>

3.使用頁面跳轉(zhuǎn)并帶參數(shù)

  <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. 轉(zhuǎn)為為數(shù)字

   number=Double.parseDouble(textContent);

<返回>

6. 讀取中文

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

<返回>

7.Request對(duì)象(讀取頁面或者Form參數(shù))

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

<返回>

8.Response對(duì)象和out對(duì)象(輸出值)

  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連接數(shù)據(jù)庫

一、jsp連接Oracle8/8i/9i數(shù)據(jù)庫(用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為你的數(shù)據(jù)庫的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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 
二、jsp連接Sql Server7.0/2000數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫的 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 
三、jsp連接DB2數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫名 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 

四、jsp連接Informix數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫名 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 
五、jsp連接Sybase數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫名 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 
六、jsp連接MySQL數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫名 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%rs.close(); 
stmt.close(); 
conn.close(); 
%> 
</body> 
</html> 
七、jsp連接PostgreSQL數(shù)據(jù)庫 
<%@ 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為你的數(shù)據(jù)庫名 
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()) {%> 
您的第一個(gè)字段內(nèi)容為:<%=rs.getString(1)%> 
您的第二個(gè)字段內(nèi)容為:<%=rs.getInt(2)%> 
<%}%> 
<%out.print("數(shù)據(jù)庫操作成功,恭喜你");%> 
<%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)在建立工程時(shí)候,ActiveX Dll方式建立工程

(2)添加一個(gè)類,會(huì)參數(shù)如下代碼
Option Explicit

Private Sub Class_Initialize()  ‘構(gòu)造函數(shù)

End Sub

Private Sub Class_Terminate()  ‘析構(gòu)函數(shù)

End Sub
(3)添加自己的函數(shù)
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等內(nèi)建對(duì)象)
Visual Basic工程

  創(chuàng)建組件的步驟是:啟動(dòng)Visual Basic,在對(duì)話框提示時(shí),選擇要?jiǎng)?chuàng)建的工程類型,這里選擇ActiveX DLL:


設(shè)置工程的屬性

  創(chuàng)建工程的名字為Project1,它包含一個(gè)單獨(dú)的類模塊叫做class1。這些就足夠了。點(diǎn)擊菜單“Project/Project1 Properties”,在出現(xiàn)的如下所示畫面中設(shè)置工程的屬性:


  在General/Tab頁面上有一對(duì)需要注意的信息。首先,工程名Project Name已經(jīng)改變?yōu)锳SPToday,這將形成調(diào)用名字的第一個(gè)部分,這個(gè)調(diào)用的名字就是被ASP頁面使用的CreateObject的名字。這里還選擇了Unattended Execution選項(xiàng),從而禁止了圖形界面的交互(比如錯(cuò)誤信息對(duì)話框),這么做,有可能導(dǎo)致IIS錯(cuò)誤。

 

  在Make頁面唯一發(fā)生重要變化的是設(shè)置Auto Increment選項(xiàng),這樣做,當(dāng)程序編譯后,組件的版本號(hào)就會(huì)提升。調(diào)試程序時(shí),知道組件的版本號(hào)是非常有用的,特別是當(dāng)擁有一個(gè)source safe系統(tǒng)時(shí),不過這是另外的話題。

 

  編譯(Compile)頁面是選擇讓編譯器如何創(chuàng)建組件的地方。在這里選擇Optimize For Small Code,因?yàn)槲乙學(xué)eb服務(wù)器得到它能得到的最多內(nèi)存。這個(gè)頁面真正重要的選項(xiàng)是DLL基礎(chǔ)地址,這和計(jì)算機(jī)調(diào)入組件相關(guān)的代碼庫的方式有關(guān)。做為一個(gè)32位的系統(tǒng),會(huì)留下2兆字節(jié)的內(nèi)存裝入代碼。你要設(shè)置的基礎(chǔ)地址必須是建立在64K基礎(chǔ)上,用英語方式表達(dá)出來就是需要設(shè)置類似 &Hxxxx0000 的數(shù)值,xxxx表示從1100到7FFF的16進(jìn)制數(shù)字。


在Component頁面,初始的版本兼容性默認(rèn)是Project compatibility,如果不編譯成第一個(gè)版本,這將會(huì)是不錯(cuò)的。當(dāng)編譯時(shí),為了有利于注冊(cè)表,就應(yīng)該改變?yōu)锽inary Compatibility,如上圖所示。請(qǐng)查閱在線幫助得到關(guān)于這個(gè)復(fù)雜項(xiàng)目的詳細(xì)資料。

設(shè)置工程的引用

  完成了工程屬性的選擇,下一步就是設(shè)置組件運(yùn)行的ASP環(huán)境。通過引用對(duì)話框?qū)崿F(xiàn)這一步。選擇菜單“Project / References”,出現(xiàn)一個(gè)對(duì)話框,選擇組件需要的庫,在這里選擇“Microsoft Active Server Pages Object Library”。


  通過上述引用,在程序中就可以訪問ScriptingContext對(duì)象,從而能夠使用在ASP頁面中的5個(gè)對(duì)象:Request, Response, Session, Application 和 Server。

  如果在列表中找不到“Microsoft Active Server Pages Object Library”,點(diǎn)擊“Browse”按鈕定位尋找。ASP庫引用實(shí)際上就是一個(gè)后綴為.tlb的文件,默認(rèn)的路徑應(yīng)該位于:\Program Files\Microsoft Visual Studio\ Common IDE\IDE98\ASP.TLB。 
在組件中命名對(duì)象

  在開始編程前,工程的唯一類模塊class1,實(shí)在應(yīng)該含有一個(gè)更有意義的名字。在工程瀏覽(Project Explorer)窗口中選擇類項(xiàng)目:


 ?。ㄈ绻诰幊汰h(huán)境中看不到這個(gè)窗口,按“Ctrl+R”組合鍵調(diào)出它)在上面的窗口中就可以修改類的名字屬性,接著出現(xiàn)屬性對(duì)話框。


  修改名字為VisitorID。如果看不到這個(gè)對(duì)話框,按F4顯示它。

編制代碼

  到此為止,已經(jīng)為組件設(shè)置了足夠的屬性,建立好了在ASP頁面中調(diào)用組件實(shí)例的基礎(chǔ)。但是,還需要一個(gè)接口方法。下面的圖表顯示了將要建立的接口(用長方形描述對(duì)象的方法,用園描述屬性)。


在Visual Basic中,打開類VisitorID的代碼編輯器(在工程瀏覽器中雙擊它的圖標(biāo))。

《1》首先建立類的一些變量聲明:
Private mstrError As String
Private ojbSContext As ScriptingContext  ‘定義了一個(gè)ScriptingContext類型的對(duì)象變量,ASP處理器根據(jù)這個(gè)應(yīng)用傳遞給組件。
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》其次定義類的函數(shù):

 (1)首先看看OnStart,用于初始化與ASP內(nèi)置對(duì)象的連接(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,并存儲(chǔ)引用到事先聲明的變量中。
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)自定義函數(shù)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
   可以通過對(duì)類按右鍵,選擇 Add -> Class Module 可視化地添加函數(shù)和屬性

編譯組件和分發(fā)組件

  為了使用新組件,必須將之生成DLL文件。選擇菜單“File/make ASPToday.dll ...”,接著選擇生成組件的路徑。

  組件創(chuàng)建完成后,就要建立一個(gè)組件分發(fā)軟件包。除了Visual Studio自帶的,有許多第3方工具可以做這件事情,它們都提供了強(qiáng)大的向?qū)韼椭⒁粋€(gè)安裝程序,從而在Web服務(wù)器上安裝組件。
    
    也可以手動(dòng)發(fā)布,在命令提示符中輸入 regsvr32 c:\test\fc1.dll
    手動(dòng)卸載,在命令提示符中輸入       regsvr32 c:\test\fc1.dll /u

在ASP頁面中使用組件

  要實(shí)現(xiàn)組件要完成的任務(wù)“設(shè)置Cookie和到期時(shí)間”,需要在頁面主體(Body)送到瀏覽器之前,在HTTP頭部完成GUID的計(jì)算。執(zhí)行下面的代碼將足夠?yàn)闉g覽器設(shè)置一個(gè)永久的GUID。

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

  創(chuàng)建這個(gè)獨(dú)立組件的簡單對(duì)象,足夠可以完成要求的任務(wù)。這樣做,就保證了Server.CreateObject方法不僅創(chuàng)建了一個(gè)組件的實(shí)例,而且將檢查組件的一對(duì)方法:OnStartPage()和 OnEndPage(),它們將在適當(dāng)?shù)臅r(shí)候被執(zhí)行。這是創(chuàng)建ASP組件、訪問ASP內(nèi)在對(duì)象的關(guān)鍵。

如:組件編譯后,又要修改,發(fā)生”權(quán)限被拒絕,’f:\csdn\fcom.dll’”等等的錯(cuò)誤。


修改組件時(shí)權(quán)限問題的解決

  可以使用以下幾種方式來解決
  1. 重新啟動(dòng)iis.
    在控制面板中找到管理工具->internet信息服務(wù)->右鍵點(diǎn)擊左邊樹圖第二層本地計(jì)算機(jī)->所有任務(wù)->重新啟動(dòng)IIS即可,這個(gè)操作需要一點(diǎn)時(shí)間。
    此時(shí)你可以看到這個(gè)dllhost.exe的進(jìn)程已經(jīng)關(guān)閉
  2. 針對(duì)單個(gè)網(wǎng)站或者虛擬目錄的重啟
     在控制面板中找到管理工具->internet信息服務(wù)->找到你的組件運(yùn)行的虛擬目錄。->右鍵屬性->第一項(xiàng)虛擬目錄中->應(yīng)用程序保護(hù)->點(diǎn)擊卸載即可。此時(shí)你可以看到這個(gè)dllhost.exe的進(jìn)程已經(jīng)關(guān)閉
  3. 如果你覺得麻煩,直接在Windows任務(wù)管理器中結(jié)束該進(jìn)程(有時(shí)是多個(gè)進(jìn)程)既可。不過要多結(jié)束幾次(平均3次可以得手)。
  4. 最后一種方法
     在控制面板中找到管理工具->組件服務(wù)->在樹圖中點(diǎn)擊計(jì)算機(jī),我的電腦,正在運(yùn)行的進(jìn)程->IIS Out-Of-Process Pooled Applications(2860)->右鍵關(guān)閉即可

<返回>


3. 在VB組件里面添加對(duì)數(shù)據(jù)庫的訪問

(1)在WebCVO項(xiàng)目中,可以通過  Private mobjDataAccess As New uti_DataCOM.DataAccess 構(gòu)建對(duì)數(shù)據(jù)庫的訪問
例如 
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)在其他地方通過如下方法實(shí)現(xiàn)

設(shè)置工程的引用

  選擇菜單“Project / References”,出現(xiàn)一個(gè)對(duì)話框,選擇組件需要的庫,在這里選擇“Microsoft ActiveX Data Objects 2.7 Library”,如果沒有這個(gè)版本的,選擇其他版本的ADO library。

創(chuàng)建數(shù)據(jù)庫對(duì)象
 
  這里的數(shù)據(jù)庫對(duì)象不要用server來創(chuàng)建,而改為直接創(chuàng)建?;蛘哂脜?shù)方式從asp傳入已經(jīng)建立好的連接。

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.函數(shù)返回多個(gè)值和數(shù)組型屬性

   Dim a(3) 
     
    Public Property Get MyArray() As Variant 
     a(0) = 1 
     a(1) = 2 
     a(2) = 3 
     MyArray = a() 
    End Property 
   調(diào)用時(shí)為: 
   Dim n As New Class1 
     
   Print n.MyArray(1)

<返回>

5.在VB控件中編寫對(duì)文件的讀寫

folderName = 臨時(shí)文件的目錄
todayString = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())
     ‘如果定義了格式化日期的函數(shù)用   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

<返回>
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
flex的常用用法二十條(轉(zhuǎn)載) - Stay foolish,Stay hungrey。...
Jsp中調(diào)用Oracle存儲(chǔ)過程的小例子
jsp 連接access數(shù)據(jù)庫實(shí)例
利用asp實(shí)現(xiàn)網(wǎng)站總訪問量代碼
用ASP開發(fā)一個(gè)在線考試系統(tǒng)
怎么通過jsp在網(wǎng)頁上把數(shù)據(jù)庫的數(shù)據(jù)以表格形式顯示出來?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服