程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 端到端Web服務教程:移動Dilbert應用程序

端到端Web服務教程:移動Dilbert應用程序

編輯:關於JAVA

本教程將介紹如何使用 NetBeans IDE 創建使用 web 服務的移動客戶機應用程序。我們將創建這樣一個應用程序,它可通過實時在線 Web 服務提取每日 Dilbert 連環漫畫,並將圖形轉換為空間節省格式,然後在移動設備上顯示漫畫。

在本教程中,我們首先將在移動應用程序中創建一個 Web 服務客戶機,用於連接在線 DailyDilbert 服務。然後,我們將演示如何使用 Visual MIDlet Designer 以圖形化的方式來設計應用程序布局。接下來,添加代碼將漫畫的圖形格式由 GIF 轉換為移動設備支持的 PNG 格式 。最後,使用模擬器在 IDE 中欣賞連環漫畫。

本教程所需要的軟件

開始之前,需要在您的計算機上下載並安裝以下軟件:

Java Standard Development Kit(JDK)版本 5.0 或 6.0

NetBeans IDE 6.0 的完整發行版

GlassFish 或 Tomcat 等 Java EE 5 服務器,可以與上述項目一起安裝。

創建 Web 服務客戶機

首先,我們需要創建一個新的 Web Application 項目。該項目將包含所需的 Web 服務客戶機。

選擇 File > New Project 選項。從 Categories 列表中,選擇 Web 選項。從 Projects 列表中,選擇 Web Application 選項。單擊 Next 按鈕。

將項目命名為 DilbertWebApplication 並選擇 Java EE 5 選項,如下所示。

單擊 Finish 按鈕,IDE 將創建應用程序。

成功創建了應用程序,Projects 窗口應如下所示:

使用 Web Service Client 向導

現在,我們將添加一個 Web 服務客戶機,並讓它使用 DailyDilbert 服務。

右鍵單擊 DilbertWebApplication 項目節點,然後選擇 New > Web Service Client。或者,你也可以從 New File 向導中選擇此向導 ,如下所示:

此時將顯示 Web Service Client 向導。

選擇 WSDL URL 並輸入以下 URL:

http://www.esynaps.com/WebServices/DailyDiblert.asmx?WSDL

注意: Web 服務的拼寫是錯誤的,正確拼寫應 為 DailyDilbert.asmx,而它實際上是 DailyDiblert.asmx。記住要錯誤拼寫,否則本教程 將不會運行!

將包命名為 dilbert。現在您應該看到以下內容:

單擊 Finish 按鈕。

IDE 將下載 WSDL 文件,並創建客戶端工件,可以在 Files 窗口的 build 文件夾中查看這些工件。Projects 窗口顯示的邏輯視圖如下所 示:

創建移動客戶機

在本節中,我們將創建一個新的 Mobile Application 項目。然後,我們使用 Mobile Client to Web Application 向導將應用程序連接到  DailyDilbert 服務。

選擇 File > New Project 選項。從 Categories 列表中,選擇 Mobility 選項。從 Projects 列表中選擇 MIDP Application 選項, 如下所示:

單擊 Next 按鈕。

在 Project Name 字段中輸入 DilbertViewer,然後取消選中 Create Hello MIDlet 復選框。

單擊 Finish 按鈕,創建 MIDlet。

成功創建了移動應用程序,Projects 窗口應如下所示:

使用 Mobile Client to Web Application 向導

Mobile Client to Web Application 向導會生成一個 Servlet,它可連接到包含 Web 服務客戶機的 Web 應用程序。

在 Projects 窗口中,右鍵單擊 DilbertViewer 項目節點並選擇 New > Mobile Client to Web Application 選項,如下所示:

單擊 Next 按鈕。

DibertWebApplication 應作為 Web 應用程序列出。將 Servlet 名稱改為 DilbertServlet,然後將包命名為 dilbert。在 Mobile Client Uses 區域中,先選擇 Web Service Client in Web Application,然後選擇 DailyDiblert.asmx,如下所示:

單擊 Next 按鈕。

選擇 DailyDilbertImage,如下所示:

單擊 Next 按鈕。

將 Client Name 更改為 DilbertViewer,在包中添加 dilbert 名稱,如下所示:

單擊 Finish 按鈕。

新工件已創建完成。Project 窗口現在會顯示應用程序的邏輯視圖,如下所示:

創建可視 MIDlet

在本節中,我們將創建一個可視 MIDlet,然後使用設計器來添加組件並將它們互相連接起來。

右鍵單擊項目節點,然後選擇 New > Visual MIDlet 選項。

將文件命名為 DilbertVisualMIDlet,並指定 dilbert 作為包名,如下所示:

單擊 Finish 按鈕。

這樣將創建一個新的可視 MIDlet 文件,並在 Visual MIDlet Designer 中打開。

現在,使用 Palette(Ctrl-Shift-8)拖放一個 Alert 組件和一個 Wait Screen 組件到畫布上,如下所示:

您可以將這些組件放在設計器的任意位置。

在下一節中,我們將創建一個新的組件,並將它添加到組件面板中。然後,我們再將它拖放到設計器上。接下來,我們將這些組件互相連接 起來,建立它們之間的關系。

創建畫布組件

在本節中,我們將創建一個自定義畫布組件用於顯示圖形文件。

右鍵單擊 DilbertViewer 項目節點並選擇 New > Other 選項。在 Categories 列表中,選擇 MIDP 選項。在 File Types 列表中,選 擇 MIDP Canvas 選項,如下所示:

ty/dilbert/dilbert-mob6.png" border="1" alt="Mobile application">

單擊 Next 按鈕。

在 MIDP Class Name 字段中輸入 DilbertCanvas,並將包命名為 dilbert 。單擊 Finish 按鈕。

在 IDE 中打開新創建的文件,然後插入代碼,如下所示:package dilbert;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class DilbertCanvas extends Canvas {
   private int coordX, coordY;
   private int imageWidth, imageHeight;
   private Image image;
   private int screenWidth, screenHeight;
   /** Creates a new instance of DilbertCanvas */
   public DilbertCanvas() {
     screenHeight = getHeight();
     screenWidth = getWidth();
   }
   public void setImage(Image image) {
     this.imageWidth = image.getWidth();
     this.imageHeight = image.getHeight();
     this.image = image;
   }
   protected void paint(Graphics graphics) {
     graphics.setColor(255, 255, 255);
     graphics.fillRect(0, 0, getWidth(), getHeight());
     graphics.drawImage(image, coordX, coordY, Graphics.LEFT | Graphics.TOP);
   }
   protected void keyPressed(int keyCode) {
     int key = getGameAction(keyCode);
     if (key == DOWN) {
       if (coordY - screenHeight + imageHeight > 0) {
         coordY -= 10;
       }
     } else if (key == UP) {
       if (coordY < 0) {
         coordY += 10;
       }
     } else if (key == RIGHT) {
       if (coordX - screenWidth + imageWidth > 0) {
         coordX -= 10;
       }
     } else if (key == LEFT) {
       if (coordX < 0) {
         coordX += 10;
       }
     }
     repaint();
   }
     }

右鍵單擊 DilbertCanvas 項目節點,然後選擇 Build Project 選項。現在,我們已經構建並編譯了畫布組件。

在下一節中,我們將組件添加到組件面板上,然後再將它從組件面板拖放到設計器上。

將畫布組件添加到組件面板

接下來,我們將畫布組件添加到調色板上,然後將畫布組件整合到應用程序中。

在編輯器中打開 DilbertVisualMIDlet 文件,然後打開 Palette (Ctrl-Shift-8)。在 Palette 中單擊鼠標右鍵,然後選擇 Palette Manager 選項。此時將出現 Palette Manager,如下所示:

單擊 Add to Palette 按鈕。此時將出現 Add to Palette 向導,如下所示。其中的移動應用程序包含您要添加到組件面板的 Java 類:

單擊 Next 按鈕。

選擇 dilbert.DilbertCanvas 選項。

單擊 Finish 按鈕。

檢查所看到的新增畫布類,它應如下所示:

使用畫布組件

打開可視 MIDlet 和 Palette(Ctrl-Shift-8)。在組件面板中,將 Custom 類別中的 DilbertCanvas 項目拖放到設計器中。

右鍵單擊所拖放的畫布組件,然後選擇 New/Add > OK 命令,如下所示:

在 Navigator(Ctrl-7)中,您將看到以下內容:

通過將這些組件連接起來創建一個流程,如下所示:

將 Mobile Device 的 Started 點連接到 waitScreen 組件。

將 waitScreen 組件的 Success 命令連接到 dilbertCanvas 組件。

將 waitScreen 組件的 Failure 命令連接到 alert 組件。

將 dilbertCanvas 組件的 okCommand 連接到 Mobile Device。

此時,您將看到以下內容:

切換到 Source 視圖中,然後修改 getTask() 方法,如以下黑體內容所示:private byte[] dailyDilbertImage_returnValue;
  public SimpleCancellableTask getTask() {
     if (task == null) {
       // write pre-init user code here
       task = new SimpleCancellableTask();
       task.setExecutable(new org.netbeans.microedition.util.Executable() {
         public void execute() throws Exception {
           if (dailyDilbertImage_returnValue == null) {
             DilbertViewer client = new DilbertViewer();
             dailyDilbertImage_returnValue = client.dailyDilbertImage();
             Image dilbertImage = Image.createImage(dailyDilbertImage_returnValue, 0, dailyDilbertImage_returnValue.length);
             getDilbertCanvas().setImage(dilbertImage);
           }
         }
       });
     // write post-init user code here
     }
     return task;
  }

轉換圖像

現在,我們已經創建了一個客戶機應用程序,可用於接收每天的圖像。但是所接收的圖像是 GIF 格式,這對於內存有限的移動設備來說太 大了。因此,我們需要將圖像轉換為 PNG 格式,這對於許多不同顯示尺寸的移動設備來說小很多,而且更容易調節大小。

打開 DailyDilbert_Proxy 文件,如下所示:

修改 dailyDilbertImage() 方法,在其中添加以下突出顯示的代碼:

public byte[] dailyDilbertImage() throws RemoteException, Exception {
   try {
     ByteArrayInputStream in = new ByteArrayInputStream(getService().getDailyDilbertSoap().dailyDilbertImage());
     BufferedImage image = ImageIO.read(in);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ImageIO.write(image, "png", out);
     return out.toByteArray();
   } catch (java.rmi.RemoteException ex) {
     throw ex;
   } catch (Exception ex) {
     throw ex;
   }
     }

部署應用程序

首先,我們需要部署 Web 應用程序。然後將運行移動應用程序。

在 Projects 窗口中,右鍵單擊 DilbertWebApplication 項目節點,然後選擇 Deploy Application 選項。如果服務器還沒有運行,那麼 它將會啟動。然後將應用程序部署到服務器中。可以在 Services 窗口中查看應用程序是如何部署的,如下所示:

右鍵單擊移動項目,然後選擇 Run 選項。運行移動應用程序。此時將打開設備仿真器。在設備仿真器屏幕中,單擊 Launch 下面的按鈕。 然後單擊 Select 按鈕。應用程序將轉至互聯網,然後返回最新的 Dilbert 漫畫,如下所示:

結束語

本教程展示了如何使用 Mobile Client to Web Application 快速創建一個使用 Web 服務的 MIDlet。

本教程還演示了如何創建一個自定義組件,以及如何使用可視 Mobile 設計器(Visual Mobile Designer )將其添加到應用程序中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved