2012-05-07 9 views
0

私はJ2MEを初めて使用しており、ユーザーが登録、ログインしたり、いくつかの操作を実行できるメンバーのみの画面で表示できるモバイルアプリケーションを構築しています。J2MEでhttpでデータを送受信し、メニューと画面を処理する

(私はウェブのアプローチを使用しているので、親切に私を修正し、Web開発にしています。また、私ははっきりと、基本的なJavaの概念を理解するが、前にモバイルアプリを作成していない)

これまでのところ、私が作成しましたユーザー名とパスワードのテキストボックスとログインと終了ボタンを含むログインフォームの最初の画面。私は現在直面しています

問題は、次のとおりです。

  1. にはどうすれば登録へのアクセスを提供することができ、同時にログインと終了(電話が一度に二つのボタンを持つことができるようです)。コマンドボタンや通常の「ページ上に表示されるウェブのようなボタン」としてそれらを提供していますか?適切と思われるオプションの仕方を教えてください。

  2. モバイルアプリケーションでhttp経由でデータを送受信するにはどうすればよいですか?サンプルコードは高く評価されます。

  3. さまざまな画面を管理するにはどうすればよいですか? Web開発では、単にページを作成してリンクするだけです。この場合、登録ボタンを押したときに登録画面を表示するにはどうすればよいですか?ログインが成功したときのホーム画面?失敗した場合はエラーメッセージが表示されますか?

動的に画面を生成する機能はありますか?画面が要求されるたびにそれらを呼びますか?

簡単なサンプルが高く評価されます。 J2MEで

+0

あなたが持っているコードを示し 何かのように:編集した

package madmin.client; import java.io.ByteArrayOutputStream; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import madmin.res.Globals; public class ClientResponse { private String response; public String getResponse(String requestId) { System.out.println("Start HTTP Connection"); HttpConnection connection = null; InputStream inputstream = null; response = ""; try{ connection = (HttpConnection) Connector.open(Globals.getURL() + "ResponseServlet?requestId=" + requestId); connection.setRequestMethod(HttpConnection.GET); connection.setRequestProperty("Content-Type", "//text plain"); connection.setRequestProperty("Connection", "close"); System.out.println("Status Line COde: "+ connection.getResponseCode()); System.out.println("Status Line Message: "+ connection.getResponseMessage()); if(connection.getResponseCode()==HttpConnection.HTTP_OK){ inputstream = connection.openInputStream(); int length = (int) connection.getLength(); if(length!=-1){ byte incomingData[] = new byte[length]; inputstream.read(incomingData); response = new String(incomingData); } else { ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); int ch; while((ch = inputstream.read())!=-1){ bytestream.write(ch); } response = new String(bytestream.toByteArray()); bytestream.close(); } System.out.println("Response:" + response.trim()); connection.close(); if(inputstream!=null)inputstream.close(); } } catch(Exception e){ e.printStackTrace(); } return response; } } 

gnat

答えて

1

あなたは、画面上に表示される内容を決定する表示オブジェクトを持っています。表示できるものがあります。例えばフォーム、リスト、テキストボックスなどのため、あなたは何ができるかあなたはこれらの表示オブジェクトの準備ができたら

public class IndexScreen extends List implements CommandListener { 

    //This will contain the options 
    //1. Register 
    //2. Login 
    //3. Exit 
} 


public class RegsterScreen extends Form implements CommandListener { 

    //This will contain register fields and submit cancel command buttons 

} 

public class LoginScreen extends Form implements CommandListener { 

    //This will contain Login specific controls 
} 

今、あなたはコマンドのクリックのようないくつかのイベントの表示を変え続けることができ、以下のディスプレイを作成することができますですボタン。

公共ボイドのcommandAction(コマンドC、表示可能D){次のに役立つことができるデータを送受信するため

if (c == OK) { 
     nextScreen = new RegisterScreen(); 
     display.setCurrent(nextScreen); 
    } 
    if (c == BACK) { 
     display.setCurrent(prevScreen); 
    } 

....

package madmin.client; 

import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import javax.microedition.io.Connector; 
import javax.microedition.io.HttpConnection; 
import javax.microedition.lcdui.Display; 
import madmin.res.Globals; 


public class ClientRequest { 

private Client client; 
private Display display; 
private String requestServlet; 
private String requestCode; 
private String requestId; 
private String userId; 
private String url; 
private String response; 
private String parameterOne; 



public ClientRequest() { 

} 

public boolean sendRequest() { 

     boolean result = false; 
     userId = Globals.getUserId(); 
     url = Globals.getURL() + requestServlet + "?requestCode=" + requestCode + "&requestId=" + requestId + "&userId=" + userId + "&clientIP=" + client.getIpAddress() + "&clientHostName=" + client.getHostname() + "&parameterOne=" + parameterOne; 

     System.out.println("User Id value in ClientRequest " + userId); 


     System.out.println("Start HTTP Connection"); 
     HttpConnection connection = null; 
     InputStream inputstream = null; 

     try { 
      connection = (HttpConnection) Connector.open(url); 
      connection.setRequestMethod(HttpConnection.GET); 
      connection.setRequestProperty("Content-Type", "//text plain"); 
      connection.setRequestProperty("Connection", "close"); 

      System.out.println("Status Line COde: "+ connection.getResponseCode()); 
      System.out.println("Status Line Message: "+ connection.getResponseMessage()); 


      if(connection.getResponseCode()==HttpConnection.HTTP_OK){ 
       inputstream = connection.openInputStream(); 
       int length = (int) connection.getLength(); 
       if(length!=-1){ 
        byte incomingData[] = new byte[length]; 
        inputstream.read(incomingData); 
        response = new String(incomingData); 
       } 
       else { 
        ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); 
        int ch; 
        while((ch = inputstream.read())!=-1){ 
         bytestream.write(ch); 
        } 
        response = new String(bytestream.toByteArray()); 
        bytestream.close(); 
       } 

       System.out.println("Response:" + response.trim()); 

       if(response.trim().equals("Request Submitted Successfully")){ 
         result = true; 
       } 
       else{ 
        result = false; 
       } 
      } 
      connection.close(); 
      if(inputstream!=null)inputstream.close(); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      if(inputstream!=null){ 
       try{ 
        inputstream.close(); 
       } 
       catch(Exception e){ 
        e.printStackTrace(); 
       } 
      } 
     } 
    return result; 
} 

public Client getClient() { 
    return client; 
} 

public void setClient(Client client) { 
    this.client = client; 
} 

public Display getDisplay() { 
    return display; 
} 

public void setDisplay(Display display) { 
    this.display = display; 
} 

public String getRequestCode() { 
    return requestCode; 
} 

public void setRequestCode(String requestCode) { 
    this.requestCode = requestCode; 
} 

public String getRequestId() { 
    return requestId; 
} 

public void setRequestId(String requestId) { 
    this.requestId = requestId; 
} 

public String getRequestServlet() { 
    return requestServlet; 
} 

public void setRequestServlet(String requestServlet) { 
    this.requestServlet = requestServlet; 
} 

public String getResponse() { 
    return response; 
} 

public void setResponse(String response) { 
    this.response = response; 
} 

public String getUrl() { 
    return url; 
} 

public void setUrl(String url) { 
    this.url = url; 
} 

public String getUserId() { 
    return userId; 
} 

public void setUserId(String userId) { 
    this.userId = userId; 
} 

public String getParameterOne() { 
    return parameterOne; 
} 

public void setParameterOne(String parameterOne) { 
    this.parameterOne = parameterOne; 
} 

}

と.. ..この

 public class MenuScreen extends List implements CommandListener{ 

    public MenuScreen() { 
append("Register", null); 
    append("Login", null); 
    append("Forgot password", null); 


    select = new Command("Select", Command.OK, 1); 
    addCommand(select); 
    setCommandListener(this); 

}

}

 public void commandAction(Command command, Displayable display) { 

     if(command==List.SELECT_COMMAND){     
     String menuItem = this.getString(menuIndex); 
     } 

     if(command==select){  
     if(menuItem.equals("Register")) 
    display.setCurrent(new RegisterScreen()) 
} 
     } 
+0

form_ログインして_first画面がためにありがとうございましたあなたの返信。あなたの提案から、私はExit Commandしか持たないようです。私は、Register、Login、Forgot Passwordのラベルを使用します。どのように私は、ラベルのCommandAction onclickを呼び出すのですか?ありがとうございます –

+0

任意の数のコマンドボタンを持つことができます...そのような制限はありませんex:send = new Command( "Send"、Command.OK、1); addCommand(send); clear = newコマンド( "Clear"、Command.OK、2); addCommand(clear); back =新しいコマンド( "Back"、Command.OK、3); addCommand(back); setCommandListener(this);あなたがリストアイテムを選択してOKコマンドボタンをクリックすると、必要な処理が行われます。私はいくつかのサンプルを表示するために答えを編集しました。 – knurdy

関連する問題