最重要,也是最激动人心的时候来了。现在,我将一步一步地拨开这三种方式的神秘面纱,并且实现相应的功能代码……
1、 重写url参数
Step1: 建立前台文件index.asp,修改url参数形式。由于读取数据库中的记录不是专题的重点,故直接给出:
<%
var rs=Server.CreateObject("adodb.recordset");
sql="select * from Article";
rs.open(sql,conn,1,1)
while(!rs.EOF)
{
%>
<%=rs("title")%>
<%
rs.MoveNext();
}
rs.Close();
rs=null;
%>
Step2:为了达到伪静态的目的,就必须在前台页面加上伪静态的代码。接下来就要修改url的参数形式:
在<%=rs("title")%>两边插入.html">和,即.html"><%=rs("title")%>。
1、Article.asp?/<%=rs("id")%>.html:这句代码实现了伪静态,当点击该链接后,地址显示的就是href的值。
2、至此前台脚本就写完了,最关键的一句就是article.asp?/<%=rs("id")%>.html。接下来写后台的处理数据。
index.asp:
<%
var rs=Server.CreateObject("adodb.recordset");
sql="select * from Article";
rs.open(sql,conn,1,1)
while(!rs.EOF)
{
%>
<%
rs.MoveNext();
}
rs.Close();
rs=null;
%>
Step3:新建一个后台文件Article.asp,保存核心代码。由于连接数据库不是本专题的重点,故直接给出:
/*连接数据库的代码*/
<%
ReadNews(id); ‘从数据库中读出记录
%>
标题: <%=News_title%>
/*显示记录*/
内容: <%=News_content%>
Step4:由于传递进的url包含参数,故首先截取参数:
var sParam=String(Request.ServerVariables("QUERY_STRING"));
1、ServerVariables是asp的环境变量,UERY_STRING保存了动态url的参数。例如,如果url是www.oursn.com/essay.asp?/1.html,那么sParam保存的值就是问号以后的字符串,即sParam=/1.html。
2、String()是将参数强制性转化为字符串,这里Request .ServerVariables返回的是一个对象object,而不是字符出串,故需要转化。
Article.asp:
/*连接数据库的代码*/
<%
var sParam=String(Request.ServerVariables("QUERY_STRING"));
ReadNews(id); ‘从数据库中读出记录
%>
标题: <%=News_title%>
/*显示记录*/
内容: <%=News_content%>
Step5:截取参数字符串后,进一步获取id的值,这里是数字1,可以通过字符串方法replace()来实现:
var id=parseInt(sParam.replace("/","").replace(".html",""));
1、sParam.replace("/","")是用空格代替了sParam中的斜杠,即1.html。
2、sParam.replace("/","").replace(".html","")是用空格代替了1.html的. Html,即1,但这时的1还是字符串,再通过parseInt()强制转化为整型,最后赋给id。则id中保存是值型的1。
Article.asp:
/*连接数据库的代码*/
<%
var sParam=String(Request.ServerVariables("QUERY_STRING"));
var id=parseInt(sParam.replace("/","").replace(".html",""));
ReadNews(id); ‘从数据库中读出记录
%>
标题: <%=News_title%>
/*显示记录*/
内容: <%=News_content%>
config.asp中的代码:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%
var db="data.mdb";
var conn = Server.CreateObject("ADODB.Connection")
var connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(db);
conn.open(connstr)