试用EF开发WEB应用程序(7): Query String应用,简单计算器

题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/在线留言


试用EF开发WEB应用程序(7):Query String应用,简单计算器

  前面的系列文章讲了很多Query String,现在给大家看一个Query String的实际应用,简单计算器。这个小小的网络程序功能很简单,就是对用户输入的两个数值进行加减乘除运算,输出计算结果。

下面请看“易语言.飞扬”源代码:

引入fastcgi;

公开类启动类
{
公开静态启动()
{
FCGIfcgi
= new FCGI;
while (fcgi.Accept() >= 0 )
{
文本html
= html_template.替换全部( " $(title) " , " 简单计算器(由EF开发) " );
文本result
= " ? " ;
if (fcgi.QUERY_STRING != "" )
result
= doCalc(fcgi.QUERY_STRING( " op " ),fcgi.QUERY_STRING( " op1 " ),fcgi.QUERY_STRING( " op2 " ));
html
= html.替换( " $(op1) " ,fcgi.QUERY_STRING( " op1 " ));
html
= html.替换( " $(op2) " ,fcgi.QUERY_STRING( " op2 " ));
html
= html.替换( " $(result) " ,result);
html
= setSelectedOp(html,fcgi.QUERY_STRING( " op " ));
fcgi.Output(html.到UTF8());
}
}

静态文本doCalc(文本op,文本op1,文本op2)
{
假如(op)
{
" + " :返回(op1.到小数() + op2.到小数()).到文本();
" - " :返回(op1.到小数() - op2.到小数()).到文本();
" * " :返回(op1.到小数() * op2.到小数()).到文本();
" / " :返回(op1.到小数() / op2.到小数()).到文本();
为其他:返回
" [error] " ;
}
}

静态文本setSelectedOp(文本html,文本op)
{
文本s1,s2,s3,s4;

假如(op)
{
" + " :s1 = " selected " ;
" - " :s2 = " selected " ;
" * " :s3 = " selected " ;
" / " :s4 = " selected " ;
}

html
= html.替换( " $(isSelected+) " ,s1);
html
= html.替换( " $(isSelected-) " ,s2);
html
= html.替换( " $(isSelected*) " ,s3);
html
= html.替换( " $(isSelected/) " ,s4);

返回html;
}

常量文本html_template
= [ " Content-type:text/html

< html >< head >
< metahttp - equiv = " content-type " content = " text/html;charset=utf-8 " >
< title > $(title) </ title >
</ head >
< body >
< h1 > $(title) </ h1 >
< hr ></ hr >

< form >
< inputtype = " text " name = " op1 " size = 10 maxlength = 10 value = " $(op1) " >

< selectname = " op " >
< optionvalue = " + " $(isSelected + ) > + </ option >
< optionvalue = " - " $(isSelected - ) > - </ option >
< optionvalue = " * " $(isSelected * ) > * </ option >
< optionvalue = " / " $(isSelected / ) > / </ option >
</ select >

< inputtype = " text " name = " op2 " size = 10 maxlength = 10 value = " $(op2) " >

= $(result)

< p >< inputtype = " submit " value = " 计算 " ></ input ></ p >
</ form >

< hr ></ hr >
< p > byliigo, < ahref = " http://blog.csdn.net/liigo/ " > http: // blog.csdn.net/liigo/</a></p>
</ body >
</ html >
" ];
}

有机会将提供在线演示地址(欢迎推荐支持FastCGI的优秀的虚拟空间),现在只能先看图片了,下面是运行结果:

试用EF开发WEB应用程序(7): Query String应用,简单计算器

认为以上EF代码太多太复杂的想法可以休矣。我写这个程序时,花费了很多的笔墨,用于提高程序可操作性,其中包括:自带FORM,记忆上次提交的操作数和运算符,显示计算结果。如果仅仅只是显示计算结果的话,代码其实可以大大地简化:

引入fastcgi;

公开类启动类
{
公开静态启动()
{
FCGIfcgi
= new FCGI;
while (fcgi.Accept() >= 0 )
{
文本op1
= fcgi.QUERY_STRING( " op1 " );
文本op2
= fcgi.QUERY_STRING( " op2 " );
文本op
= fcgi.QUERY_STRING( " op " );

fcgi.Output(
" Content-type:text/plain " );
if (op1 != "" && op2 != "" && op != "" )
fcgi.Output(op1
+ " " + op + " " + op2 + " = " + doCalc(op,op1,op2));
else
fcgi.Output(
" [parameterserror] " );
}
}

静态文本doCalc(文本op,文本op1,文本op2)
{
假如(op)
{
" + " :返回(op1.到小数() + op2.到小数()).到文本();
" - " :返回(op1.到小数() - op2.到小数()).到文本();
" * " :返回(op1.到小数() * op2.到小数()).到文本();
" / " :返回(op1.到小数() / op2.到小数()).到文本();
为其他:返回
" [error] " ;
}
}
}

上面这个代码就简单多了,当然可操作性就弱了很多,只能显示计算结果而已。使用此程序时需提供URL参数或通过FORM提交参数。这个简化后的“简单计算器”(在线演示)的执行结果见下图:

试用EF开发WEB应用程序(7): Query String应用,简单计算器

下文预告:CGI环境变量

你可能感兴趣的:(html,Web,.net,网络应用,Blog)