Anda di halaman 1dari 32

Interface Utilisateur (couche suprieur)

ESPRIT Imed AMRI imed.amri@esprit.ens.tn

Plan du cours du module J2ME


Chapitres Introduction au J2ME Interface utilisateur (Niveau suprieur)+ exposs Examen TP + exposs Interface utilisateur (Niveau infrieur)+ exposs Examen TP + exposs Connexion rseaux +exposs Les enregistrements (RMS) Examen final

Introduction
J2ME permet la connexion rseau un mobile. Donc il est possible de faire des mises jour des transaction et des stock travers le mobile phone. javax.microedition.io:package permet la connexion un rseau. java.io : package permet de lire et crire le flux.

1/30

Catgories
J2ME networking a 3 categories:
Low-level IP networking HTTP networking Secure networking

2/30

Low-level IP networking
Cette catgories est utilise pour les socket, datagram, serial port, et fichier I/O communication. Socket-based communication conforme la connexion oriente TCP/IP protocol. Datagram-based communication conforme la connexion oriente UDP/IP protocol. Eq: Une URL pour une connexion datagramme pour lenvoi un serveur en utilisant le port 1234 datagram://123.456.789.12:1234 Low-level IP networking peut aussi utiliser une MIDlet pour utiliser le port srie.
3/30

HTTP & HTTPS networking


La communication entre le mobile et le serveur web est bas sur le protocole HTTP (Hypertext Transfer Protocol). HTTP est un protocole orient connexion.

4/30

The Connection Framework

5/30

URL Handling in J2ME


URL permet douvrir la connexion au serveur web partir de mobile et changer les donnes entre les 2. Le processus se passe en 3 tapes :
Setup Connected Closed J2ME definit la classe javax.microedition.io.Connector pour crer toutes les connexion.
6/30

URL Handling in J2ME


Le paramtre accept Connector.open() mthod est une URL valide de type String. URL varie tout depend de protocole de communication utilis, voici 5 Examples : Example 1. Invoking HTTP-based communication Connection conn = Connector.open("http://www.yahoo.com"); Example 2. Invoking stream-based socket communication Connection conn = Connector.open("socket://localhost:9000");
7/30

URL Handling in J2ME


Example 3. Invoking datagram-based socket communication Connection conn = Connector.open("datagram://:9000"); Example 4. Invoking serial port communication Connection conn = Connector.open("comm:0;baudrate=9000"); Example 5. Invoking file I/O communication Connection conn = Connector.open("file://myfile.dat");
8/30

URL Handling in J2ME


La methode openInputStream() permet douvrir un input stream de bytes (java.io.InputStream). InputStream et OutputStream font partie des classes: java.io.DataInputStream java.io.DataOutputStream DataInputStream/DataOutputStream permet application de lecture/criture des donnes. une

9/30

Exemple 1 : Tlcharger un fichier et lafficher lcran

10/30

Exemple 1 : Tlcharger un fichier et lafficher lcran


import javax.microedition.midlet.*; import javax.microedition.io.*; import java.io.*; import javax.microedition.lcdui.*;

public class Midletconnexion extends MIDlet { Display disp; HttpConnection hc; DataInputStream dc; String url="http://localhost/a.txt"; StringBuffer str=new StringBuffe (""); Form f1=new Form("Affichage");
11/30

Exemple 1 : Tlcharger un fichier et lafficher lcran


public void startApp() { disp=Display.getDisplay(this); try { hc = (HttpConnection) Connector.open(url); dc=new DataInputStream(hc.openInputStream()); int ch; while((ch=dc.read())!=-1) { str.append((char)ch); rcuprer le flux } } catch (IOException ex) { ex.printStackTrace();} f1.append(str.toString()); disp.setCurrent(f1);
12/30

Exemple 1 : Tlcharger un fichier et lafficher lcran


try { if(hc!=null) hc.close(); if(dc!=null) dc.close(); }catch (IOException ex) { ex.printStackTrace(); }} public void pauseApp() { } public void destroyApp(boolean unconditional) { } }

13/30

HTTP request est accompan par des informations passs au serveur pour valider la requte.

14/30

PHP
PHP sert avant tout obtenir des sites Web dynamiques Avant de commencer coder en PHP, il est trs important de comprendre comment cela fonctionne. Il faut savoir que lorsque vous tapez une URL (adresse de site internet) depuis votre navigateur (appel client) vous demandez en fait un serveur de vous retourner une page.

15/30

PHP
Les donnes envoys au serveur doit tre en valeur pair : nom la valeur associe au nom. Le nom et la valeur doit tre separer par (=). Les pairs de valeur et lurl sont spars par (?). Les variables sont spares par (&). Lespace est converti en singe (+) . Par exemple, cette requte est envoy avaec 2 parameters: pOne="one bit" et pTwo="two" http://localhost/simple?pOne=one+bit&pTwo=two
16/30

THREAD
Utiliss pour faire du multitche: Pendant la lecture dune vido, linterface graphique dune application est fonctionnelle lors dune animation ont peut couter la musique.

17/30

THREAD
Thread = unit d'excution faisant partie d'un programme. Cette unit fonctionne de faon autonome et paralllement d'autres Threads. chaque unit se voit attribuer des intervalles de temps au cours desquels elles ont le droit d'utiliser le processeur pour accomplir leurs traitements

18/30

THREAD
Un programme (ou partie dun programme) java peut tre mis sous un Thread. Le principal avantage des Threads est de pouvoir rpartir diffrents traitements d'un mme programme en plusieurs units distinctes pour permettre leur excution"simultane".

19/30

THREAD
La classe java.lang.Thread et l'interface java.lang.Runnable sont les bases pour le dveloppement des Threads en java. Par exemple, pour excuter des Midlets dans un thread,il faut que celles ci implmentent l'interface Runnable.

20/30

Exemple 2 :Tester Fichier authen.php


<?php $name=$_GET['name']; $pwd=$_GET['password']; if ($name=="andy" && $pwd=="cat") echo "OK"; else if ($name=="paul" && $pwd=="panda") echo "OK"; else if ($name=="jacky" && $pwd=="doctor") echo "OK"; else if ($name=="peter" && $pwd=="a1 b") echo "OK"; else echo "invalid"; ?>

21/30

Exemple 2 :Tester Fichier authen.php


Enregistrer le fichier authen.php dans le serveur local Tester lurl dans votre navigateur url : http://localhost/authen.php?password=andy&name=cat

22/30

Exemple 2 :

23/30

Exemple 2 :
import javax.microedition.midlet.*; import javax.microedition.io.*; import java.io.*; import java.lang.Thread.*; import javax.microedition.lcdui.*; public class Midletconnexionphp extends MIDlet implements Runnable,CommandListener{ Display disp=Display.getDisplay(this); Form f=new Form("login"); Form f1=new Form("test"); TextField nom=new TextField("nom", null, 10,TextField.ANY); TextField password=new TextField("password", null, 10,TextField.ANY|TextField.PASSWORD); Command ok=new Command("ok",Command.SCREEN,1 ); public void startApp() { f1.append("votre test est valide"); f.append(nom); f.append(password); f.addCommand(ok); f.setCommandListener(this); disp.setCurrent(f); }
24/30

Exemple 2 :
public void pauseApp() { } public void destroyApp(boolean unconditional) { }

public void run() { HttpConnection hc; DataInputStream dc; StringBuffer str=new StringBuffer(""); String url="http://localhost/login.php?"; String nom1,pwd,parametre; nom1=nom.getString(); pwd=password.getString(); parametre="name="+nom1+"&password="+pwd.replace(' ','+'); try { hc = (HttpConnection) Connector.open(url+parametre); dc=new DataInputStream(hc.openInputStream()); int ch; while((ch=dc.read())!=-1) { str.append((char)ch); } } catch (IOException ex) { ex.printStackTrace();}
25/30

Exemple 2 :
String resultat=str.toString().trim(); if(resultat.equals("OK")) { disp.setCurrent(f1); nom.setString(""); password.setString(""); } else{ Alert a1=new Alert("Error connexion", "try again", null, AlertType.ALARM); a1.setTimeout(Alert.FOREVER); disp.setCurrent(a1, f); }}

public void validate(){ Thread t=new Thread(this); t.start(); } public void commandAction(Command c, Displayable d) { if(c==ok) validate()}
}

26/30

Exemple 3 : Tlcharger une image et lafficher sur lcran

27/30

Exemple 3 : Tlcharger une image et lafficher sur lcran


import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.io.*; import javax.microedition.io.*; public class Midletimage extends MIDlet { Display disp; HttpConnection hc; DataInputStream dc; Image img; String url="http://localhost/_dt_2.png"; Form f; ImageItem im;
28/30

Exemple 3 : Tlcharger une image et lafficher sur lcran


public void startApp() { try { disp = Display.getDisplay(this); hc = (HttpConnection) Connector.open(url); dc = new DataInputStream(hc.openInputStream()); int lengt=(int)hc.getLength(); byte [] data; if(lengt!=-1) { data=new byte[lengt]; dc.readFully(data); img=Image.createImage(data,0, lengt); im=new ImageItem("image", img,ImageItem.LAYOUT_CENTER,null); f=new Form("Image"); f.append(im); } } catch (IOException ex) { ex.printStackTrace();}
29/30

Exemple 3 : Tlcharger une image et lafficher sur lcran


try{ hc.close(); dc.close(); } catch (IOException ex) { ex.printStackTrace(); } disp.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }

30/30

Anda mungkin juga menyukai