成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Servlet和CGI間的通訊怎么實現(xiàn)

本篇內(nèi)容主要講解“Servlet和CGI間的通訊怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Servlet和CGI間的通訊怎么實現(xiàn)”吧!

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都玻璃隔斷小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站定制營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

用無線設(shè)備比如手機上網(wǎng)的時候經(jīng)常需要通過表單提交一些數(shù)據(jù),比如登錄操作,通常的情況下服務(wù)器端我們采用Servlet和CGI來執(zhí)行這些操作。

CLDC作為受限設(shè)備的基本配置通常會提供通用的連接框架給開發(fā)者連進(jìn)行網(wǎng)絡(luò)開發(fā)。另外MIDP還提供HttpConnection的接口,這個接口是javax.microedition.io的一部分,這里面定義了最基本的HTTP連接需要的方法和常量。

HTTP編程的原理
HTTP協(xié)議是一個請求-相應(yīng)的應(yīng)用協(xié)議,協(xié)議規(guī)定請求發(fā)出前各個參數(shù)必須事先設(shè)置。比如當(dāng)用戶點擊表單的提交按鈕后表單內(nèi)填入的內(nèi)容會作為請求的一部分發(fā)送給服務(wù)器端。

請求的方法類型
目前有兩種方法可以用來向服務(wù)器端提交請求:GET和POST。這兩種方法決定數(shù)據(jù)如何遞交給服務(wù)器。

采用GET方式要遞交的值作為URL的一部分發(fā)送給服務(wù)器端,其遞交的值將成為環(huán)境變量QUERY_STRING。
采用POST方式遞交的值作為一個輸入流發(fā)送給服務(wù)器端,其流的長度會放在CONTENT_LENGTH里。

相對兩種方法POST方法更安全一些,通過POST方法也可以傳輸多種數(shù)據(jù)。
利用GET方式遞交信息的例子
如下是一個用GET方式遞交表單的HTML例子:

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

表單提交給http://www.somesite.com/cgi-bin/getgrade.cgi,當(dāng)用戶輸入一個學(xué)號比如123333,點擊 Retrieve Marks按鈕后表單的數(shù)據(jù)將作為URL的一部分發(fā)送給CGI程序。遞交的地址為http://www.somesite.com/cgi-bin /gergrade.cgi?idnum=123333。用POST方式遞交數(shù)據(jù)時輸入的數(shù)值將作為分段的輸入流發(fā)送給服務(wù)器。

GET方式用戶輸入中帶有空格時這些空格將被(+)取代,當(dāng)用戶一次要遞交多個數(shù)值時這些數(shù)值用(&)分割。

Servlet編程原理

Servlet和CGI相似,Servlets支持請求、響應(yīng)的編程方式,當(dāng)一個客戶端發(fā)送一個請求給服務(wù)器,服務(wù)器將這個請求發(fā)送給Servlet。Servlet組織一個響應(yīng)發(fā)回給客戶端。Servlet和CGI不同的是,Servlet是對多次請求使用一個進(jìn)程處理。

當(dāng)客戶端遞交了一個請求,Servlet 的 service方法就被調(diào)用并將請求傳遞給request和response。首先Servlet判斷請求是post還是get方式,并決定用HttpServlet.doGet還是HttpServlet.doPost方法來處理這個請求。這兩個方法都將調(diào)用HttpServletRequest和HttpServletResponse。

通過MIDlet激活CGI腳本

了解了基本的HTTP GET,POST和Servlets之后,讓我們來看一個例子。***個例子是用來說明如何用MIDlet通過POST方式激活一個CGI腳本。

例子中當(dāng)打開了pgrade.cgi這個CGI的連接后跟著打開可輸出和輸入流。輸入的內(nèi)容通過output流發(fā)送。得到的響應(yīng)通過input流獲得。 CGI腳本是用PERL寫的,腳本中獲得學(xué)號后在數(shù)據(jù)庫中查找此學(xué)號的記錄,如果找到就返回相關(guān)的信息給請求的客戶端。因為在MIDlet里并沒有表單可用于提交,所以內(nèi)容要通過寫流的方法實現(xiàn)。下面是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間的通訊怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章名稱:Servlet和CGI間的通訊怎么實現(xiàn)
網(wǎng)頁路徑:http://jinyejixie.com/article22/pshgcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)商城網(wǎng)站、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
那曲县| 类乌齐县| 鄄城县| 晋江市| 荥阳市| 当涂县| 彭泽县| 鹿泉市| 阿勒泰市| 永宁县| 师宗县| 广宁县| 辉县市| 泽州县| 商洛市| 淮南市| 肇庆市| 琼中| 仙居县| 武定县| 阿拉善左旗| 临澧县| 星座| 扶沟县| 资中县| 镇巴县| 津南区| 郯城县| 仙桃市| 龙门县| 桃源县| 景德镇市| 石河子市| 五台县| 博客| 阿勒泰市| 乌拉特中旗| 黎平县| 祁阳县| 梅河口市| 邯郸市|