# Servlet MySql



## Luser_k (27. Jun 2008)

Hi,

ich versuche ein Servlet zu erstellen, dass Daten in eine MySql Datenbank ablegt.

Es ist leider nicht so einfach wie ich mir das vorgestellt habe. Alle Beispiele oder Tutorials,
die ich gefunden habe, handelt über Forms auf HTML, deren Daten von Servlets abgerufen
und weitergeleitet werden.

Wie kann ich ein Servlet schreiben, dass nur Daten an die Datenbank ablegt?
Kann mir jemand vielleicht ein Link oder ein Sample geben?

Mein System sollt folgende Anforderung erfüllen:

Die Daten werden von einem Handy mittels HttpConnection an das Servlet gesendet.
Das Servlet müsste die Daten in die MySql Datenbank abgelegt werden.

Bräuchte dringend Hilfe :? 

Luser_k


----------



## Guest (28. Jun 2008)

Was für Daten sollen denn an dein Servlet gesendet werden und wie? 

Die einfachste Methode ist per GET und URL-Parameter. Diese kannst du einfach vom Request-Objekt mit getParameter("name") abfragen und danach in eine Datenbank schreiben. Zurückliefern muß das Servlet nicht unbedingt was. Was genau ist jetzt dein konkretes Problem?


----------



## Luser_k (28. Jun 2008)

Hi,

die Daten sind Standortkoordinaten, die mittels Mobiltelefon und GPS Empfänger ermittelt werden,
die per HttpConnection vom Mobiltelefon an das Servlet gesendet werden soll.

Dazu benötige ich in meiner WebApplikation einen Servlet, dass die Daten in die MySql Datenbank
abgelegen soll.

Das Mobiltelefon muss doch per HttpConnection die doPOST- und das Servlet muss doch die doGET Methode
benutzen.

Mein Problem ist, dass ich mit dem Mobiltelefon Longitude, Latitude, Altitude und die Geschwindigkeit
(und eventuell die Zeit) absenden muss. Dazu wird doch die Request Variable benutzt.

Wie kann ich aber die einzelnen Daten in die Request Variable packen? Wie erkennt das Midlet die
verschiedenen Daten im Request?

Die Daten werden vom Mobiltelefon sekündlich gesendet!

Luser_k


----------



## Guest (28. Jun 2008)

Hi,

Du ruffst vom Handy dein Servlet einfach wie follgt auf:



> http://deinserver:8080/deinservlet?longitude=xyz&latitude=xyz&altitude=xyz



und weitere parameter einfach mit &name=wert dranhängen.

Dein Servlet sieht dann wie folgt aus:


```
public class MyServlet extends HttpServlet {

     public void doGet(HttpServletRequest req, HttpServletResponse resp) {
          String longitude = req.getParameter("longitude");
          String latitude = req.getParameter("latitude");
          // todo: weiterer...
     }
}
```

Damit hast du die Werte erstmal als String vorliegen und kannst sie nun ggf. parsen und dann in die DB schreiben.


----------



## Luser_k (20. Jul 2008)

Hi,

vielen Dank für die Antwort. Es hat mir sehr weitergeholfen.

Eine Frage hätte ich da noch:


```
req.getParameter("longitude");
req.getParameter("latitude");
```


Wie handle ich den DataOutputStream? So wie im Code unten zu sehen,
sende ich nur den Parameter *longitude*. Wie mache ich das mit 
mehreren Parametern?

Wenn ich in einer Schleife jedesmal 2 mal hintereinander die aktuellen Werte
mit dem DataOutputStream *.write* sende, wie ordnet mein Servlet
die Daten auseinander, so dass die Daten richtig zugeordnet werden?

Ein Auszug aus meinem MIDlet:


```
public void connect(){
		
		HttpConnection 		hc    = null;
		DataOutputStream 	dout = null;
		
		String 			str_longitude = new String("65.003424");			
		StringBuffer 		longitude = new StringBuffer(str_longitude);
	
		try {
			
			hc = (HttpConnection)Connector.open("http://getlocation.de/webapps/ROOT/servlet/MyServlet");
			dout = (DataOutputStream) hc.openOutputStream();

			hc.setRequestMethod(HttpConnection.POST);
			hc.setRequestProperty("Content-Length", Integer.toString(longitude.length()));
			
			dout = hc.openDataOutputStream();
			dout.write(longitude.toString().getBytes());
			dout.flush();

			dout.close();
			hc.close();
			
			display.setCurrent(fm);
			
		} catch (IOException e) {e.printStackTrace();}
		
	}
```
[/b]


----------



## Guest (21. Jul 2008)

Ich bin leider nicht wirklich fit in J2ME, aber kannst du nicht einfach die Parameter wie von mir beschreiben hier übergeben?:


```
hc = (HttpConnection)Connector.open("http://getlocation.de/webapps/ROOT/servlet/MyServlet?longitude=65.003424&latitude=42");
```


----------



## Guest (21. Jul 2008)

Nachtrag: Damit meine Variante funktioniert, solltest du evtl. die Request-Methode auf GET umstellen.


----------



## Luser_k (21. Jul 2008)

Hi,

danke.

Ich kann das MIDlet noch nicht ausprobieren, da mein Servlet noch nicht richtig fertig ist und im MIDlet muss POST
stehen.

Warum muss ich dem MIDlet die Werte über das URL übergeben? Wie unten von Dir angegeben, ich möchte die Werte
über den Stream übergeben!


```
...MyServlet?longitude=65.003424&latitude=42");
```

Kann ich nicht einfach wie unten dargestellt benutzen?


```
hc = (HttpConnection)Connector.open("http://getlocation.de/webapps/ROOT/servlet/MyServlet");
```


----------

