现在ASP已经落伍了,没有完全学习的必要,主要的作用是维护和更新一些旧系统。因此,不讲语法,讲操作。
语法可参照:http://www.w3school.com.cn/asp/index.asp
1、 运行环境
Windows 最好是Server,没有那么XP也行。
IIS 5.0以上版本,如果是6.0,那么默认的ASP功能是不开放的。如需开放,请参照:
asp脚本在目前的网页开发方面使用的很广泛,但windows 2003中自带的iis 6.0默认情况下不支持asp脚本,但可以运行aspx程序,这给运行和调试asp代码带了不便。其实,在windows 2003的internet信息管理器中稍加调整,就可以解决这一问题。
点击“开始/程序/管理工具/internet信息管理器”,在iis管理器窗口中,在窗口左侧面板选中“web 服务扩展”,在窗口右侧的属性列表中点击“active server pages”项,可以在状态栏看到该项处于禁止状态(如图1),点击“允许”按钮将该项状态设为允许。此外,在网站列表中选中网站名,在其右键菜单上选择属性,在网站属性窗口中选中“主目录”面板,点击“配置”按钮,在应用程序配置窗口中选中“选项”面板,勾选“启用父路径”项(如图2),这样,iis6.0就可以支持asp了。
2、 连接数据库
新建一个XX.udl的文件,双击打开就是ADO连接字符串生成器了,一路Next即可。
如果是ACCESS数据库,那么请确认是否允许用户名为IIS_XXXXXX的,否则访问ASP页面时会出现拒绝访问数据库的问题。
3、 Ajax及乱码问题
对于服务端脚本,在脚本开头:
PHP:header('Content-Type:text/html;charset=UTF-8');
ASP:Response.Charset="UTF-8"
JSP:response.setHeader("Charset","UTF-8");
注意ASP,很多地方是Response.Charset("UTF-8"),这是不正确的,Charset是属性不是方法,误导了很多人。
对于HTML
<head>
<meta name="description"content="Free Web tutorials" />
<meta name="keywords"content="HTML,CSS,XML,JavaScript" />
<meta name="author" content="HegeRefsnes" />
<meta http-equiv="content-type"content="text/html;charset=UTF-8" />
</head>
charset=编码名称。
对于<script>
<scriptetype="text/javascript" charset="UTF-8">
但是,在实际应用中,特别是页面转换时,会出现前一个页面是UTF-8的,后面页面突然跳到了GB2312,然后乱码了,怎么办?
在服务器asp(PHP,JSP自行查方法)脚本开头中写入
Session.CodePage=65001
保持在这个Session中一直是UTF-8。
如果你想统一成GB2312,那么记得把上面的UTF-8换成GB2312,65001换成936。
这三部完成,基本可以解决乱码问题。
4、 关于<!--include file=”XX.asp”-->
XX.asp可以使用..\conn.asp
Include包含的是代码段,因此,如果包含了on error resume next,那么在整个include该文件的,asp页面中,执行错误语句均不报错。小心慎用。
同名变量也是如此。
5、 代码技巧
5.1组织SQL
Dimsql,rs
Sql=”select* from db1 where 1=1”
iff1<>”” then
sql=sql & “f1=’” &f1&”’”
endif
iff2<>”” then
sql=sql & “f2=’” &f2&”’”
endif
注意点是1=1,在没有附加条件情况下,SQL语句各个部分完整照样可以运行。
5.2查询页面包含多个表格
<%if lx=”lx1” then%>
<table id=table1 …..>
</table>
<%else if=”lx2” %>
<table id=table1 …..>
</table>
……
<%end if%>
5.3查询结果导出Excel文件
可以把这部分做成include文件,放在需要导出的页面开头执行
<meta http-equiv="Content-Type"content="application/vnd.ms-excel">
<meta http-equiv="Content-Disposition"content="attachment; filename=ex.xls">
也可以用asp脚本
<%Response.ContentType ="application/vnd.ms-excel"%>
替代原有HTML中的<meta>标签即可。
导出word,则替换ms-excel为ms-word,ex.xls为wo.doc
5.4打开强制变量声明
<%Option Explicit%>
好处,不好出现笔误引起的错误,比如
Sqll=”select * from db1”
Set rs=conn.execute(sql1)
你跑一辈子都是错的,而且还很难看出错误,debug也很困难。有了强制变量声明,程序会发现sql1不是sqll,那么就好办多了。
5.5ADO的特殊设置
游标引起的各种问题
Set rs=conn.Execute(sql),rs会继承conn.CursorLocation,因此,conn.CursorLocation=3,不然rs.RecordCount=-1,,而且不设置游标会影响move方法和addnew,update,updatebatch
当需要rs.update时,请用
Set rs=Server.CreateObject(“ADODB.RecordSet”)
rs. Open sqlstr,conn,1,3
当需要updatebatch时
Open sqlstr,conn,1,4
快速生成表格
<%str=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")%>
<table border="1"width="100%">
<tr>
<td><%Response.Write(str)%></td>
</tr>
</table>
GetString格式:Setstr=objRecordset.GetString(format,n,coldel,rowdel,nullexpr)