A. 详细介绍ASP.NET状态保存方法
ASP NET状态保存分为客户端保存和服务器端保存两种
使用客户端选项存储页信息而不使用服务器资源的这些选项往往具有最低的安全性但具有最快 的服务器性能 因为对服务器资源的要求是适度的 但是 由于必须将信息发送到客户端来进行存储 因此对于以这种方式可以存储多少信息存在一定的客观限制
客户端保存的方式一般有如下 种
ViewState:
利用场合为 在对同一页的多个请求间自动保留值 多用于客户端的一些事件 典型利用场合为 页面信息重置 登陆出错次数统计 Grid列排序等
优点 不利用服务器端资源 实现简单 相对高的安全性 因为经过哈希计算和压缩 并且针对 Unicode 实现进行编码
缺点 因为ViewState存储在页面本身 所以无法存储较大的值 并且通过源文件可以看见其中的值 虽然经过哈希计算和压缩 但仍有被篡改的风险
可存储的类型 string integer bool array arr aylist hashtable以及其他可以序列化的类型
HiddenField:
利用场合为 存储少量页面 中经常改动的信息 多和客户端脚本一块使用 典型利用场合为 客户端经历一系列验证之后向服务器端回发 服务器端从客户端HiddenField中获取值 进行处理 例如 LeyserHomepage中 要删除一项产品 需要在客户端弹出确认Form 用户确认之后再PostBac k回服务器端进行数据库Delete操作 当用户确认要删除时 将当前要删除的产品ID存放到一个HiddenField中 然后执行 Form( ) submit回发到服务器端 服务器端再从HiddenField获取产品ID值 进行数据库操作
优点 不使用服务器资源 广泛支持 实现简单
缺点 安全性不高 因为它被包含在页面上进行发送 所以可以通过源文件看见他的内容 存储结构少 仅仅支持string integer bool array arraylis t等简单的数据结构 并且在其上只存放简单的单值 若要存放多值 需要额外编码 存储量少 因为它被存储在页面本身 所以 无法存储较大的值 而且大的数据量会受到防火墙和代理的阻止 注意 使用了HiddenField之后 需要回发到服务器进行 处理 应该使用Http Post方法而不是Http Get方法(通过URL请求访问)
Cookie:
利用场合为 存储少量页面中经常改动的信息 典型利用场合为 为登陆过的网站保存登陆用户名 为用户输入提供方便 还有在一些用户自定义项目上保存用户的个性化设置
优点 不使用服务器资源 实现简单 可配置到期时间
缺点 大小受到限制 一般浏览器支持的最大的Cookie 容量为 字节 客户端用户可能会配置为拒绝Cookie 安全性 保存在客户端的信息可能会被恶意用户修改或者获取 所以不应该保存敏感信息 持久性 保存期限受到客户端的配置影响
Cookie 通常用于 存取已知用户自定义内容的个性化情况 在大多数此类情况中 Cookie 是作为 标识 而不是 身份验证 所以在 Cookie 中只存 储用户名 账户名或唯一用户 ID(例如 GUID)并使用它来访问站点的用户个性化结构是足够的了
QueryString:
利用场合为 将信息从一页传递给另一页的最简单的方法
优点 不使用服务器资源 支持广泛 实现简单
缺点 安全性 因为直接在URL中暴露给用户 所以有被篡改的风险 容量有限 一般的浏览器都有 个字符的限制 只有在通过其 URL 请求页时查询字符串才是可行的选择 不能从已提交给服务器的页读取 查询字符串
视图状态:需要为将回发到自身的页存储少量信息 ViewState 属性的使用将提供具有基本安全性的功能
隐藏域 需要为将回发到自身或另一页的页存储少量信息 并且不需要较高的安全性 (客户端事件)只能在提交到服务器的页上使用隐藏域
Cookie 需要在客户端存储少量信息并且不需要较高的安全性 (个性化)
查询字符串 可以将少量信息从一页传输到另一页 并且不需要较高的安全性 (页面跳转 )只有在请求同一页 或通过链接请求另一页时 才能使用查询字符串
服务器端保存方式一般有如下 种
存储页信息的服务器端选项往往比客 户端选项具有更高的安全性 但它们可能使用更多的 Web 服务器资源 这可能在信息存储量较大时导致可缩放性问题
Application:
利用场合 所有的请求都会需要的 一些共有资源 由最先的一个请求率先获取之后 拿出来共享 其他的请求就不用浪费资源进行再次获取 典型利用场合 一个股市 Web 站点可能在一天中每 分钟从数据库获取大量的金融股票信息(也许是 MB 的数据) 然后将这些信息缓存在应用程序状态中 这样所有以后的查找请求都可以在应用程序状态中访问这些信息 其结果是极大地提高了每个 请求的性能 因为传入的请求不需要跨进程 跨计算机或数据库的往返过程
首次Http Get请求
If Not Me IsPostBack Then
先判断Application中是否已経有了缓存
If Application Item( Database ) Is Nothing Then
若没有 从DataCenter中获取
Dim ds As New DataSet
ds ReadXml(Server MapPath( TestData xml ))
Dim dv As New DataView(ds Tables( ))
拿到之后 缓存到Application 方便别的进程Http Get请求复用
Application Add( DataBase dv)
End If
Dim dv As DataView
dv = Application Item( DataBase )
缓存到Session 方便当前进程的Http Post请求
Session Add( DataBase dv )
End If
优点 易于实现 全局范围
缺点 持久性 若 保存数据的服务器端进程被强行关闭 那么数据就会丢失 所以利用Application一定要有保底的策略 有的话就使用 没有的话就自己拿 耗用服务器端的内存
注意 因为Application中的数据被多个进程公用 所以若需要更新其中的值时 需要利用 如下的语句 做到独占更新
Application Lock()
Application Item( DataBase ) = NewDataBase
Application UnLock()
Session:
利用场合 单独的一个进程内部使用 存储单独会话的短期的 敏感的数据
优点 易于实现 持久性 可以应对IIS重启和辅助进程重启 可在多进程中使用
缺点 耗用服务器端的内存
Database:
优点 安全性 容量 持久性 可靠性和数据完整性 可访问性 广泛支持
缺点 复杂 性能
方法 使用场合
应用程序状态 存 储更改不频繁的全局信息 这些信息由多个用户使用 此时安全性不成为问题 不要在应用程序状态中存储大量的信息
会话状态 存储特定于单独会话的短期信息 并且需要较高的安全性 不要在会话状态中存储 大量的信息 在支持许多用户的应用程序中 这可能会占用大量服务器资源并影响可缩放性
lishixin/Article/program/net/201311/13257
B. 什么是ASP文件
ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。 与HTML相比,ASP网页具有以下特点:
(1)利用ASP可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。例如可以从web浏览器中获取用户通过HTML表单提交的信息,并在脚本中对这些信息进行处理,然后向web浏览器发送信息;
(5)ASP可以使用服务器端ActiveX组建来执行各种各样的任务,例如存取数据库、发现哦那个Email或访问文件系统等。
(6)由于服务器是将ASP程序执行的结果以HTML格式传回客户端浏览器,因此使用者不会看到ASP所编写的原始程序代码,可放置ASP程序代码被窃取。
当然如果你有ASP原文件的话,可以打开该文件来查看原代码。打开ASP原文件的方法有多种,我只说两个最简单的:
第一种:最简单的。用记事本打开。
对该ASP文件点右键,选择打开方式,然后选择记事本即可打开。打开后你将看到一行行的代码行。如果你了解ASP语言可以对它进行修改。
第二种:使用dreamwear、FontPage等支持asp的网页编辑器打开。
先打开这些网页编辑器,然后选择打开,然后指定这个asp文件即可。当然在这里我们也可以对该ASP原文件进行相关编辑。
C. asp怎么链接sql数据库
我空间里有,不同的数据库有不同的链接方式,代码如下:
一、ASP的对象存取数据库方法
在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:
Connection、Recordset 、Command
Connection:负责打开或连接数据
Recordset:负责存取数据表
Command:负责对数据库执行行动查询命令
二、连接各数据库的驱动程序
连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常
方便、简单,而使用数据源比较麻烦。
ODBC链接
适合数据库类型 链接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;
pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;
pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;
pwd=pass;"
MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;
Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;
option=16386;"
OLEDB链接
适合的数据库类型 链接方式
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;
password=pass;"
Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;
userid=sa;password=pass;"
MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties′text;
FMT=Delimited′"
而我们在一般情况下使用Access的数据库比较多,在这里我建议大家连接Access数据库使用下面的方法:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath
("../db/bbs.mdb") 其中../db/bbs.mdb是你的数据库存放的相对路径!如果你的数据库和ASP文件在
同一目录下,你只要这样写就可以了:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath
("bbs.mdb")
有许多初学者在遇到数据库连接时总是会出问题,然而使用上面的驱动程序只要
你的数据库路径选对了就不会出问题了,希望对你有所帮助!