整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

.NET Core 和 ASP.NET Core 中

.NET Core 和 ASP.NET Core 中的日志记录

NET Core 支持适用于各种内置和第三方日志记录提供程序的日志记录 API。 本文介绍了如何将日志记录 API 与内置提供程序一起使用。

本文中所述的大多数代码示例都来自 ASP.NET Core 应用。 这些代码片段的日志记录特定部分适用于任何使用通用主机的 .NET Core 应用。 ASP.NET Core Web 应用模板使用通用主机。

日志记录提供程序

日志记录提供程序存储日志,但显示日志的 Console 提供程序除外。 例如,Azure Application Insights 提供程序将日志存储在 Azure Application Insights 中。 可以启用多个提供程序。

默认 ASP.NET Core Web 应用模板:

  • 使用通用主机。
  • 调用 CreateDefaultBuilder,这将添加以下日志记录提供程序:控制台调试EventSourceEventLog:仅限 Windows

C#

SP.NET 帮助器 - 对象参考手册


Analytics 对象参考手册(Google)

Helper描述
Analytics.GetGoogleHtml(webPropertyId)为指定的 ID 呈现 Google Analytics JavaScript 代码。
Analytics.GetStatCounterHtml(project, security)为指定的项目呈现 StatCounter Analytics JavaScript 代码。
Analytics.GetYahooHtml(account)为指定的账号呈现 Yahoo Analytics JavaScript 代码。

Bing 对象参考手册

Helper描述
Bing.SearchBox([boxWidth])给 Bing 传递搜索。您可以设置 Bing.SiteUrl 和 Bing.SiteTitle 属性来设定站点搜索和搜索框的标题,通常是在 _AppStart 页面设置这些属性。
Bing.AdvancedSearchBox([, boxWidth] [, resultWidth] [, resultHeight]

[, themeColor] [, locale])

用可选的格式显示 Bing 搜索结果在页面上。您可以设置 Bing.SiteUrl 和 Bing.SiteTitle 属性来设定站点搜索和搜索框的标题,通常是在 _AppStart 页面设置这些属性。

Chart 对象参考手册

Helper描述


Chart(width, height [, template] [, templatePath])初始化图表。
Chart.AddLegend([title] [, name])给图表添加一个图例。
Chart.AddSeries([name] [, chartType] [, chartArea]

[, axisLabel] [, legend] [, markerStep] [, xValue]

[, xField] [, yValues] [, yFields] [, options])

给图表添加一系列数据。

Crypto 对象参考手册

Helper描述
Crypto.Hash(string [, algorithm])

Crypto.Hash(bytes [, algorithm])

返回指定数据的哈希。默认算法是 sha256。

Facebook 对象参考手册

Helper描述
Facebook.LikeButton(href [, buttonLayout] [, showFaces] [, width] [, height]

[, action] [, font] [, colorScheme] [, refLabel])

让 Facebook 用户连接到网页。

FileUpload 对象参考手册

Helper描述
FileUpload.GetHtml([initialNumberOfFiles] [,allowMoreFilesToBeAdded]

[, includeFormTag] [, addText] [, uploadText])

为上传文件呈现 UI。

GamerCard 对象参考手册

Helper描述
GamerCard.GetHtml(gamerTag)呈现指定的 Xbox gamer 标签。

Gravatar 对象参考手册

Helper描述
Gravatar.GetHtml(email [, imageSize] [, defaultImage] [, rating]

[, imageExtension] [, attributes])

为指定的电子邮件地址呈现 Gravatar 图像。

Json 对象参考手册

Helper描述
Json.Encode(object)用 JavaScript Object Notation (JSON) 把数据对象转换为字符串。
Json.Decode(string)转换 JSON 编码的输入字符串为您指定的数据对象。

LinkShare 对象参考手册

Helper描述
LinkShare.GetHtml(pageTitle [, pageLinkBack] [, twitterUserName]

[, additionalTweetText] [, linkSites])

使用指定的标题和可选的 URL 呈现社会网络链接。

ModelState 对象参考手册

Helper描述
ModelStateDictionary.AddError(key, errorMessage)关联错误信息和一个表单域。使用 ModelState 帮助器访问成员。
ModelStateDictionary.AddFormError(errorMessage)关联错误信息和一个表单。使用 ModelState 帮助器访问成员。
ModelStateDictionary.IsValid如果没有验证错误,返回 true。使用 ModelState 帮助器访问成员。

ObjectInfo 对象参考手册

Helper描述
ObjectInfo.Print(value [, depth] [, enumerationLength])呈现一个对象和所有子对象的属性和值。

Recaptcha 对象参考手册

Helper描述
Recaptcha.GetHtml([, publicKey] [, theme] [, language] [, tabIndex])呈现 reCAPTCHA 验证测试。
ReCaptcha.PublicKey

ReCaptcha.PrivateKey

设置 reCAPTCHA 服务的公共和私有密钥。通常是在_AppStart 页面设置这些属性。
ReCaptcha.Validate([, privateKey])返回 reCAPTCHA 测试结果。
ServerInfo.GetHtml()Renders 呈现有关 ASP.NET Web Pages 的状态信息。

Twitter 对象参考手册

Helper描述
Twitter.Profile(twitterUserName)为指定的用户呈现 Twitter 流。
Twitter.Search(searchQuery)为指定的搜索文本呈现 Twitter 流。

Video 对象参考手册

Helper描述
Video.Flash(filename [, width, height])为指定的文件呈现宽度和高度可选的 Flash 视频播放。
Video.MediaPlayer(filename [, width, height])为指定的文件呈现宽度和高度可选 的 Windows Media 播放器。
Video.Silverlight(filename, width, height)为指定的 .xap 文件呈现所需的宽度和高度 的 Silverlight 播放器。

WebCache 对象参考手册

Helper描述
WebCache.Get(key)通过 key 返回指定的对象,如果对象未找到则返回 null。
WebCache.Remove(key)通过 key 从缓存中删除指定的对象。
WebCache.Set(key, value [, minutesToCache] [, slidingExpiration])通过 key 把 value 放置到指定名称的缓存中。

WebGrid 对象参考手册

Helper描述
WebGrid(data)Creates a 使用查询数据创建一个新的 WebGrid 对象。
WebGrid.GetHtml()Renders markup 显示数据在 HTML 表格中。
WebGrid.Pager()为 WebGrid 对象呈现一个页面。

WebImage 对象参考手册

Helper描述
WebImage(path)从指定的路径加载一个图像。
WebImage.AddImagesWatermark(image)为指定图像加水印。
WebImage.AddTextWatermark(text)为图像添加指定文本。
WebImage.FlipHorizontal()

WebImage.FlipVertical()

水平/垂直翻转图像
WebImage.GetImageFromRequest()当图像被传送到一个文件上传页面时,加载图像。
WebImage.Resize(width, height)调整图像大小。
WebImage.RotateLeft()

WebImage.RotateRight()

向左或向右旋转图像。
WebImage.Save(path [, imageFormat])保存图像到指定路径。

鸟学ASP 

学习目的:安装调试ASP的环境,并且调试第一个简单的程序。

  因为我们学ASP的目的就是想建立一个网站,那么一般习惯是建立的网站内所有文件应该同时放到一个文件夹中(当然这个文件夹中还可以按需要设置子文件夹!),所以在这里我在E盘建立一个myweb的文件夹。

  首先来安装Windows 2000/XP自带的IIS作为服务器。在这里因为我的机器是XP所以所有截图都是XP下完成的。

  控制面板-->>添加或删除程序。


 然后是添加删除windows组件-选中IIS组件前面的勾,之后等待安装,这里可以观看本站以前给大家做的视频教程,完成安装后。


之后在控制面板中双击“管理工具”。


 然后双击“internet信息服务”,这就是IIS。


选择“默认网站”,然后右键属性或者直接按快捷键


 在属性页面内只有三个页面需要修改,先是网站,如果用户有固定IP,可以分配一个IP

接下来在注主目录中选择一个自己硬盘上面的文件夹存放网站(这个目录就是我们上面说的在e盘建立的目录),选中读取、写入

 在文档中添加默认的页面,比如打http://www.liexiaow.com猎校网 调用了一个默认文档即是你添加的页面。


接下来也是最关键的:

  1、在刚才你定义的一个文件夹里面新建一个文件,可以用记事本建立一个文本文件然后把下面的内容复制到记事本中:

<%response.write "hello world!"%>

  保存为1.asp文件(注意:.asp不能省略啊,如果省略了你就保存了一个文本文件了)。

  最后打开IE,在地址栏内输入:http://127.0.0.1/1.asp(或者http://localhost/1.asp)回车后就可以看到效果了。

最后解释一下代码的含义。

  response.write就是显示的意思,前后的 <% 和 %> 是asp的标记符号,在这里面的信息都由服务器处理。127.0.0.1是地址,1.asp是文件名。第一天就结束了!

表单元素要放在一个表单域里面,建立一个表单域。然后修改动作里面的文件为要接受这个表单变量的ASP文件。方法有两种,一种是POST,这个方法传送的变量不会在浏览器的地址栏里面显示,可以大批量传送数据;GET则是会在浏览器地址栏里面显示的,等一会举例子。

  下面我们看一个表单元素。

  文本域,这个是最基本的,传送的是文本信息,一般用户名,密码都要用这个传送,不过要是密码的话要在类型里面选择密码,这样就会以*代替显示出来的字符,文本域的名字很重要,以后会用到这个名字所以一般不用默认的名字。

  现在举一个例子:如果文本域的名字是name的话,用来传送网上用户登记的名字,在表单域里面,传送到reg.asp,用POST方法,那么在reg.asp里面这样得到变量<%name=request.form("name")%>如果要显示变量再家加一句,response.write name,这样就形成了一个从客户端到浏览器再回到客户端的过程。如果方法用的是GET的话,那么就改为name=request.querystring("name")实际上两者可以统一为name=request("name")。下面看看按钮,按钮里面无非两种,一种是提交表单的按钮,一种是重新输入的按钮。单选按钮,一个按钮有一个值。在列表里面同样,添加列表选项和值。下面举一个例子,实际上各种表单元素都是差不多的。

  下面是具体的代码: (注:把下面代码保存为一个.htm的文件就可以了.我保存的1.htm)

<form name="form1" method="post" action="reg.asp"> 
姓名: 
<input type="text" name="name"> //文本域,名字叫name 
<br> 
密码: 
<input type="password" name="psw"> //文本域,用来输入密码,名字叫psw 
<br> 
<br> 
性别: 
<input type="radio" name="sex" value="男"> //单选,名字叫sex,数值是"男" 
男 
<input type="radio" name="sex" value="女"> //单选,名字叫sex,数值是"女" 
女 <br> 
<br> 
城市: 
<select name="city"> 
<option value="上海" selected>上海</option> //复选,大家自己分析一下 
<option value="北京">北京</option> 
</select> 
<br> 
<input type="submit" name="Submit" value="提交"> //提交按钮 
<input type="reset" name="Submit2" value="重置"> 
</form>
  下面是reg.asp的代码,用来显示出刚才受到的信息:
<% 
name=request.form("name") 
psw=request.form("psw") 
sex=request.form("sex") 
city=request.form("city") 
response.write name 
response.write psw 
response.write sex 
response.write city 
%>

  打开浏览器在地址栏内输入:http://localhost/1.htm如下图:(呵呵,因为是练习,我没有美化页面啊!)


下面我们要开始学数据库了!只要把表单和数据库相应的字段连接上就可以了。

学会ACCEES数据库的使用。

  首先,要安装OFFICE里面的ACCEES(我的演示是OFFICE 2003版本),安装过程这里就不说了,安装好以后会,打开Access.按空数据库,新建一个数据库,文件名字可以叫guestbook.mdb。(提示:为了安全期间,文件名复杂一点好,因为ACCESS数据库可以被下载的!!)



使用设计器创建新的表,一个数据库MDB文件里面可以建立多个表。双击“使用设计器创建表”


 填写字段名字然后选择字段类型,一条记录可以有很多字段,可以有很多字段类型,字段大小的意思就是这个字段最多可以容纳的字符数,当这个字段没有任何信息是,ACCEES会用默认值代替(没有任何信息不是空的意思),一般必填字段和允许空字符串分别设置为否、是,以防止出错

按照上图分别建立几个字段,在时间中默认值为=now()就是这个字段不需要填写,系统直接以当前时间代替。

所以的字段都建立以后,关闭这个窗口,按提示保存表,输入表的名字guest,最后出现下图的提示,选择是,主键是记录的标识,为了以后简单,大家可以把编号改为ID,还有在ACCEES里面尽量不要用中文表示字段名字

最后,双击打开这个表,观看表里面的记录


握ACCESS数据库的连接和读取记录

  首先还打开我们上一节课建立的数据库中的表,随便输入几条记录,如下图:


这节课学习的内容有一点枯燥,但是很重要。在这里不需要知道命令具体的运行情况,外面的很多书籍之所以不适合入门就是因为介绍了太多的理论知识,让初学者一头雾水。

  下面开门见山,看两行代码:

<% 
set conn=server.createobject("adodb.connection") 
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb") 
%>
  第一行定义了一个adodb数据库连接组件,第二行连接了数据库,大家只要修改后面的数据库名字就可以了。是不是很简单?
  下面再看三行:
<% 
exec="select * from guest" 
set rs=server.createobject("adodb.recordset") 
rs.open exec,conn,1,1 
%>
  这三行加在前面两行的后面,第一句:设置查询数据库的命令,select后面加的是字段,如果都要查询的话就用*,from后面再加上表的名字,我们前面建立的是不是一个gust表阿?第二句:定义一个记录集组件,所有搜索到的记录都放在这里面,第三句是打开这个记录集,exec就是前面定义的查询命令,conn就是前面定义的数据库连接组件,后面参数“1,1”,这是读取,后面讲到修改记录就把参数设置为1,3,好了接下来我们读取记录。
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<%do while not rs.eof%><tr> 
<td><%=rs("name")%></td> 
<td><%=rs("tel")%></td> 
<td><%=rs("message")%></td> 
<td><%=rs("time")%></td> 
</tr><% 
rs.movenext 
loop 
%> 
</table>
//下面的三条语句是用于关闭数据库

 rs.close
set rs=nothing
conn.close
set conn=nothing

  在一个表格中,我们用4列分别显示了上次建立的表里面的四个字段,用do循环,not rs.eof的意思是条件为没有读到记录集的最后,rs.movenext的意思是显示完一条转到下面一条记录,<%=%>就等于<%response.write%>用于在html代码里面插入asp代码,主要用于显示变量。

  把上面三段代码依次复制粘贴到剪贴板中,一定要按顺序复制粘贴啊!,然后保存为duqu.asp就可以了!打开浏览器,在地址栏内输入:http://localhost/duqu.asp.

  下面是我机器上面的结果图片。


学会数据库的基本操作--写入记录

  数据库的基本操作无非是:查询记录,写入记录,删除记录,修改记录。

  今天我们先学习写入记录。先建立一个表单:(把下面文章保存为5.htm)

<form name="form1" method="post" action="exa5.asp">
name <input type="text" name="name"><br>
tel <input type="text" name="tel"><br>
message <input type="text" name="message" value=""><br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置">
</form>

  表单提交到exa5.asp,下面是exa5.asp的代码: (把下面代码保存为5.asp)

<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
name=request.form("name")
tel=request.form("tel")
message=request.form("message")
exec="insert into guest(name,tel,message)values('"+name+"',"+tel+",'"+message+"')"
conn.execute exec
conn.close
set conn=nothing
response.write "记录添加成功!"
%>

  在这里前面两句我不说了,后面三句我也不说了,前面说过exec里面的是执行的命令,添加记录的比较繁,大家要仔细看。

  insert into后面加的是表的名字,后面的括号里面是需要添加的字段,不用添加的或者字段的内容就是默认值的可以省略。注意,这里的变量一定要和ACCESS里面的字段名对应,否则就会出错。values后面加的是传送过来的变量。exec是一个字符串,"insert into guest(name,tel,message)values('"是第一段,在ASP里面不能嵌双引号,所以可以用'代替双引号,放在双引号里面,连接两个变量用+或者&所以"',"又是一段,中间夹了一个name就是表单传来的变量,这样就可以在这个变量外面加两个'',表示是字符串了,后面的tel是数字型变量所以不需要外面包围'',大家慢慢分析这句话,如果用表单传来的数据代替变量名字的话这句话为(假设name="aaa",tel=111,message="bbb"):"insert into guest(name,tel,message)values('aaa',111,'bbb')"。

  接下来的conn.execute 就是执行这个exec命令,最后别忘记把打开的数据库关闭,把定义的组件设置为空,这样可以返回资源。

  下面几条语句用于关闭数据库的代码:

rs.close
set rs=nothing
conn.close
set conn=nothing

  记住,次序不可以颠倒! 可以到数据库里面去看一看,或者用duqu.asp读取看看是不是多了记录阿?下面是我利用上一节的文件读取数据库的图:


学会数据库的基本操作--查询记录

  在第四天中我们用到下面这样一个程序:

<% 
set conn=server.createobject("adodb.connection") 
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb") 
exec="select * from guest" 
set rs=server.createobject("adodb.recordset") 
rs.open exec,conn,1,1 
%>
  我们查询的是所有的记录,但是我们要修改、删除记录的时候不可能是所有记录,所有我们要学习检索合适的记录。先看一条语句:
a="aaa"
b=1111110
exec="select * from guestbook where name='"+a+"'and tel="+b
  where后面加上的是条件,与是and,或是or,我想=,<=,>=,<,>的含义大家都知道吧。这句话的意思就是搜索name是“aaa”的,并且电话是“1111110”的记录。还有一点就是如果要搜索一个字段里面是不是包含一个字符串就可以这么写:where instr(name,a)也就是搜索name里面有a(aaa)这个字符串的人。
  我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜索了。
  下面大家看看这个代码,理解一下:(把下面代码存为6.htm文件)
<form name="form1" method="post" action="exam6.asp">
搜索:<br>
name=<input type="text" name="name">
and tel=<input type="text" name="tel">
<br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置">
</form>
  exam6.asp(把下面代码存为exam6.asp)
<%
name=request.form("name")
tel=request.form("tel")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
exec="select * from guest where name='"+name+"' and tel="+tel
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head> 
<body bgcolor="#FFFFFF" text="#000000"> 
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
</html>

  首先在浏览器中输入http://localhost/6.htm如下图所示:



学会数据库的基本操作--删除记录

  开门见山,大家直接看程序。

exec="delete * from guest where id="&request.form("id")

  上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,我已经修改了啊!

  不修改的话就是用下面的代码了:

exec="delete * from guestbook where 编号="&request.form("id")

  下面我们看完整的代码:一个表单传给ASP文件一个ID,然后这个ASP文件就删除了这个ID。

  7.htm:

<form name="form1" method="post" action="exam7.asp">
请输入删除的ID号:
<input type="text" name="id">
<input type="submit" name="Submit" value="提交">
</form>

  exam7.asp:(可以先运行这个文件看一下所有记录的ID和想删除记录的ID,删除记录以后也可以通过这个文件复查。)
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
exec="select * from guest"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1 
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("id")%></td>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
</html>


学会数据库的基本操作--修改记录

  先来看代码:(存为exam8.asp就可以了)

<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
exec="select * from guest where id="&request.form("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn
%>
<form name="form1" method="post" action="modifysave.asp">
<table width="748" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td>name</td>
<td>tel</td>
<td>message</td>
</tr>
<tr> 
<td>
<input type="text" name="name" value="<%=rs("name")%>">
</td>
<td>
<input type="text" name="tel" value="<%=rs("tel")%>">
</td>
<td>
<input type="text" name="message" value="<%=rs("message")%>">
<input type="submit" name="Submit" value="提交">
<input type="hidden" name="id" value="<%=request.form("id")%>">
</td>
</tr>
</table>
</form>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
  到现在应该分析这个代码没有什么问题了吧,这个代码的作用是接受前面一个页面的ID然后显示这条记录,文本框即是输入的地方也是显示的地方,如果需要修改的话修改以后按提交;如果不需要修改就可以直接按提交按钮。
  在这里因为本教程适合初学的,所以也把提交的表单内容给出来,把下面代码存为8.htm文件
<form name="form1" method="post" action="exam8.asp">
请输入要修改的记录的ID:

 <input type="text" name="id">
<br>
<input type="submit" name="submit" value="提交">
</form>

这里还有一个东西以前没有说,那就是隐藏的表单元素:hidden元素,里面的value是不用用户输入的,会随着表单一起提交,用于传递变量。
  下面是modifysave.asp的代码:
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb")
exec="select * from guest where id="&request.form("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,3
rs("name")=request.form("name")
rs("tel")=request.form("tel")
rs("message")=request.form("message")
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

  在这里,rs.open exec,conn,1,3后面的参数是1,3,这我以前提过,修改记录就要用1,3。实际上修改记录很容易看懂,记录集是rs,rs("aa")就是当前记录aa字段的东西,让它等于新的数据request.form("aa")当然就修改了,不过最后别忘记保存,那就是rs.update!

  说到这里,记录的搜索,读取,修改,插入都说了,通过这最基本的东西就可以作出复杂的东西了,外面的大型数据库:新闻系统,留言簿就是字段多一点罢了。今天的示例中的代码是结合以前的数据库的,以后回去调试分析一下。

  大家测试的流程:首先运行8.htm文件



基本的SESSION组件,总结response,request组件。

  首先,有会员系统的任何程序都会用到检测是不是用户已经登陆这个步骤。这就用到了SESSION组件,下面我们 看一个代码来说明。

<%
session("login")="yes"
%>

  这句话的意思就是在session里面定义一个login字符串变量,值为"yes",直接可以赋值,不需要声明。是不是很简单?

  如果我们做管理员登陆系统的话,首先是一段检测是不是管理员:

if 是 then
session("isadmin")=yes"
else
session("isadmin")="no"
end if

  在每一个需要管理员才能看的页面最前面加上:

<%
if not session("isaadmin")="yes" then
response.redirect "login.htm"
%>

  这样一般用户就无法打开这个页面。解释一下response.redirect,它是转向的意思,后面的"login.htm"就是转向的文件。这样没有登陆的管理员是无法看到后面的内容的。

  response组件基本就是用到response.write(),response.redirect() 分别是写字符串和转向的作用。

  request基本就是request.form(),request.querystring() 分别是接受post,get方法传来的信息。

  最后我们一起来制作一个简单的后台登陆管理界面,首先在myweb目录下建立一个admin文件夹,然后我们建立一个数据库名字为admin.mdb,然后我们再建立一个表,表中设置两个字段name,password,类型都是文本型的!最后退出时设置主键,保存为表名check。然后可以输入一条记录用户名:admin,密码:admin。具体建立数据库的方法请看《菜鸟十天学会ASP教程之第三天:数据库的建立

  下面我们开始编写ASP程序,首先建立一个index.asp(管理主界面)程序,代码如下:

<%@language=vbscript%>
<%if not session("checked")="yes" then 
response.Redirect "login.asp"  
else
%>
<html>
<head>
<title>管理界面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<frameset cols="167,*" frameborder="YES" border="1" framespacing="1" rows="*" bordercolor="#666666"> 
  <frame name="leftFrame" scrolling="auto" noresize src="left.asp">
  <frame name="mainFrame" src="right.asp">
</frameset>
<noframes> 
<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes> 
</html>
<%end if%>
  在上面的代码中,大家可以看到用到login.asp,left.asp,right.asp程序
  login.asp://登陆系统程序
<html>
<head>
<title>管理员入口</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.topic {  font-family: "宋体"; font-size: 11pt; font-weight: bold; color: #FFFFFF}
.font {  font-family: "宋体"; font-size: 10pt; font-weight: normal; color: #000000}
.table {  border-color: #666666 black; border-style: solid; border-top-width: 1pt; border-right-width: 0px; border-bottom-width: 1pt; border-left-width: 0px}
.text {  border: 1pt #999999 solid; height: 15pt}
-->
</style>
</head>
<body text="#000000" topmargin="0" bgcolor="#FFFFFF">
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center" height="100%">
  <tr> 
    <td height="129" valign="top" colspan="3">  </td>
  </tr>
  <tr> 
    <td width="230" height="170" valign="top"> </td>
    <td valign="top" width="277"> 
      <table width="100%" border="0" cellspacing="1" cellpadding="0" height="100%" bgcolor="#000000" align="center">
        <tr> 
          <td align="center" valign="middle" height="167">
            <form name="form1" method="post" action="check.asp">
              <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
              <tr bgcolor="#62892C"> 
                <td height="31" class="topic" colspan="2"> 
                  <div align="center">管理员入口<br>
                  </div>
                </td>
              </tr>
              <tr> 
                
                  <td bgcolor="#87bc3c" colspan="2" class="table"> 
                    <div align="center"> <span class="font"> 管理员:</span> 
                      <input type="text" name="name"  class="text" size="20" onMouseOver="this.focus()">
                      <br>
                      <span class="font">密 码:</span> 
                      <input type="password" name="password" class="text" size="20" onMouseOver="this.focus()"><%if session("check")="wrong" then response.Write "<br><span class='font'><font color=red>验证错误!</font></span>" end if%>
                    </div>
                  </td>
             
              </tr>
              <tr> 
                <td bgcolor="#87bc3c" width="52%"> 
                    <div align="center" class="font">
                      <input type="reset" name="Submit2" value="重置" class="text">
                    </div>
                </td>
                <td bgcolor="#87bc3c" width="48%"> 
                    <div align="center" class="font">
                      <input type="submit" name="Submit22" value="提交" class="text">
                    </div>
                </td>
              </tr>
            </table>   </form>
          </td>
        </tr>
      </table>
    </td>
    <td width="241" valign="top"> </td>
  </tr>
  <tr> 
    <td height="123" valign="top" colspan="3"> </td>
  </tr>
</table>
</body>
</html>
  在上面的程序中用到一个检查用户和密码是否正确的程序check.asp://核对输入的用户和密码是否正确
<%
dim name,password
name=request.form("name")
password=request.form("password")
dim exec,conn,rs
exec="select *from check where(name='"&name&"' and password='"&password&"')"
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("admin.mdb")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn
if not rs.eof then
rs.Close
conn.Close
session("checked")="yes"
session("check")="right"
response.Redirect "index.asp"
else
session("checked")="no"
session("check")="wrong"
response.Redirect "login.asp"
end if
%>
  left.asp://管理导航
<%@language=vbscript%>
<%if not session("checked")="yes" then 
response.Redirect "login.asp"  
else
%>
<html>
<head>
<title>管理界面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body text="#000000" topmargin="0" bgcolor="#ffffff" leftmargin="10">
<div align="center"><a href="index.asp" target="_parent"><br>
  <br>
  管理界面首页</a> <a href="exit.asp" target="_parent">退出</a><br>  
  <br>
</div>
</body>
</html>
<%end if%>
  exit.asp://退出系统
<%@language=vbscript%>
<%
session("check")=""
session("checked")=""
response.redirect "login.asp"
%>
  right.asp://具体管理的内容
<%@language=vbscript%>
<%if not session("checked")="yes" then 
response.Redirect "login.asp"  
else
%>
<html>
<title>管理界面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#ffffff" text="#000000" topmargin="20" class="title">
这里是网页教学网的管理系统示例!请大家多研究使用!

 </body>
</html> 
<%end if%>


  运行时首先运行index.asp程序,运行效果部分截图如下:

分页技术

  今天最后一天我们学习一下ASP里面稍微难一点地分页技术,毕竟当我们有N条记录的时候我们不可能把所有记录显示在一个页面里面吧。

<%
exec="select * from test"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
rs.PageSize=3
pagecount=rs.PageCount 
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then page=1
rs.AbsolutePage=page 
%>

  rs.pagesize设置一个页面里面显示的记录数,pagecount是我们自己定义的一个变量,rs.pagecount是记录的个数,page也是我们自己定义的一个变量,我们下一页的链接可以设置为list.asp?page=<%=page+1%>,下一页的链接可以设置为list.asp?page=<%=page-1%>,这样当按下链接的时候调用页面自己,page这个变量就+1或者-1了,最后我们让rs.absolutepage(当前页面)为第page页就可以了。

  if request.QueryString("page")="" then page=1,这句话的作用就是我们打开list.asp的时候没有跟随page变量,自动设置为page=1,防止出错,还有当我们if....then...放在一行的时候end if可以省略。是不是分页也不难?

  下面说一种特殊情况:

if page=1 and not page=pagecount,这个时候没有上一页,但是有下一页


elseif page=pagecount and not page=1,这个时候没有下一页,但是有上一页


elseif page<1,这个时候没有任何记录


elseif page>pagecount then,这个时候没有任何记录


elseif page=1 and page=pagecount,这个时候没有上一页,没有下一页


else,这个时候有上一页,也有下一页。


  下面看一段显示1到n页,且每一个数字点击以后就出现这个数在代表的页面的代码,很常见哦。

<%for i=1 to pagecount%>
<a href="list.asp?page=<%=i%>"><%=i%></a><%next%>

  for....next是循环从i=1开始,循环一次加1到pagecount为止。

  最后我的实例里面包含了一个最简单的ASP程序,但是功能样样有,是ASP的精髓,每一个ASP大型程序都包含了它。

add.htm增加记录页面


add.asp增加记录操作


conn.asp数据库链接


del.asp删除记录操作


modify.asp修改记录页面


modifysave.asp修改记录操作


list.asp这个是这个程序的核心,通过这个页面实现记录的添加、修改、删除。