浅析JSP HTTP服务器支持CGI

开发 后端
本文简单介绍JSP HTTP服务器支持CGI,包括介绍不需要参数的CGI程序的调用和需要参数的CGI程序的调用。

JSP HTTP服务器支持CGI简而言之就是支持客户端调用服务器端的CGI例程。在服务器端,CGI一般以可执行文件的形式存放(例如:可执行文件,可执行脚本)。这些CGI执行文件可以单独运行也可以接受客户端的请求作为参数运行。而HTTP服务器就要担负起调用CGI可执行文件以及将客户端的请求参数传递给CGI程序,并将CGI的执行结果反馈给客户端。

1. JSP HTTP服务器不需要参数的CGI程序的调用

对于不需要参数的CGI程序,已经将功能模块固定设置到CGI程序中,当调用时,执行该功能模块即可。这种类型的CGI程序一般用于功能比较固定的场合。以下是既支持需要参数的CGI也支持无需参数的CGI的代码:

  1. //Parameter is null   
  2. if(params.equals("") == true) {   
  3. command = fileName;   
  4. }   
  5. else //Generate the command line {   
  6. command = fileName + " " + params;   
  7. }   
  8. //Execute CGI process as child process Process proc = m_rt.exec(command, null);   
  9. //Create CGI process output stream   
  10. BufferedReader pin = new BufferedReader(new InputStreamReader(proc.getInputStream() ) );   
  11. String line = null;   
  12. //Get the output from CGI process   
  13. while( (line = pin.readLine() ) != null) {   
  14. m_sout.println(line);   
  15. }  
  16. //Wait for CGI process finish   
  17. proc.waitFor(); 


以上代码中,通过Java的Runtime类的exec接口调用CGI可执行文件,并将CGI的执行输出返回给客户端。

2. JSP HTTP服务器需要参数的CGI程序的调用

对于需要参数的CGI程序,功能模块没有固定,而是需要以及传入参数才能执行相应的功能。这种类型的CGI程序相对比较灵活。被调用时,HTTP服务器必须将客户端请求中的参数行传入到CGI进程中,在CGI程序中对请求进行解析,进而执行相应的模块。HTTP服务器与CGI进程的通信可以采用三种方式:

(1)以命令行的方式传入执行参数。参见以上代码(“command = fileName + " " + params;”)中。将可执行文件和参数作为命令行传入调用。
(2)写入到CGI进程的标准输入(stdin)中,CGI程序只需要从标准输入中读取相应的参数行即可。
(3)将参数行写入到CGI进程的环境变量QUERY_STRING中。CGI从环境变量QUERY_STRING中读取命令行参数。

【编辑推荐】

  1. 在JSP中获取数据库连接
  2. 介绍JSP Action的使用
  3. 简化JSP表达式中代码
  4. 详解JSP向Servlet转换
  5. 简单介绍JSP元素教程
责任编辑:佚名 来源: IT168
相关推荐

2009-07-06 17:46:25

JSP HTTP服务器

2009-07-06 14:05:11

JSP服务器

2009-07-03 13:05:47

JSP HTTP服务器

2009-07-06 17:56:12

JSP HTTP服务器

2010-05-25 13:20:46

http与svn

2009-07-06 17:40:05

JSP HTTP服务器

2009-07-06 17:25:22

JSP HTTP服务器

2009-08-29 16:45:27

2010-08-31 17:37:22

DHCP服务器故障

2010-05-12 18:04:41

IIS服务器

2009-07-02 17:17:03

2009-06-27 21:35:50

Linux服务器

2017-11-10 08:58:49

Web服务器应用程序

2009-07-06 18:02:34

JSP服务器

2010-05-25 09:32:04

搭建SVN服务器

2016-10-13 15:57:28

nginxphpwindows

2010-04-08 17:43:44

Unix操作系统

2018-07-31 09:30:44

Linux服务器网络

2011-08-01 13:10:58

2011-03-23 13:59:43

点赞
收藏

51CTO技术栈公众号