本篇內(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)