首 页  资讯中心 下载中心 资讯教程 最新下载 发布软件 发布文章 网通站 电信站繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:曾子源码软件下载站 -> 网络编程 -> ASP -> 文章内容 退出登录 用户管理
热门文章
· 常用C,VC,C++书籍下..
· 新概念英语视频教程..
· 常用 JAVA JAVA2 J..
· 《梦幻麻将馆9雀圣争..
· 新东方英语视频教程..
· 常用VB,Visual Basi..
· [组图] After Effect..
· WINDOWS 所有系统文..
· [组图] 让机器运行多..
· 全美经典学习指导系..
相关文章
· 重视用户感受 快车..
· 手动清除恶意软件之..
· Flash Player11月出..
· [组图] Vista RTM版本..
· [组图] ASP.NET 2.0中..
· ASP.NET2.0 数据绑定..
· [图文] 好玩但又很安..
· 解决网络塞车 要靠N..
· ASP.NET数据库编程之..
· ASP.NET2.0服务器控..
Asp深度揭密(6)
作者: 动网     来源:不详  发布时间:2006-5-21 20:22:48  发布人:admin

减小字体 增大字体

     5.驱动器/目录/文件操作
  
   本次交流时间有限,有时间再做详细探讨
  
   6. Asp编写与调试经验:cookies和session如何选择、cookies数量陷阱、页面过期和缓冲设定、移植性如何保证、如何应付内部服务器500错误……
  
   1.Cookies和Session的选择:
   ⑴.共同特点
   ⑵.不同之处:
   ①.工作方式
   ②.过期条件
   ③.对服务器的性能影响
  
   2.Cookies数量陷阱:
   IIS可以保存一般的cookies不超过20个,再定义新的Cookies以前的Cookies的值就丢失了,这样对大型应用显然局限性非常大,如何解决这个问题呢?
   答案是使用二维Cookies。
  
   例子:
  
   测试一维Cookies数量极限:
   test_cookies_1.asp
   <%
   for i=1 to 50
   response.cookies("cookies_"&i)=i
   next
   %>
  
  
   test_cookies_2.asp
   <%
   for i=1 to 50
   response.write request.cookies("cookies_"&i)&"<br>"
   next
   %>
  
   效果:
   先访问test_cookies_1.asp,再访问test_cookies_2.asp,,发现了什么?
  
  
   test_cookies_3.asp
   <%
   for i=1 to 50
   response.cookies("cookies_"&i)=i
   next
  
   for i=1 to 50
   response.write request.cookies("cookies_"&i)&"<br>"
   next
   %>
  
   效果:
   没有Cookies丢失!!!!
  
   测试二维Cookies数量极限:
   test_cookies_4.asp
   <%
   for i=1 to 301
   response.cookies("tuht")("cookies_"&i)=i
   next
   %>
  
  
   test_cookies_5.asp
   <%
   for i=1 to 301
   response.write request.cookies("tuht")("cookies_"&i)&"<br>"
   next
   %>
  
   效果:
   使用这种方式可以使用201*20=4020个Cookies!!!!
  
   3.页面过期和缓冲设定
   <%
   '过期和缓冲处理
   response.buffer=true
   response.cachecontrol="no-chache"
   response.expiresabsolute=now()-1
   response.expires=0
   %>
   html中还可以做设定:
   <meta content="no-cache" http-equiv="Pragma">
   <meta HTTP-EQUIV="Expires" CONTENT="0">
  
   4.移植性的保证
   ⑴.包含文件
   <!--#include file="top.asp" -->
   ⑵.使用server.mappath寻找文件路径,避免在页面中直接使用绝对路径
   ⑶.尽量使用组件封装业务逻辑
  
   5.调试内部服务器500的错误
   ⑴.设置IIS显示具体的错误信息
   ⑵.分步调试,由上而下
   ⑶.打印某些重要的变量的值,检查是否为我们预期
   ⑷.根据经验来判断错误
  
   7. 操作Word文档
  
   ⑴.安装Office 2000,其中Word 2000必选
   ⑵.设置IE中Internet的安全性:ActiveX控件和插件全部启用
   ⑶.设置工作目录的文件权为Internet及System读取/修改/写入
   ⑷.编写模版course.dot
   ⑸.具体代码:
   opr_doc_inc.asp
   <%
   Response.write "Dim Var_Num" & chr(13)
   Response.write " Var_Num = 2 " & chr(13)
   Response.write "Dim varstrings(2)" & chr(13)
   Response.write "varstrings(0)=" & chr(34) & "起草人:" & chr(34) & chr(13)
   Response.write "varstrings(1)=" & chr(34) & "日期:" & chr(34) & chr(13)
   Response.write "Dim varValues(2)" & chr(13)
   Response.write "varValues(0)=" & chr(34) &"起草人:涂海涛"& chr(34) & chr(13)
   Response.write "varValues(1)=" & chr(34) & "日期:"&date()& chr(34) & chr(13)
   %>
  
   Sub instead(word)
   Set myRange = word.ActiveDocument.Content
   for i=0 to Var_Num - 1
   call myRange.Find.Execute(varStrings(i),false,false,false,false,false,false,false,false,varValues(i),2)
   Next
   End Sub
  
  
   opr_doc.asp
   <%
   '获取保存的路径
   path=server.mappath("opr_doc.asp")
   path=left(path,len(path)-11)
   filenames=path&"test.doc"
  
   w1="word.activedocument.saveAs"&chr(32)&chr(34)&filenames&chr(34)
   w2="wApp.Documents.open"&chr(32)&chr(34)&filenames&chr(34)
   %>
   <script language="VBScript">
   On Error Resume Next
   '生成指定文件名的Word文档
   Dim word
   set word = CreateObject("Word.Application")
   if Err.number > 0 Then
   Alert "发生错误,请确认文件是否存在"
   else
   word.visible = False
   word.documents.open "<%response.write path%>course.dot"
   <%Response.write w1%>
   word.documents.close
   set word=nothing
   end if
  
   <!--#include file="opr_doc_inc.asp"-->
  
   Dim wApp
   Set wApp = CreateObject("Word.Application")
   If Err.number > 0 Then
   Alert "发生错误,请确认文件是否正确创建"
   else
   wApp.visible = True
   <%Response.write w2%>
   call instead(wApp)
   set wApp=nothing
   end if
   </script>
  
   效果:看看生成了doc文件吗?这个新建的doc文件和模版文件有什么区别?起草人和日期发生了变化了吗?保存一下,看看新生成的doc文件的内容。
  
  
   附:
   1.以上全部代码在Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000下测试通过
   2.配置数据库:数据库名course,用户course_user,密码course_password,ODBC驱动为course_dsn,端口为2433,描述表结构的脚本在共享目录下。
   3.Asp fileup、Jmail、Winzip 8.1、Winzip command line这几个软件请自行下载。
   4.数据库脚本文件:
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[output_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [dbo].[output_1]
   GO
  
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[return_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [dbo].[return_1]
   GO
  
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [dbo].[user_info_1]
   GO
  
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [dbo].[user_info_2]
   GO
  
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [dbo].[user_info_3]
   GO
  
   if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
   drop table [dbo].[user_info]
   GO
  
   CREATE TABLE [dbo].[user_info] (
   [id] [int] IDENTITY (1, 1) NOT NULL ,
   [user_name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
   [password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
   ) ON [PRIMARY]
   GO
  
   ALTER TABLE [dbo].[user_info] WITH NOCHECK ADD
   CONSTRAINT [PK_user_info] PRIMARY KEY CLUSTERED
   (
   [user_name]
   ) ON [PRIMARY]
   GO
  
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS OFF
   GO
  
   CREATE PROCEDURE [output_1]
   @sid int output
   AS
   set @sid=2
   GO
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS ON
   GO
  
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS OFF
   GO
  
   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
   GO
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS ON
   GO
  
   SET QUOTED_IDENTIFIER ON
   GO
   SET ANSI_NULLS OFF
   GO
  
   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
   GO
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS ON
   GO
  
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS OFF
   GO
  
   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
   GO
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS ON
   GO
  
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS OFF
   GO
  
   CREATE PROCEDURE [user_info_3] AS
   select * from user_info
   GO
   SET QUOTED_IDENTIFIER OFF
   GO
   SET ANSI_NULLS ON
   GO  做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
[] [返回上一页] [打 印] [收 藏]
下一篇文章:Asp深度揭密(5)
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [发表评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站信息排名查询
Copyright © 2004-2006 Zasp.Net. All Rights Reserved .