千家信息网

Servlet和CGI间的通讯怎么实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"Servlet和CGI间的通讯怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Servlet和CGI间的通讯怎么实现"吧!用无线设
千家信息网最后更新 2026年11月03日Servlet和CGI间的通讯怎么实现

本篇内容主要讲解"Servlet和CGI间的通讯怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Servlet和CGI间的通讯怎么实现"吧!

用无线设备比如手机上网的时候经常需要通过表单提交一些数据,比如登录操作,通常的情况下服务器端我们采用Servlet和CGI来执行这些操作。

CLDC作为受限设备的基本配置通常会提供通用的连接框架给开发者连进行网络开发。另外MIDP还提供HttpConnection的接口,这个接口是javax.microedition.io的一部分,这里面定义了最基本的HTTP连接需要的方法和常量。

HTTP编程的原理
HTTP协议是一个请求-相应的应用协议,协议规定请求发出前各个参数必须事先设置。比如当用户点击表单的提交按钮后表单内填入的内容会作为请求的一部分发送给服务器端。

请求的方法类型
目前有两种方法可以用来向服务器端提交请求:GET和POST。这两种方法决定数据如何递交给服务器。

采用GET方式要递交的值作为URL的一部分发送给服务器端,其递交的值将成为环境变量QUERY_STRING。
采用POST方式递交的值作为一个输入流发送给服务器端,其流的长度会放在CONTENT_LENGTH里。

相对两种方法POST方法更安全一些,通过POST方法也可以传输多种数据。
利用GET方式递交信息的例子
如下是一个用GET方式递交表单的HTML例子:

action="http://www.somesite.com/cgi-bin/getgrade.cgi"
method="GET">
Student#:

表单提交给http://www.somesite.com/cgi-bin/getgrade.cgi,当用户输入一个学号比如123333,点击 Retrieve Marks按钮后表单的数据将作为URL的一部分发送给CGI程序。递交的地址为http://www.somesite.com/cgi-bin /gergrade.cgi?idnum=123333。用POST方式递交数据时输入的数值将作为分段的输入流发送给服务器。

GET方式用户输入中带有空格时这些空格将被(+)取代,当用户一次要递交多个数值时这些数值用(&)分割。

Servlet编程原理

Servlet和CGI相似,Servlets支持请求、响应的编程方式,当一个客户端发送一个请求给服务器,服务器将这个请求发送给Servlet。Servlet组织一个响应发回给客户端。Servlet和CGI不同的是,Servlet是对多次请求使用一个进程处理。

当客户端递交了一个请求,Servlet 的 service方法就被调用并将请求传递给request和response。首先Servlet判断请求是post还是get方式,并决定用HttpServlet.doGet还是HttpServlet.doPost方法来处理这个请求。这两个方法都将调用HttpServletRequest和HttpServletResponse。

通过MIDlet激活CGI脚本

了解了基本的HTTP GET,POST和Servlets之后,让我们来看一个例子。***个例子是用来说明如何用MIDlet通过POST方式激活一个CGI脚本。

例子中当打开了pgrade.cgi这个CGI的连接后跟着打开可输出和输入流。输入的内容通过output流发送。得到的响应通过input流获得。 CGI脚本是用PERL写的,脚本中获得学号后在数据库中查找此学号的记录,如果找到就返回相关的信息给请求的客户端。因为在MIDlet里并没有表单可用于提交,所以内容要通过写流的方法实现。下面是MIDlet的代码。

import java.io.*;  import javax.microedition.io.*;  import javax.microedition.lcdui.*;  import javax.microedition.midlet.*;   /**  * An example MIDlet to invoke a CGI script  * using the POST method.  **/   public class PostMidlet extends MIDlet {  private Display display;  String url = "http://somesite.com/cgi-bin/pgrade.cgi";   public PostMidlet() {  display = Display.getDisplay(this);  }   //Initialization. Invoked the MIDlet activates.  public void startApp() {  try {  getGrade(url);  } catch (IOException e) {  System.out.println("IOException " + e);  e.printStackTrace();  }  }   //Pause, discontinue ....  public void pauseApp() { }   //Destroy must cleanup everything.  public void destroyApp(boolean unconditional) { }   //Retrieve a grade.  void getGrade(String url) throws IOException {  HttpConnection c = null;  InputStream is = null;  OutputStream os = null;  StringBuffer b = new StringBuffer();  TextBox t = null;  try {  c = (HttpConnection)Connector.open(url);  c.setRequestMethod(HttpConnection.POST);  c.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT");  c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");  c.setRequestProperty("Content-Language", "en-CA");  os = c.openOutputStream();   // send request to the CGI script  String str = "name=163748";  byte postmsg[] = str.getBytes();  for(int i=0; < postmsg.length;i++) {  os.write(postmsg[i]);  }  os.flush();   //receive response and display in a text box.  is = c.openDataInputStream();  int ch;  while((ch = is.read()) != -1) {  b.append((char) ch);  System.out.println((char)ch);  }  t = new TextBox("Final Grades", b.toString(), 1024, 0);  } finally {  if(is!= null) {  is.close();  }  if(os != null) {  os.close();  }  if(c != null) {  c.close();  }  }  display.setCurrent(t);  }  }

到此,相信大家对"Servlet和CGI间的通讯怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

方法 方式 服务器 服务 表单 输入 数据 例子 内容 客户 客户端 用户 脚本 通讯 学号 数值 编程 信息 原理 按钮 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 华服互联网科技靠谱吗 中国互联网科技工作委员会毛军 重庆互联网络科技 有马互联网科技 贷财互联网科技 甘肃拓世互联网科技有限公司 以后互联网后是啥科技 互联网科技项目计划书材料类 米聚互联网科技南京有限公司排面 互联网保险科技创业 本届互联网博览会上的黑科技 卓翼科技产业互联网合作 科技互联网海报 互联网方面的科技前沿 上海互联网科技公司ppt 互联网风格科技公司名称 福州德业互联网科技 互联网科技收购价值 河南商务圈互联网科技有限公司 长亮科技互联网金融 天扬科技互联网广告 湖南一路畅行互联网科技 链环科技传统企业怎么转型互联网 阿里互联网科技企业 广州富喜互联网络科技 世界互联网科技成果奖 互联网领先科技成果宣传视频 科技互联网专业务虚会材料 山东亿川互联网科技有限责任公司
0