Warning: Constant ABSPATH already defined in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php on line 28 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/rest-api/class-wp-rest-server.php on line 1723 {"id":44,"date":"2008-06-08T13:36:35","date_gmt":"2008-06-08T11:36:35","guid":{"rendered":"http:\/\/www.florian-oeser.de\/?p=44"},"modified":"2008-07-08T13:35:35","modified_gmt":"2008-07-08T11:35:35","slug":"howto-part-2-blazedsfds-tomcat-servlets-mysql","status":"publish","type":"post","link":"http:\/\/www.florian-oeser.de\/2008\/06\/08\/howto-part-2-blazedsfds-tomcat-servlets-mysql\/","title":{"rendered":"HowTo: BlazeDS\/FDS-Tomcat + Servlets + MySQL"},"content":{"rendered":"
In dem HowTo-Reihe m\u00f6chte ich euch kurz zeigen wie einfach es ist, Daten mit Hilfe eines Servlets zu lesen und zu schreiben. Ich werde nicht alles in Detail erkl\u00e4ren. Deshalb w\u00e4re es sinnvoll, wenn ihr schonmal mit einem der beiden Server gearbeitet habt, ein Servlet geschrieben habt und ein klein wenig Ahnung von SQL habt \ud83d\ude09<\/p>\n
Als kleines Beispiel haben wir in Anlehnung an Projekt radioSiTY<\/a> eine Datenbank, in der es eine Tabelle User gibt. Ich zeige zuerst wie man die einzelnen Felder ausliest und wie man anschlie\u00dfent einen neuen Benutzer hinzuf\u00fcgt.<\/p>\n <\/a><\/p>\n F\u00fcr die Entwicklung der Servlets kann ich \u00fcbrigens Eclipse for JEE<\/a> empfehlen. Dort kann man dann ein Dynamic Web Project<\/em> anlegen und kann direkt Servlets erstellen. Zum Einen hat man so ein fertiges Codeger\u00fcst und zum Anderen braucht man sich nicht mehr um die Servlet jar’s k\u00fcmmern. Und man kann zus\u00e4tzlich Server anlegen auf dennen kompiliert wird.<\/p>\n Um \u00fcberhaupt mit Java bzw. einem Servlet und einer Datenbank zu kommunizieren, sind die sogenannten JDBC Treiber<\/em> erforderlich. Diesen Treiber gibt es f\u00fcr viele Datenbanken egal ob PostgreSQL<\/em>, HSQL<\/em> oder MySQL<\/em>. Die Treiber nennt MySQL<\/em> den Connector\/J.<\/em> Zum Download gibt es den nat\u00fcrlich auf der Homepage<\/a> von MySQL<\/em>. Diese *jar muss jetzt in das JDK Verzeichniss unter jre\/lib\/ext kopiert werden.<\/p>\n Die Umsetzung ist relativ trivial. Um eine Spalte einer Tabelle auszulesen ist nicht mehr erforderlich als eine Verbindung zur Datenbank aufzubauen, den Query zu \u00fcbergeben und das Ergebnis in einer Schleife auszugeben. Folgendes Servlet realisiert genau das:<\/p>\n Um eine Datenbankverbindung herzustellen brauchen wir eine Connection<\/em> und ein Statement<\/em> welches das Query ausf\u00fchrt und in ein Resultset<\/em> zur\u00fcckgibt. Um eine Verbindung aufzubauen sind die Angaben des Treibers, der Datenbank selbst, des Benutzernames und des Passwortes n\u00f6tig. Bis auf Ersteres muss nat\u00fcrlich alles entsprechend angepasst werden.<\/p>\n Als Query \u00fcbergeben wir ein einfaches SELECT Statement<\/em>. In dem ResultSet<\/em> steht jetzt das komplette Ergebniss der Abfrage. Dieses wird dann in einer Schleife ausgeben. Das Argument bei rs.getString()<\/em> gibt dabei den Spaltenname an. Da der ResultSet<\/em> wie gesagt alles speichert, ist es problemlos m\u00f6glich auch noch zum Beispiel die id sich ausgeben zu lassen. Unabh\u00e4nig davon ob es zu Fehler kam oder nicht, muss nat\u00fcrlich die Verbindung wieder geschlossen werden.<\/p>\n Noch ein paar Worte zum kompilieren. F\u00fcr den BlazeDS kann man in Eclipse einen neuen Server analog zu einem normalen Tomcat anlegen. Angegeben werden muss hier nur der Tomcat Ordner im BlazeDS Verzeichnis.<\/p>\nUmsetzung<\/h4>\n
Auslesen der Datenbank<\/h5>\n
\r\nimport java.io.IOException;\r\nimport javax.servlet.*;\r\nimport java.io.*;\r\nimport java.sql.*;\r\n\r\nimport javax.servlet.*;\r\nimport javax.servlet.http.*;\r\n\r\npublic class FirstExample extends HttpServlet {\r\n\t@Override\r\n\tprotected void doGet(HttpServletRequest req, HttpServletResponse res)\r\n\t\t\tthrows ServletException, IOException {\r\n\r\n\t\tConnection con = null;\r\n\t\tStatement stmt = null;\r\n\t\tResultSet rs = null;\r\n\r\n\t\ttry {\r\n\t\t\tres.setContentType("text\/html");\r\n\t\t\tPrintWriter out = res.getWriter();\r\n\r\n\t\t\tClass.forName("com.mysql.jdbc.Driver").newInstance();\r\n\t\t\tcon = DriverManager.getConnection("jdbc:mysql:\/\/\/radiositiy_db1",\r\n\t\t\t\t\t"root", "root");\r\n\r\n\t\t\tstmt = con.createStatement();\r\n\t\t\trs = stmt.executeQuery("SELECT * FROM tbl_user");\r\n\r\n\t\t\twhile (rs.next()) {\r\n\r\n\t\t\t\tout.println(rs.getString(2) + "<br>");\r\n\r\n\t\t\t}\r\n\t\t\tout.close();\r\n\r\n\t\t\tif (!con.isClosed())\r\n\t\t\t\tSystem.out.println("Successfully connected to "\r\n\t\t\t\t\t\t+ "MySQL server using TCP\/IP...");\r\n\r\n\t\t} catch (Exception e) {\r\n\t\t\tSystem.err.println("Exception: " + e.getMessage());\r\n\t\t} finally {\r\n\t\t\ttry {\r\n\t\t\t\tif (con != null)\r\n\t\t\t\t\tcon.close();\r\n\t\t\t} catch (SQLException e) {\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n}\r\n\r\n<\/pre>\n