Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Fejlett Webes Technológiák II.

Hasonló előadás


Az előadások a következő témára: "Fejlett Webes Technológiák II."— Előadás másolata:

1 Fejlett Webes Technológiák II.
Bilicki Vilmos

2 A mai előadás tartalma Over The Air (OTA) leírás Hálózat használat
Feladatok, Csoportok, Menetrend

3 MIDlet telepítése: Teszt célra: Tömegesen: soros port
infravörös kapcsolat blouetooth Tömegesen: OTA

4

5 OTA beállítások Web szerver: Mime: IIS, Apache, …
.jad text/vnd.sun.j2me.app-descriptor .jar application/java-archive

6 HTML, VML példa

7 Letöltés, Telepítés JAM -> JAD fájl letöltése
Futtatható-e az adott készüléken Ha igen akkor a megadott URL-ről a JAM letölti a JAR fájlt Ekkor küldhet értesítést a szervernek

8 JAD fájl MIDlet-Name: r MIDlet-Vendor: Vilmos Bilicki
MIDlet-Version: 1.0 MIDlet-Jar-Size: 1411 MIDlet-Jar-URL: MIDlet-1: helloWorld, , teszt.helloWorld MicroEdition-Configuration: MicroEdition-Profile:

9 Hálózat használó MIDlet
Funkciók: összeadás, szerver segítséggel SUMMIDlet SumMIDlet SumScreen HttpPoster HttpPosterListener

10 Osztály felépítés

11 SumMIDlet.java import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.IOException; public class SumMIDlet extends MIDlet { private final SumScreen screen; private final HttpPoster httpPoster; public SumMIDlet() { String servletUrl = getAppProperty("Servlet-URL"); httpPoster = new HttpPoster(servletUrl); screen = new SumScreen(this, httpPoster); } public void startApp() { Display.getDisplay(this).setCurrent(screen); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } void sumScreenQuit() { httpPoster.abort(); destroyApp(false); notifyDestroyed();}}

12 public class HttpPoster
implements Runnable { private String url; private volatile boolean aborting = false; private Vector requestQueue = new Vector(); private Vector listenerQueue = new Vector(); public HttpPoster(String url) this.url = url; Thread thread = new Thread(this); thread.start(); } public synchronized void sendRequest(String request, HttpPosterListener listener) throws IOException requestQueue.addElement(request); listenerQueue.addElement(listener); notify(); // wake up sending thread

13 public void run() { running: while (!aborting) String request; HttpPosterListener listener; synchronized (this) while (requestQueue.size() == 0) try { wait(); // releases lock} catch (InterruptedException e){} if (aborting) break running; } request = (String)(requestQueue.elementAt(0)); listener = (HttpPosterListener)(listenerQueue.elementAt(0)); requestQueue.removeElementAt(0); listenerQueue.removeElementAt(0); doSend(request, listener); } }

14 private void doSend(String request,
HttpPosterListener listener) { HttpConnection conn = null; InputStream in = null; OutputStream out = null; String responseStr = null; String errorStr = null; boolean wasError = false; try{ conn = (HttpConnection)Connector.open(url); conn.setRequestMethod(HttpConnection.POST); conn.setRequestProperty("Content-Length", Integer.toString(request.length())); out = conn.openOutputStream(); int requestLength = request.length(); for (int i = 0; i < requestLength; ++i) { out.write(request.charAt(i)); } in = conn.openInputStream(); StringBuffer responseBuf; long length = conn.getLength(); if (length > 0) { responseBuf = new StringBuffer((int)length);} else { responseBuf = new StringBuffer(); } int ch; while ((ch = in.read()) != -1) {responseBuf.append((char)ch);} responseStr = responseBuf.toString(); String rewrittenUrl = conn.getHeaderField("X-RewrittenURL"); if (rewrittenUrl != null) {url = rewrittenUrl;}}

15 catch (IOException e) { wasError = true; errorStr = e.getMessage(); } finally { if (in != null) { try{ in.close();} catch (IOException e){ }} if (out != null) { try {out.close();} catch (IOException e){}} if (conn != null) {try{ conn.close();} } if (wasError) {listener.handleHttpError(errorStr);} else {listener.receiveHttpResponse(responseStr);} public void abort() { aborting = true; synchronized (this) { notify();}

16 HttpPosterListener interfész
public interface HttpPosterListener { void receiveHttpResponse(String response); void handleHttpError(String errorStr); }

17 class SumScreen extends Form implements CommandListener, HttpPosterListener { private final SumMIDlet midlet; private final HttpPoster httpPoster; private final TextField inputField; private final StringItem outputField; private final Command sendCommand; private final Command quitCommand; private volatile boolean readyForInput = true; SumScreen(SumMIDlet midlet, HttpPoster httpPoster) { super("Sum"); this.midlet = midlet; this.httpPoster = httpPoster; inputField = new TextField("Input:", "1", 8, TextField.NUMERIC); append(inputField); outputField = new StringItem("Output:", "0"); append(outputField); sendCommand = new Command("Send", Command.SCREEN, 2); addCommand(sendCommand); quitCommand = new Command("Quit", Command.EXIT, 2); addCommand(quitCommand); setCommandListener(this); }

18 public void commandAction(Command c, Displayable d)
{ if (c == quitCommand) { midlet.sumScreenQuit(); } else if (readyForInput) { if (c == sendCommand) try { String requestStr = inputField.getString(); httpPoster.sendRequest(requestStr, this); readyForInput = false; } catch (IOException e) { outputField.setText("Error"); } } } } public void receiveHttpResponse(String response) outputField.setText(response); readyForInput = true; } public void handleHttpError(String errorStr) outputField.setText("Error");

19 Sum.jad MIDlet-Name: Sum MIDlet-Vendor: Forum Nokia
MIDlet-Version: 1.2.0 MIDlet-Jar-Size: 5706 MIDlet-Jar-URL: Sum.jar MIDlet-1: Sum, /sum.png, example.sum.SumMIDlet MIDlet-Description: Sum MIDlet Servlet-URL:

20 Feladatok, Csoportok, Menetrend
Legalább 3 fős csoportok Egy vezető aki hetente elküldi az adott csoport jelentését: a csoport tagjainak is másolatban (carbon copy) Tárgy: fwt2:a csoport sorszáma, jelentés száma (1. az első) pl.: (fwt2:1,1) Tartalom: az előző héten elvégzett munka, a következő hétre tervezett munka (az első levélben a feladat részletes leírása, az egyes személyek feladatai)

21 Menetrend Befejezés dátuma: legkésőbb 2003.01.24 16 óra Fogadóóra:
hétfőnként 9-11-ig, az Árpád tér 48-ban bármikor csak előtte egyeztetetni kell (hogy ott legyek) időpontokban is lehet találkozni

22 Feladatok: Tudományos számológép (~10 fő):
grafikus függvény ábrázolás

23 Feladat szervező (~8 fő)
Hasonló mint:

24 Online sakk program(~8 fő):
Kliens, szerver alkalmazás Legyen lehetőség félbehagyott játszmák, elmentett játszmák elkezdésére Szükség van a szerver oldali kódra is (JSP, JavaServlet)! Legyen arra is lehetőség, hogy a gép ellen játszunk

25 Online kártya program(~8 fő):
Kliens, szerver alkalmazás Legyen lehetőség félbehagyott játszmák, elmentett játszmák elkezdésére Szükség van a szerver oldali kódra is (JSP, JavaServlet)! Legyen arra is lehetőség, hogy a gép ellen játszunk

26 C64-es, spektrum játékok …


Letölteni ppt "Fejlett Webes Technológiák II."

Hasonló előadás


Google Hirdetések