服务器端技术 基本服务:从文件系统中返回静态页面 扩展服务——支持页面的动态生成: 服务器端程序加载技术: 公共网关接口(CGI) 插件技术:NSAPⅠ、 ISAPI Servlet 服务器端脚本技术: Livewire、ASP JSP
服务器端技术 • 基本服务:从文件系统中返回静态页面。 • 扩展服务——支持页面的动态生成: – 服务器端程序加载技术: • 公共网关接口 (CGI) • 插件技术: NSAPI、ISAPI • Servlet – 服务器端脚本技术: Livewire、ASP、 JSP
公共网关接口(CGⅠ 最早的动态页面生成技术:HTTP守护进 程与网关程序之间的通信协议。 激活服务器端的某个程序,从已经被重 定向到HTTP守护进程的标准输入或环境 变量读入参数,产生一个服务进程并执 行,结果生成一个HTML文本,并向同 样被重定向了的标准输出写出
公共网关接口(CGI) • 最早的动态页面生成技术:HTTP守护进 程与网关程序之间的通信协议。 • 激活服务器端的某个程序,从已经被重 定向到HTTP守护进程的标准输入或环境 变量读入参数,产生一个服务进程并执 行,结果生成一个HTML文本,并向同 样被重定向了的标准输出写出
CG举例 Hello,You! HTML页面中的表单: <forM ActiOn=httP: //localhost/cgi-bin/test. exe"method="poSt My name is <INPUT TYPE=TEXT NAME="name <INPUT TYPE= SUBMIT"> </FORM> 服务器虚拟目录/cgi-bin下的 greeting. exe(源码): #include <stdio. h void maino i char s[100] scanf("%os", &s) printf("content-TYPE: text/html nin printf("<html><body>Hello, %s!</body></html>, &(s[5]))
CGI举例——Hello, You! • HTML页面中的表单: • <FORM ACTION="http://localhost/cgi-bin/test.exe" METHOD="POST"> • My name is <INPUT TYPE="TEXT" NAME="name"> • <INPUT TYPE="SUBMIT"> • </FORM> • 服务器虚拟目录/cgi-bin下的greeting.exe(源码): • #include <stdio.h> • void main() • { char s[100]; • scanf("%s",&s); • printf("content-TYPE: text/html \n\n"); • printf("<html><body>Hello, %s!</body></html>",&(s[5])); • }
CGI缺点 1)一次用户请求产生一个进程,占用资源过多,难以用 于处理大量用户的密集请求 (2)CG进程间通信十分困难,一般只能用文件读写作为 中介。 3)CGI没有安全框架,难以用于有较高安全性要求的事 务处理。 (4)CGI没有对象模型,难以满足商业事务处理的要求 其它服务器端程序动态加载技术都是对CGI方式的 改进与扩充
CGI缺点 • (1)一次用户请求产生一个进程,占用资源过多,难以用 于处理大量用户的密集请求。 • (2)CGI进程间通信十分困难,一般只能用文件读写作为 中介。 • (3)CGI没有安全框架,难以用于有较高安全性要求的事 务处理。 • (4)CGI没有对象模型,难以满足商业事务处理的要求。 • 其它服务器端程序动态加载技术都是对CGI方式的 改进与扩充
ISAPI- 个过渡性改进 微软的技术。基本思路是由HTTP守护进 程加载可独立执行的网关程序改为加载 动态链接库,取消了启动与释放进程的 开销
ISAPI——一个过渡性改进 • 微软的技术。基本思路是由HTTP守护进 程加载可独立执行的网关程序改为加载 动态链接库,取消了启动与释放进程的 开销