日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Servlet和CGI間的通訊

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

城廂ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

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

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

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

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

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

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

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

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

Servlet編程原理

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

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

通過(guò)MIDlet激活CGI腳本

了解了基本的HTTP GET,POST和Servlets之后,讓我們來(lái)看一個(gè)例子。***個(gè)例子是用來(lái)說(shuō)明如何用MIDlet通過(guò)POST方式激活一個(gè)CGI腳本。

例子中當(dāng)打開了pgrade.cgi這個(gè)CGI的連接后跟著打開可輸出和輸入流。輸入的內(nèi)容通過(guò)output流發(fā)送。得到的響應(yīng)通過(guò)input流獲得。 CGI腳本是用PERL寫的,腳本中獲得學(xué)號(hào)后在數(shù)據(jù)庫(kù)中查找此學(xué)號(hào)的記錄,如果找到就返回相關(guān)的信息給請(qǐng)求的客戶端。因?yàn)樵贛IDlet里并沒(méi)有表單可用于提交,所以內(nèi)容要通過(guò)寫流的方法實(shí)現(xiàn)。下面是MIDlet的代碼。

 
 
 
  1. import java.io.*;  
  2. import javax.microedition.io.*;  
  3. import javax.microedition.lcdui.*;  
  4. import javax.microedition.midlet.*;  
  5.  
  6. /**  
  7. * An example MIDlet to invoke a CGI script  
  8. * using the POST method.  
  9. **/  
  10.  
  11. public class PostMidlet extends MIDlet {  
  12. private Display display;  
  13. String url = "http://somesite.com/cgi-bin/pgrade.cgi";  
  14.  
  15. public PostMidlet() {  
  16. display = Display.getDisplay(this);  
  17. }  
  18.  
  19. //Initialization. Invoked the MIDlet activates.  
  20. public void startApp() {  
  21. try {  
  22. getGrade(url);  
  23. } catch (IOException e) {  
  24. System.out.println("IOException " + e);  
  25. e.printStackTrace();  
  26. }  
  27. }  
  28.  
  29. //Pause, discontinue ....  
  30. public void pauseApp() { }  
  31.  
  32. //Destroy must cleanup everything.  
  33. public void destroyApp(boolean unconditional) { }  
  34.  
  35. //Retrieve a grade.  
  36. void getGrade(String url) throws IOException {  
  37. HttpConnection c = null;  
  38. InputStream is = null;  
  39. OutputStream os = null;  
  40. StringBuffer b = new StringBuffer();  
  41. TextBox t = null;  
  42. try {  
  43. c = (HttpConnection)Connector.open(url);  
  44. c.setRequestMethod(HttpConnection.POST);  
  45. c.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT");  
  46. c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");  
  47. c.setRequestProperty("Content-Language", "en-CA");  
  48. os = c.openOutputStream();  
  49.  
  50. // send request to the CGI script  
  51. String str = "name=163748";  
  52. byte postmsg[] = str.getBytes();  
  53. for(int i=0; < postmsg.length;i++) {  
  54. os.write(postmsg[i]);  
  55. }  
  56. os.flush();  
  57.  
  58. //receive response and display in a text box.  
  59. is = c.openDataInputStream();  
  60. int ch;  
  61. while((ch = is.read()) != -1) {  
  62. b.append((char) ch);  
  63. System.out.println((char)ch);  
  64. }  
  65. t = new TextBox("Final Grades", b.toString(), 1024, 0);  
  66. } finally {  
  67. if(is!= null) {  
  68. is.close();  
  69. }  
  70. if(os != null) {  
  71. os.close();  
  72. }  
  73. if(c != null) {  
  74. c.close();  
  75. }  
  76. }  
  77. display.setCurrent(t);  
  78. }  

當(dāng)前文章:Servlet和CGI間的通訊
文章網(wǎng)址:http://www.dlmjj.cn/article/cccdhgs.html