欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Asp深度揭密(上)
Asp深度揭密(上) 收藏此頁(yè)到茶秀網(wǎng)摘
作者: unknown   www.ASPCool.com 時(shí)間:2005-10-23 上午 12:51:21  閱讀次數:1023

     一、Asp基本知識
  
  1.Asp是Active Server Pages的簡(jiǎn)稱(chēng),是解釋型的腳本語(yǔ)言環(huán)境;
  2.Asp的運行需要Windows操作系統,9x下需要安裝PWS;而NT/2000/XP則需要安裝Internet Information Server(簡(jiǎn)稱(chēng)IIS);
  3.Asp和JSP的腳本標簽是“<%%>”,PHP的則可以設定為多種;
  4.Asp的注釋符號是“‘”;
  5.使用附加組件,可以擴展Asp的功能。
  
  例子:
  
  HelloWorld_1.asp
  <%="Hello,world"%>
  
  效果:
  Hello,world
  
  
  HelloWorld_2.asp
  <%
  for i=1 to 10
  response.write "Hello,world"
  next
  %>
  
  效果:
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  Hello,world
  
  注意:Asp不區分大小寫(xiě);變量無(wú)需定義也可使用,轉換方便;語(yǔ)法檢查很松。
  
  
  二、Asp內置對象的使用:
  
  可以使用下面的任何ASP內置對象,而不必在A(yíng)SP腳本中特別聲明。
  
  1. Request:
  
  定義:可用來(lái)訪(fǎng)問(wèn)從瀏覽器發(fā)送到服務(wù)器的請求信息,可用此對象讀取已輸入HTML表單的信息。
  
  集:
  Cookies:含有瀏覽器cookies的值
  Form:含有HTML表單域中的值
  QueryString:含有查詢(xún)字符串的值
  ServerVariables:含有頭和環(huán)境變量中的值
  
  例子:
  
  request_url.asp
  <%
  ‘獲取用戶(hù)輸入,并存入變量
  user_id=request.querystring("user_id")
  user_name=request.querystring("user_name")
  
  ‘判斷用戶(hù)輸入是否正確
  if user_id="" then
  response.write "User_id is null,please check it"
  response.end
  end if
  if user_name="" then
  response.write "User_name is null,please check it"
  response.end
  end if
  
  ‘打印變量
  response.write user_id&"<br>"
  response.write user_name
  %>
  
  效果:
  當訪(fǎng)問(wèn)http://10.1.43.238/course/request_url.asp?user_name=j時(shí):
  User_id is null,please check it
  當訪(fǎng)問(wèn)http://10.1.43.238/course/request_url.asp?user_name=j&user_id=my_id時(shí):
  my_id
  j
  
  思考:變量是如何在URL中傳遞和被Asp頁(yè)面獲取的?
  
  
  request_form.htm
  <style type="text/css">
  <!--
  .input {background-color: #FFFFFF; border-bottom: black 1px solid;border-left: black 1px solid; border-right: black 1px solid;border-top: black 1px solid; color: #000000;font-family: Georgia; font-size: 9pt;color: midnightblue;}
  a:link {color: #1B629C; text-decoration: none}
  a:hover {color: #FF6600; text-decoration: underline}
  a:visited {text-decoration: none}
  -->
  </style>
  
  <center>
  <form name="course" action="request_form.asp" method="post">
  User_id:<input type="text" name="user_id" maxlength="20" class="input"><br><br>
  User_name:<input type="text" name="user_name" maxlength="30" class="input">
  </form>
  <br><br>
  <a href="javascript:document.course.submit();"> 提 交 </a>
  </center>
  
  request_form.asp
  <%
  ‘獲取用戶(hù)輸入,并存入變量
  user_id=request.form("user_id")
  user_name=request.form("user_name")
  
  ‘判斷用戶(hù)輸入是否正確
  if user_id="" then
  response.write "User_id is null,please check it"
  response.end
  end if
  if user_name="" then
  response.write "User_name is null,please check it"
  response.end
  end if
  
  ‘打印變量
  response.write user_id&"<br>"
  response.write user_name
  %>
  
  注意:form的action的指向,request_form.asp和request_url.asp在源代碼上的區別?
  
  2. Response:
  
  定義:用來(lái)向瀏覽器回發(fā)信息,可用此對象從腳本向瀏覽器發(fā)送輸出。
  
  集:
  Cookies:在瀏覽器中加入一個(gè)cookie
  
  方法:
  End:結束腳本的處理
  Redirect:將瀏覽器引導至新頁(yè)面
  Write:向瀏覽器發(fā)送一個(gè)字符串
  
  屬性:
  Buffer:緩存一個(gè)ASP
  CacheControl:由代理服務(wù)器控制緩存
  ContentType: 規定響應的內容類(lèi)型
  Expires:瀏覽器用相對時(shí)間控制緩存
  ExpiresAbsolute:瀏覽器用絕對時(shí)間控制緩存
  
  例子:
  
  response_redirect.asp
  <%
  ‘去google看看吧
  response.redirect "http://www2.google.com"
  response.end
  %>
  
  
  response_cookies.asp
  <%
  ‘設置和讀取cookies
  response.cookies("time_now")=now()
  response.write request.cookies("time_now")
  %>
  
  效果:
  當訪(fǎng)問(wèn)http://10.1.43.238/course/response_cookies.asp時(shí):
  2002-9-1 16:20:40
  
  
  response_buffer.asp
  <%‘response.buffer=true%>
  <a href="a">a</a>
  <%response.redirect "request_form.htm"%>
  
  效果:
  ①.當關(guān)閉IIS的緩沖功能,訪(fǎng)問(wèn)該頁(yè)面時(shí)出錯
  a
  答復對象 錯誤 ‘ASP 0156 : 80004005‘
  頭錯
  /course/response_buffer.asp,行3
  HTTP 頭已經(jīng)寫(xiě)入到 客戶(hù)瀏覽器。任何 HTTP 頭的修改必須在寫(xiě)入頁(yè)內容之前。
  ②.當關(guān)閉IIS的緩沖功能,去掉文件第一行的注釋?zhuān)瑒t頁(yè)面重定向成功
  ③.當打開(kāi)IIS的緩沖功能,無(wú)論是否去掉文件第一行的注釋?zhuān)?yè)面重定向都成功
  
  3. Server
  
  定義:可在服務(wù)器上使用不同實(shí)體函數,如在時(shí)間到達前控制腳本執行的時(shí)間。還可用來(lái)創(chuàng )建其他對象。
  
  方法:
  CreateObject:創(chuàng )建一個(gè)對象實(shí)例
  HTMLEncode:將字符串轉化為使用特別的HTML字符
  MapPath:把虛擬路徑轉化成物理路徑
  URLEncode:把字符串轉化成URL編碼的
  ScriptTimeout:在終止前,一個(gè)腳本允許運行的秒數
  
  例子:
  
  server_htmlencode.asp
  <%
  ‘html encode
  response.write server.htmlencode("a""time_now")
  %>
  
  效果:
  a"time_now
  查看源文件時(shí)顯示為:a"time_now
  
  思考:為什么不是a""time_now這種效果?源文件是怎么了?
  
  
  server_mappath.asp
  <%
  ‘mappath
  response.write server.mappath("server_mappath.asp")
  %>
  
  效果:
  G:\asp_www\test\course\server_mappath.asp
  
  思考:如何獲取站點(diǎn)根目錄的實(shí)際路徑?如何獲取某個(gè)目錄的實(shí)際路徑?
  
  
  server_urlencode.asp
  <%
  ‘url encode
  response.write server.urlencode("a\time_now")
  %>
  
  效果:
  a%5Ctime%5Fnow
  
  4. Application
  
  定義:用來(lái)存儲、讀取用戶(hù)共享的應用程序信息,如可以用此對象在網(wǎng)站的用戶(hù)間傳送信息,當服務(wù)器重啟后信息丟失。
  
  方法:
  Lock:防止其它用戶(hù)訪(fǎng)問(wèn)Application集
  Unlock:使其它用戶(hù)可以訪(fǎng)問(wèn)Application集
  
  事件:
  OnEnd:由終止網(wǎng)絡(luò )服務(wù)器、改變Global.asa文件觸發(fā)
  OnStart:由應用程序中對網(wǎng)頁(yè)的第一次申請觸發(fā)
  
  例子:
  
  application_counter.asp
  <%
  ‘一個(gè)使用Application制作的簡(jiǎn)單計數器
  Application.lock
  Application("clicks")=Application("clicks")+1
  Application.unlock
  
  response.write "您是本站第 "&Application("clicks")&" 位訪(fǎng)客!"
  response.write "<br><br>您來(lái)自 "&request.servervariables("remote_addr")
  %>
  
  效果:
  您是本站第 1 位訪(fǎng)客!
  
  您來(lái)自 10.1.43.238
  
  思考:本例中lock和unlock有何作用?
  
  5. Session
  
  定義:存儲、讀取特定用戶(hù)對話(huà)信息,如可存儲用戶(hù)對網(wǎng)站的訪(fǎng)問(wèn)信息,當服務(wù)器重啟后信息丟失。
  
  方法:
  Abandon:處理完當前頁(yè)面后,結束一個(gè)用戶(hù)會(huì )話(huà)
  
  屬性:
  Timeout:用戶(hù)會(huì )話(huà)持續時(shí)間(分鐘數)
  
  事件:
  OnEnd:在Session Timeout時(shí)間以外,用戶(hù)不再申請頁(yè)面觸發(fā)該事件
  OnStart:由用戶(hù)對網(wǎng)頁(yè)的第一次申請時(shí)觸發(fā)
  
  例子:
  
  session_counter.asp
  <%
  ‘一個(gè)使用Session制作的簡(jiǎn)單計數器
  session("clicks")=session("clicks")+1
  
  response.write "您是本站第 "&session("clicks")&" 位訪(fǎng)客!"
  response.write "<br><br>您來(lái)自 "&request.servervariables("remote_addr")
  %>
  
  效果:
  您是本站第 1 位訪(fǎng)客!
  
  您來(lái)自 10.1.43.238
  
  思考:既然session和application都能做到計數,那它們之間有什么區別?如果要做到滿(mǎn)100重新開(kāi)始計數如何實(shí)現?
  
  三、使用Asp操作數據庫:
  
  1.通過(guò)ODBC或者OLE方式連接的區別?
  
  現在有兩種連接數據庫的方法。一方面,可以用ODBC產(chǎn)生一個(gè)連接,這種連接與任何有ODBC驅動(dòng)器的數據庫(即基本上是市場(chǎng)上所有的數據庫)兼容;另一方面,可以用原始OLE DB提供商產(chǎn)生一個(gè)連接。
  
  該用哪個(gè)提供商?盡可能用原始OLE DB提供商,因為它提供了對數據更有效的訪(fǎng)問(wèn)。Microsoft正逐步用OLE DB取代ODBC標準,應該僅僅在沒(méi)有原始OLE DB提供商時(shí)使用ODBC。
  
  ⑴.用ODBC方式連接SQL Server:
  ①.配置ODBC
  ②.連接代碼:
  conn_odbc.asp
  <%
  Set Conn = Server.CreateObject("ADODB.Connection")
  ‘Conn.Open "DSN=course_dsn;UID=course_user;PWD=course_password;DATABASE=course"
  Conn.Open "course_dsn","course_user","course_password"
  %>
  注意:在配置MyDSN時(shí)若指定默認數據庫為course則上述代碼作用想同,否則第二行的連接方式更有靈活性,可以指定連接某個(gè)數據庫(當然,前提是course_user對這個(gè)數據庫有操作權限)。
  
  ⑵.用OLE方式連接SQL Server:
  conn_ole.asp
  <%
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=10.1.43.238,2433; UID=course_user;PWD=course_password;DATABASE=course"
  %>
  
  2.操作數據庫:Connection和Recordset
  
  聯(lián)合使用connection和recordset操作數據庫,或者只使用connection操作數據庫。
  
  例子:
  
  ⑴.聯(lián)合使用connection和recordset操作數據庫
  
  use_db_1.asp
  <%
  Set conn=Server.CreateObject("ADODB.Connection") ‘創(chuàng )建連接數據庫的對象
  conn.Open "course_dsn","course_user","course_password" ‘使用該對象連接數據庫
  Set rs=Server.CreateObject("ADODB.RecordSet") ‘創(chuàng )建記錄集對象
  rs.Open "select * from user_info",conn,1,1 ‘使用記錄集對象打開(kāi)數據庫
  if rs.recordcount>0 then ‘如果有記錄
  response.write "User_id User_name<br>"
  for i=1 to rs.recordcount ‘循環(huán)讀取所有紀錄
  response.write rs("id")&" "&rs("user_name")&"<br>"
  ‘向瀏覽器輸出紀錄的字段
  rs.movenext ‘指針下移一行
  if rs.eof then exit for ‘如果到達記錄集底部則退出循環(huán)
  next
  end if
  %>
  
  效果:
  User_id User_name
  1 ahyi
  3 test
  
  
  ⑵.只使用connection操作數據庫:
  
  use_db_2.asp
  <%
  Set conn=Server.CreateObject("ADODB.Connection") ‘創(chuàng )建連接數據庫的對象
  conn.Open "course_dsn","course_user","course_password" ‘使用該對象連接數據庫
  conn.execute "delete from user_info"
  %>
  
  效果:
  user_info表中所有數據被刪除
  
  思考:兩種方式有和區別?各應用于什么場(chǎng)合?
  
  3.如何使用事務(wù)處理、存儲過(guò)程和視圖?
  
  ⑴.使用存儲過(guò)程
  
  ①.定義好存儲過(guò)程
  
  CREATE PROCEDURE [output_1]
  @sid int output
  AS
  set @sid=2
  
  CREATE PROCEDURE [return_1]
  (@user_name varchar(40),@password varchar(20))
  AS
  if exists(select id from user_info where user_name=@user_name and password=@password)
  return 1
  else
  return 0
  
  CREATE PROCEDURE [user_info_1]
  (@user_name varchar(40),@password varchar(20))
  AS
  select id from user_info where user_name=@user_name and password=@password
  
  CREATE PROCEDURE [user_info_2]
  (@user_name varchar(40),@password varchar(20))
  AS
  SET XACT_ABORT ON
  BEGIN TRANSACTION
  delete from user_info where user_name=@user_name and password=@password
  COMMIT TRANSACTION
  SET XACT_ABORT OFF
  
  CREATE PROCEDURE [user_info_3] AS
  select * from user_info
  
  ②.在A(yíng)sp中調用
  
  use_proc.asp
  <!-- #include virtual="/adovbs.inc" -->
  <%
  Set conn=Server.CreateObject("ADODB.Connection")
  conn.Open "course_dsn","course_user","course_password"
  
  ‘使用recordset調用帶兩個(gè)輸入參數和返回紀錄集的存儲過(guò)程
  ‘CREATE PROCEDURE [user_info_1]
  ‘(@user_name varchar(40),@password varchar(20))
  ‘AS
  ‘select id from user_info where user_name=@user_name and password=@password
  response.write "普通的調用方法:<br>"
  set rs=server.createobject("adodb.recordset")
  sql="user_info_1 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘"
  rs.open sql,conn,1,1
  response.write rs("id")&"<br>"
  rs.close
  
  ‘使用recordset調用無(wú)輸入參數,返回紀錄集的存儲過(guò)程,可以使用recordcount等屬性
  ‘CREATE PROCEDURE [user_info_3] AS
  ‘select * from user_info
  response.write "<br>返回紀錄集,可以使用recordcount等屬性:"
  sql="exec user_info_3"
  rs.open sql,conn,1,1
  for i=1 to rs.recordcount
  response.write "<br>"&rs("user_name")
  rs.movenext
  next
  rs.close
  set rs=nothing
  
  ‘使用command調用帶輸出參數的存儲過(guò)程
  ‘CREATE PROCEDURE [output_1]
  ‘@sid int output
  ‘AS
  ‘set @sid=2
  response.write "<br><br>調用帶輸出參數的存儲過(guò)程:<br>"
  set cmd=server.createobject("adodb.command")
  cmd.activeconnection=conn
  cmd.commandtext = "output_1"
  cmd.parameters.append cmd.createparameter("@sid",adinteger,adparamoutput)
  cmd("@sid")=10
  cmd.execute()
  bbb=cmd("@sid")
  response.write bbb&"<br>"
  set cmd=nothing
  
  ‘使用command調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程
  ‘CREATE PROCEDURE [return_1]
  ‘(@user_name varchar(40))
  ‘AS
  ‘if exists(select id from user_info where user_name=@user_name)
  ‘return 1
  ‘else
  ‘return 0
  response.write "<br>調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程:<br>"
  set cmd=server.createobject("adodb.command")
  cmd.activeconnection=conn
  cmd.commandtype = adcmdstoredproc
  cmd.commandtext = "return_1"
  cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue)
  cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40)
  cmd.parameters.append cmd.createparameter("@password",advarchar,adparaminput,20)
  cmd("@user_name")="tuth"
  cmd("@password")="yyuyu"
  cmd.execute()
  rrr=cmd("@return_value")
  response.write rrr
  set cmd=nothing
  
  conn.close
  set conn=nothing
  %>
  
  效果:
  訪(fǎng)問(wèn)http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttt時(shí),出現如下
  
  普通的調用方法:
  12
  
  返回紀錄集,可以使用recordcount等屬性:
  ahyi
  tet
  tuth
  
  調用帶輸出參數的存儲過(guò)程:
  2
  
  調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程:
  1
  
  注意:若存儲過(guò)程無(wú)參數,則調用的sql語(yǔ)句直接為存儲過(guò)程名,一個(gè)參數為“存儲過(guò)程名 參數”,若是多個(gè)參數,則“存儲過(guò)程名 參數1,參數2,……,參數n”;如果在sql語(yǔ)句中加入exec,則在返回的記錄集中可以使用recordcount等屬性;如果想獲得存儲過(guò)程的返回值或輸出參數,可以使用command對象。
  
  ⑵.使用事務(wù)處理
  
  ①.Asp內嵌的事務(wù)支持
  
  例子:
  use_transaction_1.asp
  <%
  ‘Asp中使用事務(wù)
  Set conn=Server.CreateObject("ADODB.Connection")
  conn.Open "course_dsn","course_user","course_password"
  conn.begintrans ‘開(kāi)始事務(wù)
  
  sql="delete from user_info"
  set rs=server.createobject("adodb.recordset")
  rs.open sql,conn,3,3
  if conn.errors.count>0 then ‘有錯誤發(fā)生
  conn.rollbacktrans ‘回滾
  set rs=nothing
  conn.close
  set conn=nothing
  response.write "交易失敗,回滾至修改前的狀態(tài)!"
  response.end
  else
  conn.committrans ‘提交事務(wù)
  set rs=nothing
  conn.close
  set conn=nothing
  response.write "交易成功!"
  response.end
  end if
  %>
  
  ②.數據庫級的事務(wù)
  
  i.創(chuàng )建存儲過(guò)程
  
  CREATE PROCEDURE [user_info_2]
  (@user_name varchar(40),@password varchar(20))
  AS
  SET XACT_ABORT ON
  BEGIN TRANSACTION
  delete from user_info where user_name=@user_name and password=@password
  COMMIT TRANSACTION
  SET XACT_ABORT OFF
  
  ii.在A(yíng)sp中調用
  
  use_transaction_2.asp
  <%
  Set conn=Server.CreateObject("ADODB.Connection")
  conn.Open "course_dsn","course_user","course_password"
  
  sql="user_info_2 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘"
  
  set rs=server.createobject("adodb.recordset")
  rs.open sql,conn,1,1
  set rs=nothing
  conn.close
  set conn=nothing
  %>
  
  討論:兩種方式的優(yōu)劣?
  
  ⑶.使用視圖
  在數據庫中定義好視圖之后,在A(yíng)sp中如同使用一個(gè)表一樣來(lái)使用視圖
  
  4.一個(gè)數據庫分頁(yè)的例子
  
  db_page.asp
  <%
  on error resume next
  Set conn=Server.CreateObject("ADODB.Connection") ‘創(chuàng )建連接數據庫的對象
  conn.Open "course_dsn","course_user","course_password" ‘使用該對象連接數據庫
  set rs=server.createObject("adodb.recordset")
  sql="select * from user_info order by id desc"
  rs.open sql,conn,1,1
  
  if rs.recordcount>0 then ‘如果有記錄
  rs.pagesize=2 ‘每頁(yè)最多顯示2條紀錄
  ‘從URL獲取當前要顯示的頁(yè)
  page=cint(request("page"))
  ‘頁(yè)面參數異常處理
  if page="" then page=1
  if page<1 then page=1
  if page>= rs.pagecount then page=rs.pagecount
  rs.absolutepage=page ‘當前頁(yè)為page參數指定的頁(yè)
  for i=1 to rs.pagesize ‘根據pagesize參數的大小循環(huán)顯示當前頁(yè)中的紀錄
  response.write "User_id:"&rs("id")&"<br>"
  response.write "User_name:"&rs("user_name")&"<br><br>"
  rs.movenext ‘紀錄指針下移
  if rs.eof then exit for ‘如果到達紀錄集底部則退出循環(huán)
  next
  end if
  
  ‘顯示翻頁(yè)按鈕
  if page>1 then
  response.write "<a href="&request.servervariables("document_name")&"?page=1>第一頁(yè)</a> "
  response.write "<a href="&request.servervariables("document_name")&"?page="&(page-1)&">上一頁(yè)</a> "
  end if
  if page<>rs.pagecount then
  response.write "<a href="&request.servervariables("document_name")&"?page="&(page+1)&">下一頁(yè)</a> "
  response.write "<a href="&request.servervariables("document_name")&"?page="&rs.pagecount&">最后一頁(yè)</a> "
  end if
  response.write"頁(yè)碼:"&page&"/"&rs.pagecount
  
  ‘關(guān)閉對象,釋放內存
  rs.close
  set rs=nothing
  conn.close
  set conn=nothing
  %>

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP如何讀取SqlServer庫中的表名,MSSQL,數據庫
二級域名原理以及程序
asp簡(jiǎn)單的搜索引擎代碼
實(shí)例講解asp抓取網(wǎng)上房產(chǎn)信息
asp生成json
asp遍歷excel的所有表名
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久