ASP编程的本质:服务端脚本生成HTML
经典ASP(Active Server Pages)是微软推出的服务端脚本环境,代码在IIS中执行,结果以HTML返回浏览器。它的核心不是框架,而是“页面即脚本”:.asp文件从上到下执行,遇到就运行服务端代码。理解这一点,调试时就不会把服务端逻辑和浏览器行为混为一谈。
Response.Write输出内容,是它的简写,这是ASP编程最基础的写法。
五个内置对象要分清
ASP提供Request、Response、Server、Session、Application五个内置对象,用途各不相同:
- Request:读取客户端数据,
Request.Form取POST值,Request.QueryString取URL参数。 - Response:控制输出,
Redirect跳转、End终止执行。 - Server:
CreateObject创建组件,HTMLEncode做输出转义。 - Session:单用户会话,适合存登录状态,但要注意超时与并发。
- Application:全站共享,需配合
Lock/Unlock避免并发写冲突。
分清对象边界,是写好ASP编程的第一步。
表单处理与输入校验
典型流程是:表单POST提交,Request.Form取值,校验后写入数据库或给出提示。
<%
Dim name
name = Trim(Request.Form(“name”))
If name = “” Then
Response.Write “请输入姓名”
Else
Response.Write “你好,” & Server.HTMLEncode(name)
End If
%>
两个细节值得强调:一是Trim去除首尾空格,避免“空值绕过”;二是输出时用HTMLEncode,防止脚本注入。校验永远放在服务端,前端提示只是体验优化。
用ADO访问数据库
ASP编程的数据库交互依赖ADO。标准写法是创建Connection、打开、执行SQL、关闭释放:
<%
Dim conn, rs
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.Open “Provider=SQLOLEDB;Data Source=.;Initial Catalog=demo;User ID=sa;Password=*“
Set rs = conn.Execute(“SELECT id,title FROM news”)
Do While Not rs.EOF
Response.Write rs(“title”) & “
“
rs.MoveNext
Loop
rs.Close : Set rs = Nothing
conn.Close : Set conn = Nothing
%>
关键原则:拼接SQL时用参数化命令(Command对象+Parameters),不要直接拼字符串;连接串不要写死在页面里,放到配置文件并限制权限;用完立刻Close并置Nothing,减少连接泄漏。
安全与性能的实用建议
- 关闭详细错误输出,避免泄露路径与SQL。
- 对文件上传、路径参数做白名单校验,防止目录穿越。
- 会话中不存敏感明文,登录后重置SessionID。
- 循环内避免重复创建对象,把对象提到循环外。
- 静态内容交给IIS缓存,脚本只处理动态部分。
ASP编程的价值在于读懂存量系统并稳妥改造。掌握内置对象、参数化查询与输入输出转义这三件事,多数遗留页面的问题都能定位和修复。