VFP使用HTML模板文件

纯静态内容显示

想要在在网页中显示

Today is the third day of study VFP BS!

前端模板文件内容如下,有点类似于ASP代码风格:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>VFP_freeBS3</title>
    </head>
    <body>
        <%=U("Today is the third day of study VFP BS!")%>
    </body>
</html>

如果直接打开这个模板文件,代码会原样输出,并未成功执行,网页上显示的内容为

<%=U("Today is the third day of study VFP BS!")%>

这并不是我们想显示的内容,因为此模板文件必须经过VFP后端处理才能正确显示。

后端代码为:

DEFINE CLASS ctl_html as Session
    PROCEDURE html
        cHtml=GetWwwRootPath("template")+"freebs3.html"
        _currentcode="UTF-8"
        RETURN FWS_MergeFile(cHtml)
    ENDPROC 
ENDDEFINE

此时再通过浏览器访问

http://192.168.3.159:801/ctl_html.fsp?proc=html

此时网页上就会显示:

Today is the third day of study VFP BS!

如下图
请输入图片描述

至此,我们已成功输出了静态文本内容,那么有没有办法像ASP一样,输出动态内容呢?当然是可以的。我们只需要对模板文件和VFP后端过程进行一下加工即可。


再引入变量内容显示

前端代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>VFP_freeBS3</title>
    </head>
    <body>
        <p><%=U("Today is the third day of study VFP BS!")%></p>
        <p><%=U(lcMess)%></p><!-- 此处使用变量,该变量应当与VFP后端保持一致,否则无法执行 -->

    </body>
</html>

后端代码:

DEFINE CLASS ctl_html as Session
    PROCEDURE html
        PRIVATE lcMess
        lcMess="能够写到这一步了,很不错哟,继续努力吧!"
        lcMess=lcMess+"<br>"+DTOC(DATETIME())
        cHtml=GetWwwRootPath("template")+"freebs3.html"
        _currentcode="UTF-8"
        RETURN FWS_MergeFile(cHtml)
    ENDPROC 
ENDDEFINE

通过浏览器访问的效果如下:

Today is the third day of study VFP BS!

能够写到这一步了,很不错哟,继续努力吧!

08/03/21


读入数据库记录内容显示

前端代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>VFP_freeBS3</title>
        <style type="text/css">
        table {
            /*margin:0 auto;*/
            border-collapse: collapse;
            border-spacing: 0;
            
        }
        th {
          background-color: #4CAF50;
          color: white;
          height:30px;
        }
        tr:hover {background-color: #f5f5f5;}
        td{
            border: 1px solid #DDD;
            padding: 5px 8px;
            word-break: break-all;
        }
        </style>
    </head>
    <body>
        <TABLE>
            <TR>
                <TH>报名号</TH>
                <TH>姓名</TH>
                <TH>性别</TH>
            </TR>
            <%scan%>
            <TR>
                <TD><%=U(luqu.bmh)%></TD>
                <TD><%=U(luqu.xm)%></TD>
                <TD><%=U(luqu.xb)%></TD>
            </TR>
            <%endscan%>
        </TABLE>        
        
    </body>
</html>

后端代码

DEFINE CLASS ctl_html as Session
    PROCEDURE html
        PRIVATE cName,cBmh,cXb
        oDBS=NEWOBJECT("MSSQLHelper","MSSQLHelper.prg")
        TEXT TO lcSQLCmd NOSHOW TEXTMERGE
            SELECT TOP 20 signup_bmh as bmh,signup_xm as xm,signup_xb as xb FROM student_signup
        ENDTEXT
        ?lcSQLCmd
        ofrmMain.log(lcSQLCmd)
        nHandle=oDBS.SQLQuery(lcSQLCmd,"luqu")
        IF nHandle<0
            ERROR oDBS.errmsg
        ENDIF
        
        cHtml=GetWwwRootPath("template")+"freebs3.html"
        _currentcode="UTF-8"
        RETURN FWS_MergeFile(cHtml)
    ENDPROC 
ENDDEFINE

需要说明的是,在后端读取数据前需要先进行账套设置
运行效果

运行效果

本课关键点总结:

输出内容的闭合标签:<%=U("此处为需要输出的内容")%>
获取模板文件的函数:GetWwwRootPath("模板文件所在目录")+"模板文件名称"
合并输出HTML文件内容:FWS_MergeFile(cHtml)
声明变量,以便前端获取:PRIVATE
定义数据库连接: oDBS=NEWOBJECT("MSSQLHelper","MSSQLHelper.prg"),oDBS为自定义变量


第三课视频学习教程

由于服务器原因,在线视频暂时下线了。

发表评论