成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet和CGI間的通訊

開發 后端
本文介紹Servlet和CGI間的通訊,包括介紹HTTP編程的原理,Servlet編程原理和通過MIDlet激活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的代碼。

  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. }  

【編輯推薦】

  1. 創建Servlet過濾器的向導
  2. 安裝Servlet和JSP開發工具
  3. 擴展Future Response Servlet
  4. Servlet容器的匹配過程
  5. 淺談user cache Servlet
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2009-07-03 12:48:24

Java Servle

2009-07-09 16:57:03

Servlet與App

2009-11-13 09:36:10

UNIX通訊命令操作系統

2012-06-29 13:31:56

ServletJSPJava

2013-02-25 10:18:08

ThreadMsgC#

2009-07-08 09:35:53

Java ServleServlet 3.0

2009-07-08 18:21:27

2009-07-08 18:16:02

Applet和Serv

2009-07-06 15:34:56

JSP和Servlet

2009-09-01 18:16:41

C#窗體間通訊

2009-07-08 09:22:03

Servlet和JSP

2024-07-12 08:22:05

C#SendMessag技術

2012-11-20 10:47:16

2009-07-07 13:29:33

Servlet和JSP

2011-11-21 15:45:28

CGI

2009-07-09 10:49:56

Servlet和JSP

2009-07-03 14:02:51

2009-07-07 17:10:57

JSP和Servlet

2009-07-07 17:34:34

Servlet聲明和m

2009-07-02 09:13:25

什么是JSPServlet
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费福利视频 | 欧美视频中文字幕 | 国产欧美一区二区三区在线看 | 久久免费精品 | 香蕉超碰 | 欧美中文字幕在线观看 | 成人久久久久久久久 | av永久| 黄色国产在线视频 | 日韩在线免费观看视频 | 羞羞网站在线观看 | 一区二区三区四区在线视频 | 久久伊人在 | 日韩三级一区 | 亚洲a视频 | 国产视频二区 | 视频二区 | 成人在线视频一区二区三区 | 91 久久| 欧美激情 一区 | 国产一区中文 | 国产在线麻豆精品入口 | 日日草天天干 | 青青草华人在线视频 | 国产99久久 | 亚洲欧美视频 | 中文字幕第九页 | 日韩一二三 | 精品久久久久一区二区国产 | 国产乱码精品一区二区三区中文 | 91在线播 | 久久这里只有精品首页 | 999国产视频 | 中文字幕日韩欧美 | 精品视频一区二区三区四区 | 鲁一鲁资源影视 | 久久久影院 | 久久国内| 国产精品视频一区二区三区四区国 | 久在线精品视频 | 午夜精品影院 |