CSP 概述(一)

来源:互联网 发布:手机淘宝账号登陆不了 编辑:程序博客网 时间:2024/05/17 06:20

最近看到了关于CSP的文章, 感觉很好, 对于初学者是个很好的认识材料. 故做了以下翻译, 以便一直支持中文的朋友欣赏:

CSP语法:

CSP脚本语言是一种HTML/C++混合在一起使用的脚本语言. 在CSP语言中,C++代码是嵌在"<%"与"%>" 之间的(<%...(C++ 代码)..%>)标签中的, 这个标签是嵌在HTML中的.例如:
<p>这是 HTML 代码.</p>
<%
// 这里是 C++ 代码
int x = 0;
%>

和其他类似的脚本语言一样, 你能直接执行C++语句,通过使用"<%= 表达式%>"标签,把结果输出到客户端.例如:

<p>变量的值是:<%=MyVariable%></p>

注意:当你使用这个执行标签时, 在"<%"和"="之间没有空格. 同时在这个标签内你一定要使用C++表达式,而不是C++的声明, 也就是说这里的C++表达式是不带终止符";"(分号)的.
内嵌的对象有:Response, Request, Session, Application 和 Page, 这些对象都可以在C++代码中使用.
除了在脚本中使用C++代码外,可能还需要声明全局变量, 和 在脚本第一次执行或从内存中卸载时要执行的的初始化或清空代码.

这个C++ 代码的全局部分是通过使用标签:"<%!global: ... (全局 C++ 代码) ...%>" 或者使用简单的标签:"<%! ... (全局的C++ 代码) ...%>"来实现的, 比如:

<%! // 全局代码
int iCount = 0;
%>

<% // 主体代码部分

++iCount;
%>
<p>
Hits since script was first loaded:
<% // body code
Response.Write( iCount );
%>
</p>

C++ 代码的初始部分使用标签:"<%!onload: ... (要初始的 C++ 代码) ...%>". 例如:


<%! // 全局代码部分
int iCount;
%>

<%!onload: // 初始化代码部分
iCount = 1;
%>

<% // body部分代码
++iCount;
%>
<p>
Hits since script was first loaded:
<% // body 部分代码
Response.Write( iCount );
%>
</p>

每当在CSP脚本中的编译后的二进制文件(dll)被加载到内存时, 这个初始化代码就会被执行一次.
内嵌的Page 和 Application 对象可以在这个部分使用.


这个在C++ 代码中的清空部分是使用标签:"<%!onfree: ... (要清除的 C++ 代码) ...%>". 例如:

<%! // 全局代码部分
unsigned char* pMem;
%>

<%!onload: // 初始化代码部分
pMem = new unsigned char [1024];
%>

<%!onfree: // 清空代码部分
delete[] pMem;
%>


每当在CSP脚本中卸载已编译的二进制文件(dll)到内存时, 这个清空代码部分就会被执行一次.
内嵌的Page 和 Application 对象可以在这个部分使用.
 

原创粉丝点击