单片机嵌入ASP java嵌入式web服务器器,是怎么做出来的

基于51单片机的嵌入式web服务器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机的嵌入式web服务器
上传于||文档简介
&&本文研究了一种嵌入式TCP/IP技术的实现方法。在综合考虑了各种相关方法之后,通过单片机C与以太网控制器RTL8019AS实现嵌入式TCP/IP技术,完成了一个基于8位单片机嵌入式系统的设计。
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩46页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢一种嵌入式Web服务器的设计方案
> 一种嵌入式Web服务器的设计方案
一种嵌入式Web服务器的设计方案
本文引用地址:随着计算机技术和通讯技术的不断发展,互联网和嵌入式智能仪器得到越来越广泛的应用,人类社会进入后PC时代。本文主要介绍了设计方案,以及实现和主要应用。1.引言(Embedded Web Server,)是指将Web服务器嵌入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备。简化了传统服务器的系统结构,在嵌入式设备上它同时实现信息传输和网络接口的功能。嵌入式Web服务器基于HTTP协议运作,有标准的接口形式和通信协议。它可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。Web技术的开放性和平台独立特性能够降低开发难度,减少软件系统和通信系统的设计维护工作量,提高了现场测试和控制设备的管理水平。2.嵌入式WEB服务器总体设计方案接入Internet有很多种接入方式:电话拨号接入、ISDN,ADSL、以太网接入等,其中以太网作为一种廉价、高效的Internet接入方式,已经得到了非常广泛的应用,本文的Internet接入采用以太网方式。将TCP/IP协议栈嵌入到单片机中,使用网络控制芯片实现单片机的上网和数据传输。利用网络单片机(嵌入了TCP/IP协议栈的单片机)可以实现很多功能,嵌入式Web服务器就是其中的一种。通过Web服务器,客户端浏览器可以浏览这些设备的动态信息,并且还可以实现与系统的交互功能。(1)嵌入式Web服务器的一般结构嵌入式Web服务器的设计通常以通用Web服务器系统结构为蓝本,根据嵌入式系统的特性进行优化。嵌入式Web服务器的硬件系统包含了Web通信功能的微处理器或者微控制器系统,它可以和前端的应用系统直接集成在一起,也可以通过现场总线与应用系统相连。一个完整的硬件系统由微型处理器、FLASH存储器、DRAM存储器、网络接口和前端应用系统硬件所组成。微型处理器负责全局的运行和管理,FLASH存储器用来存储实时操作系统的系统内核、TCP/IP协议栈、各种Web文档;DRAM存储器在系统运行时使用;网络接口实现与Internet的连接;前端应用系统的硬件完成传统意义上的应用功能。由于嵌入式系统硬件资源有限,嵌入式Web服务器的硬件结构不能很复杂,实时操作系统的系统内核、TCP/IP协议栈、各种Web文档都必须存储在FLASH中,这对软件系统设计提出了较高的要求。嵌入式Web服务器应用系统的硬件结构如图1所示。(2)系统的硬件设计方案LPC2132微控制器是所设计的嵌入式Web服务器的核心,一方面LPC2132微控制器内部要实现TCP/IP协议栈,并驱动网络接口控制器,经耦合隔离变压器H1102和以太网以实现Internet接入;另一方面,LPC2132微控制器又是相应控制系统的控制单元。由于以太网的广泛使用,本文选择了最为常用的Internet接入方式,即通过以太网接入Internet.由美国Microchip公司生产的以太网控制芯片是本设计所选择的网络接口控制器,它集成了介质访问控制子层和物理层的功能,主要完成网络接口层中数据帧的发送和接收。H1102是一款耦合隔离变压器,用来对网络上的脉冲进行转换和滤波。H1102联接RJ45接头,可以直接接入以太网。串行电平转换模块选用了Maxim公司出品的MAXSP3232E芯片。该芯片内部含有倍增电路和转换电路,只需+5V电源供电即可实现TTL电平到RS232C电平的转换。RS232串口一方面是作为开发调试用的,一方面可以作为相应的通信应用。I/O口扩展包括系统的LED显示电路、JTAG调试电路以及其他测试电路等。(3)系统的软件设计方案Web服务器是在嵌入式TCP/IP协议栈的基础上实现的一种应用程序。从系统软件工作过程来看,可将系统分三部分:第一部分,以太网控制器驱动程序的实现;第二部分:嵌入式TCP/IP协议的实现,这部分内容在第一部分的基础上,结合系统具体环境,对标准TCP/IP协议进行简化并在ARM7单片机上进行移植;第三部分:应用层部分,通过嵌入式TCP/IP协议对用户数据进行收发处理。这里是在应用层实现HTTP协议来完成Web服务器功能的。所以系统软件设计部分主要包括了以太网控制器的驱动程序、嵌入式TCP/IP协议栈以及动态web网页的实现等几个模块:1)以太网控制器驱动程序是指LPC2132微控制器对芯片的驱动、控制过程。2)在LPC2132微控制器内部嵌入TCP/IP协议栈是系统实现的关键,它主要包括了ARP,ICMP,IP,TCP和HTTP协议的设计与实现。3)动态网页的实现。使用CGI技术,可以实现动态信息的交换,从而达到远程监视、控制的目的。软件设计中的另一任务是确定开发语言。对于嵌入式系统来说,掌握汇编语言的编程是至关重要的,即使使用高级语言来进行编程,通过阅读编译出来的汇编代码,也可以发现高级语言编程时需要优化的地方,从而提高高级语言所编写代码的执行效率。同时嵌入式系统的资源紧张,要合理利用资源,提高运行效率,关键部分、时间要求严格的部分还是需要使用汇编语言来完成。但汇编语言在代码编写和维护上效率较低,通用性不强,在复杂的项目上还是选用高级语言比较合理。在本设计中,采用汇编语言编写ARM7内核的启动代码(boot loader),其它的程序采用C语言作为设计语言。它有很明显的优势:C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,有丰富的库函数、运算速度快,而且可以直接实现对系统硬件的控制,较汇编语言有更好的可读性。3.嵌入式Web服务器设计的实现(1)主程序流程在主程序流程中,主要设计实现包括两大部分:第一是对接收到的以太网数据帧进行解包:第二则是对要发送的数据进行封装并发送。系统初始化模块主要包括了微控制器的初始化、网络接口芯片ENC28J60的初始化、TCP/IP协议栈中各标志的初始化等:ARP处理模块主要完成接收ARP请求并发送ARP响应;ICMP处理模块主要完成接收ICMP回显请求并发送ICMP回显响应;TCP数据处理模块主要完成对TCP数据报及HTTP数据的处理。当程序运行时,首先对系统初始化,这时系统处于等待状态,直到有数据帧到达。ENC28J60接收完数据帧以后,首先去除帧头,然后判断该数据帧的报文是否为ARP包,若是,则进行ARP数据包处理,若不是,则检查数据报头,看IP数据包的报文是否为ICMP数据包,若是ICMP数据包,则转到ICMP数据处理子程序。若不是ICMP数据包,就继续进行判断,看是否为TCP数据包,若为TCP数据包则转入TCP数据处理子程序,若此时即不是ICMP数据包也不是TCP数据包,则将该包丢弃。子程序的设计是为了完成TCP/IP协议体系的每一层的功能的,TCP/IP协议的每一层都是相互联系的,但也是相对独立的,具体由下面7个部分实现:以太网驱动程序、以太网层程序、ARP协议处理程序、IP协议处理程序、ICMP协议处理程序、TCP协议处理程序、HTTP协议处理程序。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一动态WebServer在单片机上的实现_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
动态WebServer在单片机上的实现
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢4627人阅读
软件项目设计(6)
jquery(2)
服务器端嵌入:Server Side Include,是一种类似于ASP的基于服务器的网页制作技术。大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令。另外,在计算机硬件领域SSI是同步串行接口(Synchronous Serial Interface)的英文缩写。
  将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。
  因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI 文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml
  之所以要扯到SSI,是因为shtml--server-parsed HTML 的首字母缩略词。包含有嵌入式服务器端包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。
  shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来
  比如:你可以在SHTML文件中用SSI指令引用其他的html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。
  目前,主要有以下几种用用途:
  1、显示服务器端环境变量&#echo&
  2、将文本内容直接插入到文档中&#include&
  3、显示WEB文档相关信息&#flastmod #fsize& (如文件制作日期/大小等)
  4、直接执行服务器上的各种程序&#exec&(如CGI或其他可执行程序)
  5、设置SSI信息显示格式&#config&;(如文件制作日期/大小显示方式) 高级SSI&XSSI&;可设置变量使用if条件语句。
  Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例:打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
  # AddType text/html .shtml
  # AddOutputFilter INCLUDES .shtml
  把这两行前面的#去掉。
  然后搜索“Options Indexes FollowSymLinks”
  在搜索到的那一行后面添加“ Includes”
  即将该行改变为:
  Options Indexes FollowSymLinks Includes
  保存httpd.conf,重起apache即可。
  开启shtml
  打开文件 ./include/config.inc.php &?php
  //数据库配置信息
  define('DB_HOST','localhost'); //数据库服务器主机地址
  define('DB_USER','root'); //数据库帐号
  define('DB_PW','root'); //数据库密码
  define('DB_NAME','phpcmsutf'); //数据库名
  define('DB_PRE','phpcms_'); //数据库表前缀,同一数据库安装多套Phpcms时,请修改表前缀
  define('DB_CHARSET','utf8'); //数据库字符集
  define('DB_PCONNECT',0); //0 或1,是否使用持久连接
  define('DB_DATABASE','mysql'); //数据库类型
  //网站路径配置
  define('PHPCMS_PATH','/cms/phpcms_utf/'); //Phpcms框架访问路径,相对于域名
  //shtml 支持
  define('SHTML',0); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
  将它:
  define('SHTML',0); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
  改成:
  define('SHTML',1); //是否支持 shtml,需要服务器支持,并且生成文件扩展名为 shtml
编辑nginx配置文件 vi /usr/local/nginx/conf/nginx.conf
  加入如下代码
  ssi_silent_
  ssi_types text/
  保存 重启 nginx
  SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:
  &!--#include file=&info.htm&--&
  就是一条SSI指令,其作用是将&info.htm&的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
  其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。
  当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。
  如何在我的WEB服务器上配置SSI功能?
  在一些WEB服务器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的文件必须使用已被映射到 SSI 解释程序的扩展名;否则,Web 服务器将不会处理该SSI指令;默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(Ssinc.dll)。
  Apache则是根据你的设置情况而定,修改srm.conf如:
  AddType text/x-server-parsed-html .shtml 将只对.shtml扩展名的文件解析SSI指令
  AddType text/x-server-parsed-html .html将对所有HTML文档解析SSI指令
  Netscape WEB服务器直接使用Administration Server(管理服务器)可打开SSI功能。
  Website使用Server Admin程序中的Mapping标签,扩展名添加内容类型为:wwwserver/html-ssi
  Cern服务器不支持SSI,可用SSI诈骗法,上下载一个PERL脚本,即可使你的CERN服务器使用一些SSI指令。(不支持exec指令。)
  程序代码:
  &!-– 指令名称=&指令参数&&
  &!-– 指令名称=&指令参数&&
  如 程序代码:
  &!--#include file=&info.htm&--&
  &!--#include file=&info.htm&--&
  说明:
  1.&!-- --&;是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
  2.#include 为SSI指令之一。
  3.file 为include的参数,info.htm为参数值,在本指令中指将要包含的文档名。
  注意:
  1.&!--与#号间无空格,只有SSI指令与参数间存在空格。
  2.上面的标点=&&,一个也不能少。
  3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。
  #echo 示范
  作用:
  将环境变量插入到页面中。
  语法:
  程序代码:
  &!--#echo var=&变量名称&--&
  &!--#echo var=&变量名称&--&
  本文档名称:程序代码:
  &!--#echo var=&DOCUMENT_NAME&--&
  &!--#echo var=&DOCUMENT_NAME&--&
  现在时间:程序代码:
  &!--#echo var=&DATE_LOCAL&--&
  &!--#echo var=&DATE_LOCAL&--&
  你的IP地址是程序代码:
  &!--#echo var=&REMOTE_ADDR&--&
  &!--#echo var=&REMOTE_ADDR&--&
  #include 示范
  作用:
  将文本文件的内容直接插入到文档页面中。
  语法:
  程序代码:
  &!--#include file=&文件名称&--&
  &!--#include virtual=&文件名称&--&
  &!--#include file=&文件名称&--&
  &!--#include virtual=&文件名称&--&
  file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file=&nav_head.htm&。
  virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file=&/hoyi/nav_head.htm&
  参数:
  file 指定包含文件相对于本文档的位置
  virtual 指定相对于服务器文档根目录的位置
  注意:
  1、文件名称必须带有扩展名。
  2、被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便,微软公司推荐使用 .inc 扩展名(这就看你的爱好了)。
  示例:
  程序代码:
  &!--#include file=&nav_head.htm&--&;将头文件插入到当前页面
  &!--#include file=&nav_foot.htm&--&;将尾文件插入到当前页面
  &!--#include file=&nav_head.htm&--&;将头文件插入到当前页面
  &!--#include file=&nav_foot.htm&--&;将尾文件插入到当前页面
  #flastmod 和#fsize 示范
  作用:#flastmod 文件最近更新日期
  #fsize 文件的长度
  语法:
  程序代码:
  &!--#flastmod file=&文件名称&--&
  &!--#fsize file=&文件名称&--&
  &!--#flastmod file=&文件名称&--&
  &!--#fsize file=&文件名称&--&
  参数:
  file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档
  virtual 指定相对于服务器文档根目录的位置 如 /hoyi/info.txt 表示
  注意:
  文件名称必须带有扩展名。
  示例:
  程序代码:
  &!--#flastmod file=&news.htm&--&
  &!--#flastmod file=&news.htm&--&
  将当前目录下news.htm文件的最近更新日期插插入到当前页面
  程序代码:
  &!--#fsize file=&news.htm&--&
  &!--#fsize file=&news.htm&--&
  将当前目录下news.htm的文件大小入到当前页面
  #exec 示范
  作用:
  将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。
  语法:
  程序代码:
  &!--#exec cmd=&文件名称&--&
  &!--#exec cgi=&文件名称&--&
  &!--#exec cmd=&文件名称&--&
  &!--#exec cgi=&文件名称&--&
  参数:
  cmd 常规应用程序
  cgi CGI脚本程序
  示例:
  程序代码:
  &!--#exec cmd=&cat /etc/passwd&--&;将会显示密码文件
  &!--#exec cmd=&dir /b&--&;将会显示当前目录下文件列表
  &!--#exec cgi=&/cgi-bin/gb.cgi&--&;将会执行CGI程序gb.cgi。
  &!--#exec cgi=&/cgi-bin/access_log.cgi&--&;将会执行CGI程序access_log.cgi。
  &!--#exec cmd=&cat /etc/passwd&--&;将会显示密码文件
  &!--#exec cmd=&dir /b&--&;将会显示当前目录下文件列表
  &!--#exec cgi=&/cgi-bin/gb.cgi&--&;将会执行CGI程序gb.cgi。
  &!--#exec cgi=&/cgi-bin/access_log.cgi&--&;将会执行CGI程序access_log.cgi。
  注意:
  从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。
  禁止方法:
  .Apache,将access.conf中的&Options Includes ExecCGI&这行代码删除;
  .在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元数据库;
  #config
  作用:指定返回给客户端浏览器的错误信息、日期和文件大小的格式。
  语法:
  程序代码:
  &!--#config errmsg=&自定义错误信息&--&
  &!--#config sizefmt=&显示单位&--&
  &!--#config timefmt=&显示格式&--&
  &!--#config errmsg=&自定义错误信息&--&
  &!--#config sizefmt=&显示单位&--&
  &!--#config timefmt=&显示格式&--&
  参数:
  errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。
  sizefmt 文件大小显示方式,默认为字节方式(&bytes&)可以改为千字节方式(&abbrev&)
  timefmt 时间显示方式,最灵活的配置属性。
  示例:显示一个不存在文件的大小
  程序代码:
  &!--#config errmsg=&服务器执行错误,请联系管理员,谢谢!&--&
  &!--#fsize file=&不存在的文件.htm&--&
  &!--#config errmsg=&服务器执行错误,请联系管理员 ,谢谢!&--&
  &!--#fsize file=&不存在的文件.htm&--&
  以千字节方式显示文件大小
  程序代码:
  &!--#config sizefmt=&abbrev&--&
  &!--#fsizefile=&news.htm&--&
  &!--#config sizefmt=&abbrev&--&
  &!--#fsizefile=&news.htm&--&
  以特定的时间格式显示时间
  程序代码:
  &!--#config timefmt=&%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期&--&
  &!--#echo var=&DATE_LOCAL&--& 显示今天是星期几,几月,时区
  &!--#config timefmt=&今天%A,%B,服务器时区是 %z,是&--&
  &!--#echo var=&DATE_LOCAL&--&
  &!--#config timefmt=&%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期&--&
  &!--#echo var=&DATE_LOCAL&--& 显示今天是星期几,几月,时区
  &!--#config timefmt=&今天%A,%B,服务器时区是 %z,是&--&
  &!--#echo var=&DATE_LOCAL&--&
  XSSI(Extended SSI)是一组高级SSI指令,内置于Apache 1.2或更高版本的mod-include模块之中。
  其中可利用的的指令有:
  #printenv
  #printenv
  作用:显示当前存在于WEB服务器环境中的所有环境变量。
  语法:程序代码:
  &!--#printenv--&
  &!--#printenv--&
  &!--#printenv--&
  &!--#printenv--&
  作用:可给变量赋值,以用于后面的if语句。
  语法:程序代码:
  &!--#set var=&变量名&value=&变量值&--&
  &!--#set var=&变量名&value=&变量值&--&
  参数:无
  示例:程序代码:
  &!--#set var=&color&value=&红色&--&
  &!--#set var=&color&value=&红色&--&
  作用:创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。
  语法:程序代码:
  &!--#if expr=&$变量名=\&变量值A\&&--&
  显示内容
  &!--#elif expr=&$变量名=\&变量值B\&&--&
  显示内容
  &!--#else--&
  显示内容
  &!--#endif&--&
  &!--#if expr=&$变量名=\&变量值A\&&--&
  显示内容
  &!--#elif expr=&$变量名=\&变量值B\&&--&
  显示内容
  &!--#else--&
  显示内容
  &!--#endif&--&
  示例:
  程序代码:
  &!--#if expr=&$SERVER_NAME欢迎光临好易CGI工厂在淄博热线的分站。
  &!--#elif expr=&$SERVER_NAME欢迎光临好易CGI工厂在太阳城的分站。
  &!--#else--&
  欢迎光临好易CGI工厂!
  &!--#endif&--&
  &!--#if expr=&$SERVER_NAME&--&
  欢迎光临好易CGI工厂在淄博热线的分站。
  &!--#elif expr=&$SERVER_NAME--&
  欢迎光临好易CGI工厂在太阳城的分站。
  &!--#else--&
  欢迎光临好易CGI工厂!
  &!--#endif&--&
  注意:用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。
  1、Config命令
  Config命令主要用于修改SSI的默认设置。其中:
  Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。
  &!--#config errmsg=&Error! Please email
  Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。
  &!--#config timefmt=&%A,%B %d,%Y&--&
  &!--#echo var=&LAST_MODIFIED& --&
  显示结果为:
  Wednesday,April 12,2000
  也许用户对上例中所使用的%A %B %d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。
  Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为&bytes&;对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。
  &!--#config sizefmt=&bytes& --&
  &!--#fsize file=&index.html& --&
  2、Include命令
  Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!
  Include命令具有两个不同的参数:
  Virtual:给出到服务器端某个文档的虚拟路径。例如:
  &!--#include virtual=&/includes/header.html& --&
  File:给出到当前目录的相对路径,其中不能使用&../&,也不能使用绝对路径。例如:
  &!--#include file=&header.html& --&
  这就要求每一个目录中都包含一个header.html文件。
  3、Echo命令
  Echo命令可以显示以下各环境变量:
  DOCUMENT_NAME:显示当前文档的名称。
  &!--#echo var=&DOCUMENT_NAME& --&
  显示结果为:
  index.html
  DOCUMENT_URI:显示当前文档的虚拟路径。例如:
  &!--#echo var=&DOCUMENT_URI& --&
  显示结果为:
  /YourDirectory/YourFilename.html
  随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:
  http://yourdomain&;!--#echo var=&DOCUMENT_URI& --&
  QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符&\&。例如:
  &!--#echo var=&QUERY_STRING_UNESCAPED& --&
  DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如:
  &!--#config timefmt=&%A,the %d of %B,in the year %Y& --&
  &!--#echo var=&DATE_LOCAL& --&
  显示结果为:
  Saturday,the 15 of April,in the year 2000
  DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:
  &!--#echo var=&DATE_GMT& --&
  LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。
  &!--#echo var=&LAST_MODIFIED& --&
  CGI环境变量
  除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:
  SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:
  &!--#echo var=&SERVER_SOFTWARE& --&
  SERVER_NAME:显示服务器的主机名称,DNS别名或IP地址。例如:
  &!--#echo var=&SERVER_NAME& --&
  SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:
  &!--#echo var=&SERVER_PROTOCOL& --&
  SERVER_PORT:显示服务器的响应端口。例如:
  &!--#echo var=&SERVER_PORT& --&
  REQUEST_METHOD:显示客户端的文档请求方法,包括GET,HEAD,和POST。例如:
  &!--#echo var=&REQUEST_METHOD& --&
  REMOTE_HOST:显示发出请求信息的客户端主机名称。
  &!--#echo var=&REMOTE_HOST& --&
  REMOTE_ADDR:显示发出请求信息的客户端IP地址。
  &!--#echo var=&REMOTE_ADDR& --&
  AUTH_TYPE:显示用户身份的验证方法。
  &!--#echo var=&AUTH_TYPE& --&
  REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。
  &!--#echo var=&REMOTE_USER& --&
  4、Fsize命令
  显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。
  &!--#fsize file=&index_working.html& --&
  5、Flastmod命令
  显示指定文件的最后修改日期,可以结合config 命令的timefmt参数控制输出格式。
  &!--#config timefmt=&%A,the %d of %B,in the year %Y& --&
  &!--#flastmod file=&file.html& --&
  这里,我们可以利用flastmod参数显示出一个页面上所有链接页面的更新日期。方法如下:
  &!--#config timefmt=& %B %d,%Y& --&
  &A HREF=&/directory/file.html&&File&/A&
  &!--#flastmod virtual=&/directory/file.html& --&
  &A HREF=&/another_directory/another_file.html&&Another File&/A&
  &!--#flastmod virtual=&/another_directory/another_file.html& --&
  显示结果为:
  File April 19,2000
  Another File January 08,2000
  6、Exec命令
  Exec命令可以执行CGI脚本或者shell命令。使用方法如下:
  Cmd:使用/bin/sh执行指定的字串。如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。
  Cgi:可以用来执行CGI脚本。例如,下面这个例子中使用服务端cgi-bin目录下的脚本程序在每个页面放置一个计数器:
  &!--#exec cgi=&/cgi-bin/ --&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:27553次
排名:千里之外
转载:13篇
(1)(3)(3)(10)

我要回帖

更多关于 boa嵌入式web服务器 的文章

 

随机推荐