asp入门实例(ASP基础入门:ADO存取数据库时如何分页显示)

2025-08-13 11:45:01 0

asp入门实例(ASP基础入门:ADO存取数据库时如何分页显示)

大家好,如果您还对asp入门实例不太了解,没有关系,今天就由本站为大家分享asp入门实例的知识,包括ASP基础入门:ADO存取数据库时如何分页显示的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

ASP基础入门:ADO存取数据库时如何分页显示


《动态网站设计十八般武艺 --ASP 篇》一文从第一期至今已和朋友们一起度过了大半个年头,相信通过在这一段时间中的学习、实践到再学习、再实践,大家已经能够熟练运用 ASP 的内建对象、 ActiveX 组件去编写一些基本的 ASP 应用程序。从我收到的朋友们的来信中可以明显的感觉到,大家的 ASP 功力正不断地提升。最近很多朋友来信希望我写一些 ASP 在现实运用中的实例。因此,从本期开始我决定将《动态网站设计十八般武艺 --ASP 篇》的定位从介绍和学习 ASP 基础知识转向到 ASP 实际运行的探讨和深化。应朋友们的要求,在本期中我将给大家着重谈一谈“ADO 存取数据库时如何分页显示”的问题。
什么是 ADO 存取数据库时的分页显示?如果你使用过目前众多网站上的电子公告板程序的话,那你应该会知道电子公告板程序为了提高页面的读取速度,一般不会将所有的帖子全部在一页中罗列出来,而是将其分成多页显示,每页显示一定数目的帖子数,譬如 20 条。这就是数据库查询的分页显示,如果你还不明白,去看看 yahoo 等搜索引擎的查询结果就会明白了。
那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种:
一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。
二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。
两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。
我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记录存放在服务器内存中,然后在进行分页等处理,如果同时有超过 100 个的客户在线查询,那么 ASP 应用程序的执行效率将大受影响。但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的 ASP 程序编写相对第二种方法要简单明了得多。
在这里作者就以我们常见的 ASP BBS 程序为例,来给大家分析一下如何在 BBS 程序里实现分页显示功能,由于我们一般使用的 BBS 程序的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。
进行 ADO 存取数据库时的分页显示,其实就是对 Recordset 的记录进行操作。所以我们首先必须了解 Reordset 对象的属性和方法:
BOF 属性:目前指标指到 RecordSet 的第一笔。
EOF 属性:目前指标指到 RecordSet 的最后一笔。
Move 方法:移动指标到 RecordSet 中的某一条记录。
AbsolutePage 属性:设定当前记录的位置是位于哪一页 AbsolutePosition 属性:目前指标在 RecordSet 中的位置。
PageCount 属性:显示 Recordset 对象包括多少“页”的数据。
PageSize 属性:显示 Recordset 对象每一页显示的记录数。
RecordCount 属性:显示 Recordset 对象记录的总数。
下面让我们来详细认识一下这些重要的属性和方法
一、 BOF 与 EOF 属性
通常我们在 ASP 程序中编写代码来检验 BOF 与 EOF 属性,从而得知目前指标所指向的 RecordSet 的位置,使用 BOF 与 EOF 属性,可以得知一个 Recordset 对象是否包含有记录或者得知移动记录行是否已经超出该 Recordset 对象的范围。
如:
% if not rs.eof then ... %
% if not (rs.bof and rs.eof) %
若当前记录的位置是在一个 Recordset 对象第一行记录之前时, BOF 属性返回 true,反之则返回 false。
若当前记录的位置是在一个 Recordset 对象最后一行记录之后时, EOF 属性返回 true,反之则返回 false。
BOF 与 EOF 都为 False:表示指标位于 RecordSet 的当中。
BOF 为 True:目前指标指到 RecordSet 的第一笔记录。 EOF 为 True:目前指标指到 RecordSet 的最后一笔记录。
BOF 与 EOF 都为 True:在 RecordSet 里没有任何记录。
二、 Move 方法
您可以用 Move 方法移动指标到 RecordSet 中的某一笔记录,语法如下:
rs.Move NumRecords,Start
这里的“rs”为一个对象变量,表示一个想要移动当当前记录位置的 Recordset 对象;“NumRecords”是一个正负数运算式,设定当前记录位置的移动数目;“start”是一个可选的项目,用来指定记录起始的标签。
所有的 Recordset 对象都支持 Move 方法,如果 NumRecords 参数大于零,当前记录位置向末尾的方向移动;如果其小于零,则当前记录位置向开头的方向移动;如果一个空的 Recordset 对象调用 Move 方法,将会产生一个错误。
MoveFirst 方法:将当前记录位置移至第一笔记录。
MoveLast 方法:将当前记录位置移至最后一笔记录。
MoveNext 方法:将当前记录位置移至下一笔记录。 MovePrevious 方法:将当前记录位置移至上一笔记录。
Move 方法:移动指标到第 n 笔记录, n 由 0 算起。
三、 AbsolutePage 属性
AbsolutePage 属性设定当前记录的位置是位于哪一页的页数编号;使用 PageSize 属性将 Recordset 对象分割为逻辑上的页数,每一页的记录数为 PageSize( 除了最后一页可能会有少于 PageSize 的记录数 )。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。
与 AbsolutePosition 属性相同, AbsolutePage 属性是以 1 为起始的,若当前记录为 Recordset 的第一行记录, AbsolutePage 为 1。可以设定 AbsolutePage 属性,以移动到一个指定页的第一行记录位置。
四、 AbsolutePosition 属性
若您需要确定目前指标在 RecordSet 中的位置,您可以用 AbsolutePosition 属性。
AbsolutePosition 属性的数值为目前指标相对於第一笔的位置,由 1 算起,即第一笔的 AbsolutePosition 为 1。
注意 , 在存取 RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。
若要启用 AbsolutePosition,必须先设定为使用用户端 cursor( 指针 ), asp 码如下:
rs2.CursorLocation = 3
五、 PageCount 属性
使用 PageCount 属性,决定 Recordset 对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于 PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 的一页。必须注意也并不是所有的数据提供者都支持此项属性。
六、 PageSize 属性
PageSize 属性是决定 ADO 存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用 AbsolutePage 属性移到其它逻辑页的第一条记录。 PageSize 属性能随时被设定。
七、 RecordCount 属性
这也是一个非常常用和重要的属性,我们常用 RecordCount 属性来找出一个 Recordset 对象包括多少条记录。如:
% totle=RS.RecordCount %
在了解了 Recordset 对象的以上属性和方法后,我们来考虑一下,如何运用它们来达到我们分页显示的目的。首先,我们可以为 PageSize 属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过 RecordCount 属性来确定记录的总数;再用记录总数除以 PageSize 就可得到所显示的页面总数;最后通过 AbsolutePage 属性就能完成对指定页的访问。好象很并不复杂呀,下面让我们来看看程序该如何实现呢?
我们建立这样一个简单的 BBS 应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名; “email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的 DSN 为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下:
\’----BBS 显示帖子分页----
% Sub ShowList() %
%
PgSz=20 \’设定开关,指定每一页所显示的帖子数目,默认为20帖一页
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM message order by ID DESC"
\’查询所有帖子,并按帖子的ID倒序排列
Conn.Open "bbs"
RS.open sql,Conn,1,1
If RS.RecordCount=0 then
response.write " P center对不起,数据库中没有相关信息! /center /P"
else
RS.PageSize = Cint(PgSz) \’设定PageSize属性的值
Total=INT(RS.recordcount / PgSz * -1)*-1 \’计算可显示页面的总数
PageNo=Request("pageno")
if PageNo="" Then
PageNo = 1
else
#p#副标题#e#
PageNo=PageNo+1
PageNo=PageNo-1
end if
ScrollAction = Request("ScrollAction")
if ScrollAction = " 上一页 " Then
PageNo=PageNo-1
end if
if ScrollAction = " 下一页 " Then
PageNo=PageNo+1
end if
if PageNo
1 Then
PageNo = 1
end if
n=1
RS.AbsolutePage = PageNo
Response.Write " CENTER"
position=RS.PageSize*PageNo
pagebegin=position-RS.PageSize+1
if position
RS.RecordCount then
pagend=position
else
pagend= RS.RecordCount
end if
Response.Write " P font color=\’Navy\’ B数据库查询结果: /B"
Response.Write "(共有"RS.RecordCount "条符合条件的信息,显示"pagebegin"-"pagend") /font /p"
Response.Write " TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF"
Response.Write " TR BGCOLOR=#5FB5E2 FONT SIZE=2 TD B主题 /B /TD TD B用户 /B /TD TD BEmail /B /TD TD B发布日期 /B /TD /FONT TR BGCOLOR=#FFFFFF"
Do while not (RS is nothing)
RowCount = RS.PageSize
Do While Not RS.EOF and rowcount 0
If n=1 then
Response.Write " TR BGCOLOR=#FFFFFF"
ELSE
Response.Write " TR BGCOLOR=#EEEEEE"
End If
n=1-n %
TD span style="font-size:9pt" A href=\’view.asp?key= % =RS("ID")%\’ % =RS("subject")% /A /span /td
TD span style="font-size:9pt" % =RS("name")% /A /span /td
TD span style="font-size:9pt" a href="mailto: % =RS("email")%" % =RS("email")% /a /span /TD
TD span style="font-size:9pt" % =RS("postdate")% /span /td
/TR
%
RowCount = RowCount - 1
RS.MoveNext
Loop
set RS = RS.NextRecordSet
Loop
Conn.Close
set rs = nothing
set Conn = nothing
%
/TABLE
FORM METHOD=GET ACTION="list.asp"
INPUT TYPE="HIDDEN" NAME="pageno" VALUE=" % =PageNo %"
%
if PageNo 1 Then
response.write " INPUT TYPE=SUBMIT NAME=\’ScrollAction\’ VALUE=\’ 上一页 \’"
end if
if RowCount = 0 and PageNo
Total then
response.write " INPUT TYPE=SUBMIT NAME=\’ScrollAction\’ VALUE=\’ 下一页 \’"
end if
response.write " /FORM"
End if
%
% End Sub %
相信大家都应该能完全读懂上面的程序,因此作者就不在此详细解释了。值得注意的是在这段程序中运用了一个小技巧
INPUT TYPE="HIDDEN" NAME="pageno" VALUE=" % =PageNo %"
,这是用来在每次调用该 ASP 文件时传递数据的“暗道”,由于我们需要在每次调用程序时传递代表当前页码的参数,可能大家会想到使用 session,但是从节省系统资源和通用性来讲,用这样一个隐藏的 form 来传递数据将会达到更好的效果。#p#副标题#e#

asp生成html程序的网站的实例,请大家提供一个

Asp.net生成htm静态文件的两种途径
现在很多网站特别是资讯类的都把内容生成静态页(htm\html\shtml等),
分别是通过模板(比较常用)和根据url生成(不到万不得以不用,因为这中方式只能获取html的部分):
Asp.net生成静态文件(根据时间自动命名保持,默认扩展名是htm可以自行修改)。
通过收入内容替换模板或者url地址两种方式进行静态文件的生成
templete.htm为模板文件,htm为生成后的静态文件保存位置
这类粘贴出.cs文件
以下为引用的内容:
1 //51aspx.com生成静态页演示文件,转载请保留该信息
2 public partial class _Default : System.Web.UI.Page
3 {
4 protected void Page_Load(object sender, EventArgs e)
5 {
6
7 }
8
9 //根据模板生成,保持在html文件夹中(部分源码搜集于网络)
10 protected void Button1_Click(object sender, EventArgs e)
11 {
12 //源码是替换掉模板中的特征字符
13
14 string mbPath =Server.MapPath("template.htm");
15 Encoding code = Encoding.GetEncoding("gb2312");
16 StreamReader sr = null;
17 StreamWriter sw = null;
18 string str = null;
19
20 //读取
21 try
22 {
23 sr = new StreamReader(mbPath, code);
24 str = sr.ReadToEnd();
25
26 }
27 catch (Exception ex)
28 {
29 throw ex;
30 }
31 finally
32 {
33 sr.Close();
34 }
35
36 //根据时间自动重命名,扩展名也可以自行修改
37 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";
38 str = str.Replace("$title$", txtTitle.Text);//替换Title
39 str = str.Replace("$content$", txtContent.Text);//替换content
40
41 //生成静态文件
42 try
43 {
44 sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
45 sw.Write(str);
46 sw.Flush();
47
48 }
49 catch (Exception ex)
50 {
51 throw ex;
52 }
53 finally
54 {
55 sw.Close();
56 Response.Write("恭喜《a href=htm/"+fileName+" target=_blank》"+fileName+"《/a》已经生成,保存在htm文件夹下!");
57 }
58
59
60 }
61
62
63 //根据Url地址生成静态页保持
64 protected void Button2_Click(object sender, EventArgs e)
65 {
66 Encoding code = Encoding.GetEncoding("utf-8");
67 StreamReader sr = null;
68 StreamWriter sw = null;
69 string str = null;
70
71 //读取远程路径
72 WebRequest temp = WebRequest.Create(txtUrl.Text.Trim());
73 WebResponse myTemp = temp.GetResponse();
74 sr = new StreamReader(myTemp.GetResponseStream(), code);
75 //读取
76 try
77 {
78 sr = new StreamReader(myTemp.GetResponseStream(), code);
79 str = sr.ReadToEnd();
80
81 }
82 catch (Exception ex)
83 {
84 throw ex;
85 }
86 finally
87 {
88 sr.Close();
89 }
90 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";
91
92 //写入
93 try
94 {
95 sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
96 sw.Write(str);
97 sw.Flush();
98
99 }
100 catch (Exception ex)
101 {
102 throw ex;
103 }
104 finally
105 {
106 sw.Close();
107 Response.Write("恭喜《a href=htm/" + fileName + " target=_blank》" + fileName + "《/a》已经生成,保存在htm文件夹下!");
108 }
109
110 }
111 }

只是一个Demo文件,仅供大家参考,也希望有其他生成方式的也讨论一下.

ASP.NET Request对象使用实例浅析

  ASP NET Request对象功能是从客户端得到数据 常用的三种取得数据的方法是 Request Form Request QueryString Request 其第三种是前两种的一个缩写 可以取代前两种情况 而前两种主要对应的Form提交时的两种不同的提交方法 分别是Post方法和Get方法

  ASP NET Request对象的属性和方法比较多 常用的几个为 UserAgent 传回客户端浏览器的版本信息 UserHostAddress 传回远方客户端机器的主机IP 地址 UserHostName 传回远方客户端机器的DNS 名称 PhysicalApplicationPath 传回目前请求网页在Server 端的真实路径

  ASP NET Request对象使用之从浏览器获取数据

  利用ASP NET Request对象方法 可以读取其他页面提交过来的数据 提交的数据有两种形式 一种是通过Form表单提交过来 另一种是通过超级链接后面的参数提交过来 两种方式都可以利用Request对象读取

    ﹤%@ Page Language= C# %﹥    ﹤%       string strUserName = Request;    %﹥   姓名 ﹤%=strUserName%﹥    爱好 ﹤%=strUserLove%﹥    ﹤form action=  method= post ﹥    ﹤P﹥姓名 ﹤input type= TEXT  size=  name= Name ﹥﹤/P﹥    ﹤P﹥兴趣 ﹤input type= TEXT  size=  name= Love ﹥﹤/P﹥   ﹤P﹥﹤input type= submit  value= 提 交 ﹥﹤/P﹥    ﹤/form﹥ 

  ASP NET Request对象使用之得到客户端的信息

  利用Request对象内置的属性 可以得到一些客户端的信息 比如客户端浏览器版本和客户端地址等等

    ﹤%@ Page Language= C# %﹥    客户端浏览器 ﹤%=Request UserAgent %﹥    客户端IP地址 ﹤%=Request UserHostAddress %﹥    当前文件服务端物理路径 ﹤%=Request PhysicalApplicationPath %﹥ 
lishixinzhi/Article/program/net/201311/13165

用ASP做一个案例用户登录界面怎么做啊

给你一个实例,慢慢研究吧:用户登录验证脚本,Chkpwd.asp
以下为引用的内容:
《%
’=======用户登录验证脚本=======
’如果尚未定义Passed对象,则将其定义为false,表示没有通过验证
If IsEmpty(Session("Passed")) Then
Session("Passed")=false
End If
’Session("Passed")=False,表示尚未通过验证,则开始读取从表单传来的验证信息
If Session("Passed")=False Then
UserName=Request.Form("UserName")
UserPwd=Request.Form("UserPwd")
If UserName="" Then
Errmsg="提示:请输入用户名和密码"
Else
’===================连接数据库=====================
Set Conn= Server.CreateObject("ADODB.Connection")
Conn.Connectionstring= "Driver={SQL Server};Server=192.168.1.3;UID=sa;PWD=;Database=zcmrs"
Conn.open
’===================从表log中读取用户数据=====================
’定义RecordSet对象
Set rs=Server.CreateObject("ADODB.Recordset")
’设置Connection对象的ConnectionString
Set rs.ActiveConnection=Conn
’设置游标类型
rs.CursorType=3
’打开记录集
rs.Open "Select username,password from erpuser Where username=’"&UserName&"’"
’===================身份验证======================
If rs.EOF Then
Errmsg="提示:用户不存在或密码错误"
Else
If UserPwd《》rs.Fields("password") Then
Errmsg="提示:登录失败!密码错误?"
Else ’登录成功
Errmsg=""
Session("Passed")=True
Session("UserName")=rs.Fields("username")
’标识用户权限 Session("UserID")=rs.Fields("UserID")
End If
End If
End If
End If
’经过登录不成功,则画出登录表单
If Not Session("Passed")=True Then
%》
《html》
《head》《title》无标题文档《/title》
《style type="text/css"》
《!--
.STYLE1 {font-size: 12px;font-weight:bold;margin-left:120px;outline:double}
--》
《/style》
《style type="text/css"》
《!--
.STYLE2 {font-size: 12px;font-weight:bold;outline:double;color:#FF3333}
--》
《/style》
《/head》
《body leftmargin=0 topmargin=0 marginheight="0" marginwidth="0" bgcolor="#000000"》
《div id=parent style="height:300;width:450;border-style:solid;border-color:#FFFFFF;margin-top:80px;margin-left:25%;margin-right:25%;background-color:#FFFFFF"》
《div id=denglu style="font-size:12px;font-weight:bold;background-color:#0099FF;text-align:center;height:40px;"》《br》ERP系统登录《/div》
《form action="《%=request.ServerVariables("path_info")%》" method="post" name="MyForm" id="MyForm"》
《p class="STYLE1"》用户名:《input name="UserName" type="text" id="UserName" size="18" maxlength="20"》
《/p》
《p class="STYLE1"》密 码:《input name="UserPwd" type="password" id="UserPwd" size="18" maxlength="20"》
《/p》
《p align="center" class="STYLE2"》《%=Errmsg%》 《/p》
《p》 
《input type="submit" align="middle" name="Submit" value="登录系统"》 
《input name="rege" type="button" align="middle" onClick="location=’register.asp’" id="rege" value="注册用户"》
《/p》
《/form》
《/div》
《/body》
《/html》
《%
’《p class="STYLE1"》验证码:《input name="CheckCode" type="text" id="CheckCode" size="6" maxlength="4"》
’《IMG style="MARGIN-RIGHT: 40px" alt="" src="common/getcode.asp"》《/p》
response.End
End If
%》
要访问的页面erp.asp
《以下为引用的内容:
《!--#include file="chkpwd.asp"--》
《body》
《div style=’font-size:12px;font-weight:bold;border:1px solid #001;padding:4px;background:#FFCCFF;margin-top:0;’》欢迎使用ERP查询系统,当前登录用户为:
《%
If Session("Passed")=True Then
Response.Write(Session("UserName"))
End If
%》《a href="logout.asp"》退出系统《/a》
《/div》
《/body》
以上每次打开erp.asp的时候,都首先执行Chkpwd.asp(),这样可以有效防止未授权用户访问指定网页.
logout.asp系统退出
《body》
《%
Session("Passed")=false
Session("UserName")=""
Response.Redirect("index.asp")
%》
《/body》
使用图片提交表单
以下为引用的内容:
《form name="form1" method="post" action=""》
《td align="right"》《input type="image" method="submit" name="submit" src="image/loginin.gif" width="70" height="21" alt="submit"》《/td》
《/form》

ASP文件上传原理分析及实现实例

  摘要 在基于/的应用环境中 上传各种类型的文件一直是困扰用户文件管理应用的难题之一 在HTTP中上传文件有三种机制 RFC PUT和WebDAV 常用的实现方法是利用在RFC 中引入的一个新类型 File以及ADO Stream对象 本文对上述上传方法及实现原理作了论述 并给出了具体解决实例     ASP FILE对象

  当前 基于/模式的应用比较流行 当用户需要将文件传输到上时 常用方法之一是运行FTP并将每个用户的FTP默认目录设为用户的Web主目录 这样用户就能运行FTP客户程序并上传文件到指定的 Web目录 这就要求用户必须懂得如何使用FTP客户程序 因此 这种解决方案仅对熟悉FTP且富有经验的用户来说是可行的 如果我们能把文件上传功能与Web集成 使用户仅用Web就能完成上传任务 这对于他们来说将是非常方便的 但是 一直以来 由于File System Object的仅能传送文本文件的局限 所以ASP最大的难题就是文件上传问题 下面介绍的就是如何在基于HTTP协议的网页中实现文件的上传

   一 通过HTTP上传的三种机制

  通过HTTP上传有三种机制 RFC PUT 和 WebDAV

  PUT 是在HTTP 引入了一个新的HTTP动词 当web收到一个HTTP PUT和对象名字 它将会验证用户 接收HTTP流的内容 并把它直接存入web 由于这可能会对一个web站点造成破坏 并且还会失去HTTP最大的优势 可编程性 在PUT的情况下 自己处理请求 没有空间让CGI或者ASP应用程序介入 唯一让你的应用程序捕获PUT的方法是在低层操作 ISAPI过滤层 由于相应的原因 PUT的应用很有限

  而WebDAV允许web内容的分布式认证与翻译 它引入了几种新的HTTP动词 允许通过HTTP上传 锁定/解锁 登记/检验web内容 Office 中的 Save to web 就是通过WebDAV来实现的 如果你所感兴趣的一切都是上传内容 WebDAV应用得非常出色 它解决了很多问题 然而 如果你需要在你的web应用程序里面上传文件 WebDAV对你就毫无用处可言 象HTTP PUT一样 那些WebDAV的动词是被解释的 而不是web应用程序 你需要工作在ISAPI过滤层来访问WebDAV的这些动词 并在你的应用程序中解释内容

  RFC () 最终被W C在HTML 中接受前 是作为一种建议标准 它是一种非常简单但是功能很强大的想法 在表单字段中定义一个新类型  《INPUT TYPE= FILE 》

    并且在表单本身加入了不同的编码方案 不再使用典型的  《FORM ACTION= formproc asp METHOD= POST 》     而是使用  《FORM ACTION= formproc asp METHOD= POST ENCTYPE= multipart/form data 》

  这种编码方案在传送大量数据的时候 比起缺省的 application/x url encoded 表单编码方案 显得效率要高得多 URL编码只有很有限的字符集 使用任何超出字符集的字符 必须用 %nn 代替 这里的nn表示相应的 个十六进制数字 例如 即使是普通的空格字符也要用 % 代替 而RFC 使用多部分MIME编码 就象通常在e mail消息中看到的那样 不编码来传送大量数据 而只是在数据周围加上很少的简单但实用的头部 主要的厂商都采用了建议的 浏览…… 按钮 用户能很容易的使用本地 打开文件…… 对话框选择要上传的文件

  RFC 仍然将大多数文件上传的灵活方法留给了你的web应用程序 PUT用得很有限 WebDAV对内容的作者很有用 比如FrontPage用户 但是对想在web应用程序中加入文件上传的web开发者来说很少用到 因此 RFC 是在web应用程序中加入文件上传的最好的办法

  在实际应用中 免费提供了Posting Acceptor ASP不懂 multipart/form data 编码方案 取而代之 提供了Posting Acceptor Posting Acceptor是一种在上传完成后 接受REPOST到一个ASP页的ISAPI应用程序

  Sofare Artisans的SA FileUp是最早的商业Active Server之一 几经改进 现在作为一个纯粹的ASP存在

   二 基于ASP的文件上传实现原理分析

  基本原理是 采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出 从中截取出所需的文件数据 以二进制文件方式存盘

  下面是上传文件页面的一个例子()  《》《body》《form name= Upload Method= Post Enctype= multipart/form data Action= Upload asp 》《input type= file name= FileName 》《INPUT TYPE= Submit VALUE= Upload 》《/TD》《/form》《/body》《/》

    程序中使用了文件对象 这样在Upload asp中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据 还包含该文件在用户硬盘上的路径 类型 提交页面的表单等相关信息的描述 这样我们就需从中提取出文件的具体内容 根据分析 数据的头部信息与数据的分界线是两对回车换行符 尾部也有分隔信息 我们可以采用类似以下的方法获取文件数据  Dim FormData FormSize DataStart CLStr DivStrFormSize=Request TotalBytesFormData=Request BinaryRead(FormSize)CLStr=ChrB( )&ChrB( )DataStart=InStrB(FormData CLStr&CLStr)+ 是两对回车换行符的长度DivStr=LeftB(FormData InStrB(FormData CLStr) )DataSize=InStrB(DataStart+ FormData DivStr) DataStart FormData=MidB(FormData DataStart DataSize)    FormData就是文件的内容了     中间根据需要 可进行相应的处理 最后的工作就是将文件保存了 保存的方法可以有两种 一种是利用VB或VC之类程序中的二进制文件操作方法 在工程中加入适当的类型库 最终编译成DLL文件 使用时再将该DLL文件注册就可以了 文件存贮程序如下  Public Function SaveFile(Pathname As String) As String     Dim objContext As ObjectContext     Dim objRequest As Request  Set objContext=GetObjectContext()     Set objRequest=objContext( Request )      以下的一段代码是进行文件存贮的有关操作 Dim FormData() As Byte CLStr DivStr     Dim DataStart As Long DataSize As Long     DataSize=objRequest TotalBytes     Redim FormData(DataSize )     FormData=objRequest BinaryRead(DataSize)     CLStr=ChrB( ) & ChrB( )     DataStart=InStrB(FormData CLStr & CLStr)+     DivStr=LeftB(FormData InStrB(FormData CLStr) )     DataSize=InStrB(DataStart+ FormData DivStr) DataStart     FormData=MidB(FormData DataStart DataSize)      创建一个二进制文件并将FormData写入其中     Open Pathname For Binary As     Put # FormData     Close #     SaveFile= OK!    End Function     第二种方法是利用ADO STREAM中提供的二进制文件操作方法来完成 保存文件的语句是 StreamOBJ SaveToFile (fileName ) 在 这种操作中 我们可以将有关的操作存放在一个类文件中 在应用时 直接将该类文件包含在ASP程序中就可以了 具体处理方法 请参阅有关介绍    三.文件上传实现方法实例   实现文件上传可使用或无方式 对于类 比如说microsoft posting acceptor(简称mpa) 就是公司发布的一个免费 这类的安装也比较方便 对于的mpa 运行它的安装文件就可以了 而一般的dll形式的 我们则需要进行注册 例如 要使用aspcnUP dll 只要在Window 上执行regsvr aspcnUP dll 系统出现注册成功的信息提示就可以使用该了 对于无类 如的无上传类 upload_ xsoft 在使用时 只要在处理程序中包含以下的语句就可以了  《! #include FILE= upload inc 》set upload=new upload_ xSoft 建立上传对象    有关的属性与操作方法 请参阅该的使用手册     下面是詀spcnUP dll为例 上传部分类型文件的源代码(upload asp)  《% @ language= vbscript  Set fileUP=Server CreateObject( aspcn Upload ) fileUP Maxsize=  fileUP Path= d:\upfile  fileUP Upload For i= to fileUP Count  fieldname=fileUP FieldName(i)  If fileUP FileType(fieldname)= zip Or ileUP FileType(fieldname)= rar Then   fileUP Save fieldname  End If  Next Set fileUP=Nothing%》   四.结束语   应用模式还在快速地发展着 在ASP.NET中 已经内置了文件上传的功能 使用非常简单方便 作为一种全新的技术 ASP.NET并不只是ASP的简单升级 它是一个用于Web开发的全新框架 其中包含了许多新的特性 ASP.NET提供了更易于编写 结构更清晰的代码 利用这些代码我们将会更容易地进行再利用和共享 从而开发出更多更实用的程序来 lishixinzhi/Article/program/net/201311/13562

asp cookies用法与cookies实例教程

  如何创建一个Cookie?

  为了创建一个Cookie 您需要使用Response Cookies命令 在下面的例子中 我们将创建一个名为“姓氏” 并指定值“someValue” 它的cookie 《% Response Cookies("lastname") = "Peterson" %》 该Response Cookies命令必须出现在《HTML》标记 否则你需要放在网页顶部以下行

  《% response buffer = true %》

  也可以分配一个Cookie属性 比如设置一个日期时 在Cookie到期 下面的例子创建了一个cookie 将在 天届满的 如果你想在Cookie过期尽快离开你的访客 您必须设定值为 的Expires属性 《% Response Cookies("lastname") = "Peterson" Response Cookies("lastname") Expires = Now + %》 下一个重要属性是域属性 这个cookie只能读取域它源于 这是默认设置为其所在创建域 但您可以根据需要改变它 在有一个例子

  《% Response Cookies("lastname") Domain = " %》

  另外两个重要的属性是路径和安全性能 Path属性指定的域 可以使用的cookie确切的路径

  如果安全属性被设置 那么cookie将只能设置浏览器是否使用安全套接字或教程 / /连接 但并不意味着该Cookie是安全的 它只是一个像所有其他的Cookie的文本文件

  在有一个例子 《% Response Cookies("lastname") Path = "/cookies/"

  Response Cookies("lastname") Secure = True %》 如何检索Cookie的值?

  现在的Cookie设置 我们需要检索信息 为了获取cookie的值 需要使用Request Cookies命令 在下面的例子 我们检索名为“姓氏” 并打印出其价值的cookie值 《% someValue = Request Cookies("lastname") response write("The cookie value is " & someValue) %》 输出将是“Cookie”

  使用Cookie字典

  除了存储简单值 在Cookies集合cookie可以代表一个cookie字典 字典是一个构造类似于在这数组中的每个元素是由它的名字识别组成的数组

  基本上 饼干字典只是一个Cookie 它可以容纳几个值 这些值被称为键 这为您提供了一个cookie存储在您的所有必要的信息选项 例如 假设你要收集用户的姓名 存放在一个cookie他们 在下面的例子 我们将创建一个名为“用户” 将包含这些信息的Cookie 《% Response Cookies("user")("firstname") = "Andrew" Response Cookies("user")("lastname") = "Cooper" %》 当你需要引用在与键的cookie的值 您必须使用键值 在有一个例子 《% Response Write(Request Cookies("user") ("firstname")) Response Write(Request Cookies("user") ("lastname")) %》 现在让我们假设我们要读取的所有您的服务器发送到用户的计算机上的Cookie 为了检查是否有一个cookie的键或不 您必须使用特定的cookie HasKeys财产 下面的示例演示如何做到这一点

  《% Response Cookies("lastname") = "Peterson" Response Cookies("user")("firstname") = "Andrew" Response Cookies("user")("lastname") = "Cooper" %》 《% The code below iterates through the Cookies collection If a given cookie represents a cookie dictionary then a second internal for each construct iterates through it retrieving the value of each cookieKey in the dictionary

  Dim cookie Dim cookieKey

  for each cookie in Request Cookies   if Request Cookies(cookie) HasKeys Then

lishixinzhi/Article/program/net/201311/14332

关于本次asp入门实例和ASP基础入门:ADO存取数据库时如何分页显示的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

asp入门实例(ASP基础入门:ADO存取数据库时如何分页显示)

本文编辑:admin

更多文章:


setint(PreparedStatement setString与setInt效果是否一样)

setint(PreparedStatement setString与setInt效果是否一样)

大家好,今天小编来为大家解答以下的问题,关于setint,PreparedStatement setString与setInt效果是否一样这个很多人还不知道,现在让我们一起来看看吧!本文目录PreparedStatement setStri

2026年7月20日 22:15

spring用英语怎么说(spring怎么读英语 spring英文解释)

spring用英语怎么说(spring怎么读英语 spring英文解释)

本篇文章给大家谈谈spring用英语怎么说,以及spring怎么读英语 spring英文解释对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录

2026年2月23日 15:30

throwstones怎么读(stones怎么读)

throwstones怎么读(stones怎么读)

今天给各位分享stones怎么读的知识,其中也会对stones怎么读进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录stones怎么读石头英文怎么念石用英文怎么读Don’t throw stonesstones

2025年6月18日 11:45

hash是什么(hash算法是什么呢)

hash是什么(hash算法是什么呢)

大家好,关于hash是什么很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于hash算法是什么呢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录hash算

2026年9月17日 16:30

eclipse怎么安装汉化包(eclipse怎么安装)

eclipse怎么安装汉化包(eclipse怎么安装)

大家好,eclipse怎么安装汉化包相信很多的网友都不是很明白,包括eclipse怎么安装也是一样,不过没有关系,接下来就来为大家分享关于eclipse怎么安装汉化包和eclipse怎么安装的一些知识点,大家可以关注收藏,免得下次来找不到哦

2025年9月8日 00:45

j2ee三层架构(基于J2EE的WEB开发中如何分层)

j2ee三层架构(基于J2EE的WEB开发中如何分层)

大家好,今天小编来为大家解答以下的问题,关于j2ee三层架构,基于J2EE的WEB开发中如何分层这个很多人还不知道,现在让我们一起来看看吧!本文目录基于J2EE的WEB开发中如何分层请问软件三层架构是如何架构的,用什么工具开发J2EE开发中

2026年7月8日 23:00

property prices(spillover effect是什么意思)

property prices(spillover effect是什么意思)

“property prices”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看property prices(spillover effect是什么意思)!本文目录spillover effect是什么意思harden是什

2026年9月23日 18:00

免费主题大全(vivo免费全局主题名字)

免费主题大全(vivo免费全局主题名字)

大家好,今天小编来为大家解答以下的问题,关于免费主题大全,vivo免费全局主题名字这个很多人还不知道,现在让我们一起来看看吧!本文目录vivo免费全局主题名字oppo免费全局主题有哪些全部免费的主题壁纸软件是什么主题软件免费主题有哪些viv

2025年9月15日 20:15

c语言求二维数组最大值(C语言求出二维数组中的最大元素值)

c语言求二维数组最大值(C语言求出二维数组中的最大元素值)

大家好,今天小编来为大家解答以下的问题,关于c语言求二维数组最大值,C语言求出二维数组中的最大元素值这个很多人还不知道,现在让我们一起来看看吧!本文目录C语言求出二维数组中的最大元素值c语言编程:找出二维数组中的最大值最小值及其所在行号列号

2026年8月10日 01:15

update的过去式和过去分词(Update翻译成汉语是什么意思)

update的过去式和过去分词(Update翻译成汉语是什么意思)

“update的过去式和过去分词”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看update的过去式和过去分词(Update翻译成汉语是什么意思)!本文目录Update翻译成汉语是什么意思update英文怎么读windows

2025年8月29日 13:00

jquery在哪里写(如何写一个jquery 插件)

jquery在哪里写(如何写一个jquery 插件)

本篇文章给大家谈谈jquery在哪里写,以及如何写一个jquery 插件对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录如何写一个jquer

2026年4月30日 06:45

学生eclipse安装教程(哪位大神可以手把手教我怎么在eclipse中安装PHP啊,我是学生,刚刚开始学习,不会装呀..)

学生eclipse安装教程(哪位大神可以手把手教我怎么在eclipse中安装PHP啊,我是学生,刚刚开始学习,不会装呀..)

今天给各位分享哪位大神可以手把手教我怎么在eclipse中安装PHP啊,我是学生,刚刚开始学习,不会装呀..的知识,其中也会对哪位大神可以手把手教我怎么在eclipse中安装PHP啊,我是学生,刚刚开始学习,不会装呀..进行解释,如果能碰巧

2026年7月2日 16:30

进制转换器代码(C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具)

进制转换器代码(C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具)

本篇文章给大家谈谈进制转换器代码,以及C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具求c++各进制转

2025年10月4日 05:30

idea写的代码eclipse能用吗(怎么把Intelij IDEA的工程变为Eclipse工程,希望有人解答)

idea写的代码eclipse能用吗(怎么把Intelij IDEA的工程变为Eclipse工程,希望有人解答)

本篇文章给大家谈谈idea写的代码eclipse能用吗,以及怎么把Intelij IDEA的工程变为Eclipse工程,希望有人解答对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决

2025年6月9日 15:00

values英文(价值观的英语定义有谁知道麻烦告之谢谢)

values英文(价值观的英语定义有谁知道麻烦告之谢谢)

大家好,今天小编来为大家解答以下的问题,关于values英文,价值观的英语定义有谁知道麻烦告之谢谢这个很多人还不知道,现在让我们一起来看看吧!本文目录价值观的英语定义有谁知道麻烦告之谢谢三观用英文怎么说我个人想了个views英文翻译一道题谢

2026年6月5日 17:15

关系数据库系统的特点(数据库关系模型的主要特点是什么)

关系数据库系统的特点(数据库关系模型的主要特点是什么)

“关系数据库系统的特点”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看关系数据库系统的特点(数据库关系模型的主要特点是什么)!本文目录数据库关系模型的主要特点是什么关系数据库系统的主要特点是什么关系数据库系统的特点是什么数据

2026年3月22日 03:00

易语言源代码及模块大全1500(求一个小工具的易语言源代码 悬赏100分)

易语言源代码及模块大全1500(求一个小工具的易语言源代码 悬赏100分)

其实易语言源代码及模块大全1500的问题并不复杂,但是又很多的朋友都不太了解求一个小工具的易语言源代码 悬赏100分,因此呢,今天小编就来为大家分享易语言源代码及模块大全1500的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分

2026年1月17日 23:15

plsql打开多个窗口列表(plsql多窗口切换)

plsql打开多个窗口列表(plsql多窗口切换)

各位老铁们,大家好,今天由我来为大家分享plsql打开多个窗口列表,以及plsql多窗口切换的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录plsq

2026年8月7日 14:00

mmap的实现原理(Android跨进程通信-mmap函数)

mmap的实现原理(Android跨进程通信-mmap函数)

大家好,mmap的实现原理相信很多的网友都不是很明白,包括Android跨进程通信-mmap函数也是一样,不过没有关系,接下来就来为大家分享关于mmap的实现原理和Android跨进程通信-mmap函数的一些知识点,大家可以关注收藏,免得下

2026年5月3日 00:15

stunted(t,u,s,t,e,n,d能组成什么单词)

stunted(t,u,s,t,e,n,d能组成什么单词)

今天给各位分享t,u,s,t,e,n,d能组成什么单词的知识,其中也会对t,u,s,t,e,n,d能组成什么单词进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录t,u,s,t,e,n,d能组成什么单词stunt

2025年12月15日 05:00

近期文章

char ch用法(c语言char ch)
2026-09-24 18:45:02
本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索