Programmieren II in Java

Größe: px
Ab Seite anzeigen:

Download "Programmieren II in Java"

Transkript

1 Programmieren II in Java Dr. Klaus Höppner 2. Zusammenfassung Inhaltsverzeichnis 1 Grafische Oberflächen mit Swing (Nachtrag zur 1. Zusammenfassung) Listen und Tabellen Datenbanken JDBC JPA, Objektrelationales Mapping XML-Verarbeitung JAXP JAXB Servlets und JSP 11 1 Grafische Oberflächen mit Swing (Nachtrag zur 1. Zusammenfassung) 1.8 Listen und Tabellen Durch die Swing-Komponenten JList und JTable können Listen bzw. Tabellen grafisch dargestellt werden. Weiterhin sind beide ein Beispiel dafür, dass Widgets mit Präsentations- und Kontrollschicht von dem Datenmodell getrennt werden können. Listen Bei Auswahllisten, die mit JList realisiert sind, gibt es zwei Auswahlmodi: Einzelselektion von Elementen, Mehrfachselektion von Elementen möglich. 1

2 Da in der Praxis die Einzelselektion die Regel ist, wird hier nur diese behandelt. Um eine JList mit einem Datenmodel zu verknüpfen, wird dem Konstruktor von JList eine Instanz einer Klasse übergeben, die das Interface ListModel implementiert. In vielen Fällen wird einfach die Klasse DefaultListModel verwendet, die sich bezüglich des Hinzufügens, Ersetzen und Entfernen von Datenelementen lose am List-Interface aus den Java-Collections orientiert. JList getselectedindex() : int getselectedvalue() : Object clearselection() : void addlistselectionlistener(listener: ListSelectionListener) «interface» ListModel getsize() : int getelementat(index : int) : Object addlistselectionlistener(...) «interface» ListSelectionListener valuechanged(ev: ListSelectionEvent): void DefaulListModel addelement(o : Object) set(index: int, o: Object) remove(index: int) Abbildung 1: Trennung von Layout in JList und Daten der Auswahlelement im ListModel. Das Datenmodell bestimmt dabei, aus wievielen und welchen Elementen die Auswahlliste besteht, wobei man im Fall von DefaultListModel die Listenelemente einfach nach und nach mit der Methode addelement hinzu fügen kann. Die grundlegende Struktur von JList und Datenmodell ist in Abb. 1 dargestellt. Mit der Methode addlistselectionlistener kann der JList ein Listener hinzugefügt werden, für den bei Auswahl eines Elementes die Methode valuechanged aufgerufen wird. Dieser wird ein ListSelectionEvent als Parameter übergeben. Im folgenden Beispiel wird in der Auswahlliste beim Selektieren eines Listenelements jeweils zwischen Groß- und Kleinschreibung des Wortes gewechselt. import java.awt.*; import javax.swing.*; import javax.swing.event.*; Beispiel für eine Auswahliste public class MyList extends JFrame implements ListSelectionListener { private DefaultListModel data = new DefaultListModel(); private JList list = new JList(data); public MyList() { setlayout(new BorderLayout()); setdefaultcloseoperation(jframe.exit_on_close); data.addelement("hallo"); 2

3 data.addelement("welt"); data.addelement("echo"); data.addelement("otto"); add(list,borderlayout.center); list.addlistselectionlistener(this); pack(); setvisible(true); public void valuechanged(listselectionevent event) { if (event.getvalueisadjusting()) return; int index = list.getselectedindex(); if (index!= -1) { String s = (String) list.getselectedvalue(); if (s.equals(s.tolowercase())) { data.set(index, s.touppercase()); else { data.set(index, s.tolowercase()); list.clearselection(); JTable Eine JTable wird als Tabelle dargestellt. Auch hier findet eine Verknüpfung mit einem Datenmodell statt. Dieses wird durch das Interface TableModel beschrieben, das folgende Methoden abstrakt definiert: int getcolumncount() Zahl der darzustellenden Spalten, String getcolumnname(int col) Überschrift der Spalte col, int getrowcount() Zahl der darzustellenden Zeilen], Object getvalueat(int row, int col) der in der entsprechenden Zeile und Spalte darzustellende Wert, boolean iscelleditable(int row, int col) gibt an, ob die entsprechnde Zelle editiert werden kann, void setvalueat(int row, int col, Object o) wird nach dem Editieren einer Zelle mit dem neuen Objekt o aufgerufen. Dieses Interface wird von der Klasse AbstractTableModel implementiert, analog zur Klasse DefaultListModel gibt es die Klasse DefaultTableModel, die ein einfaches Datenmodell auf Basis einer zweidimensionalen List implementiert (s. Abb. 2). 3

4 «interface» TableModel getcolumncount() : int getcolumnname(col: int) : String getrowcount() : int getvalueat(row: int, col: int) : Object iscelleditable(row: int, col: int) : boolean setvalueat(row: int, col: int, o: Object) : void AbstractTableModel DefaultTableModel Abbildung 2: Hierarchie der Datenmodell-Klassen für Tabellen Im Folgenden findet sich der Quelltext für eine Klasse QuadratTabelle, die das Datenmodell für eine x-y-tabelle mit y = x 2 implementiert und anschließend die Anwendung in einem grafischen Fenster. Quelltext: QuadratTabelle.java import javax.swing.table.abstracttablemodel; public class QuadratTabelle extends AbstractTableModel { private int count; public QuadratTabelle(int count) { this.count = count; public int getcolumncount() { return public String getcolumnname(int col) { String colname = null; switch (col) { case 0: colname = "x"; break; case 1: 4

5 colname = "x^2"; break; return colname; public int getrowcount() { return count; public Object getvalueat(int row, int col) { Integer result = new Integer(0); switch (col) { case 0: result = row; break; case 1: result = row*row; break; return public boolean iscelleditable(int row, int col) { return false; import java.awt.*; import javax.swing.*; import javax.swing.table.tablemodel;; Quelltext: MyTable.java public class MyTable extends JFrame { private TableModel data = new QuadratTabelle(10); private JTable table = new JTable(data); public MyTable() { setlayout(new BorderLayout()); setdefaultcloseoperation(jframe.exit_on_close); add(table,borderlayout.center); pack(); setvisible(true); 5

6 3 Datenbanken 3.1 JDBC Der Standardweg zur Verbindung mit Relationalen Datenbanksystemen (RDBMS) in Java stellt die JDBC-API dar. Diese bietet die Möglichkeit, sich mit diversen Datenbanken über eine universelle Schnittstelle zu verbinden. Der grundsätzliche Weg besteht aus folgenden Stufen: 1. Laden des JDBC-Treibers für die gewünschte Datenbank. Beispiele sind: com.mysql.jdbc.driver für MySQL und org.hsqldb.jdbcdriver für die in Java implementierte Hypersonic-Datenbank. 2. Erzeugen eines Connection-Objektes, im Normalfall unter Angabe des Datenbank-Servers, des Namens des Datenbank, Username und Passwort. 3. Absetzten eines SQL-Befehls, entweder direkt über Statement oder durch ein PreparedStatement mit Platzhaltern und anschließendem Ersetzen der Platzhalter durch die realen Werte, 4. Bei Querys Auswerten des ResultSet. Im Folgenden findet sich ein Beispiel, in dem einerseits Personendaten über ein normales Statement per SQL-Query abgefragt werden und anschließend mit Hilfe eines PreparedStatement für die Person mit id=5 den Nachnamen neu setzt. Der Vorteil eines PreparedStatement liegt auch darin, dass hierbei automatisch Sonderzeichen (wie Anführungszeichen, Backslash), die in SQL eine besondere Bedeutung haben, entsprechend maskiert werden. Daher ist dieser Weg insbesondere bei Programmen, die extern eingegebene Daten in SQL-Befehle umsetzen, zu bevorzugen. So können so genannte SQL injections verhindert werden, bei denen über diese Metazeichen schädlicher Code eingeschleust werden soll. import java.sql.*; Eine einfache JDBC-Anwendung public class JDBC1 { public static void main(string[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:hsqldb://testdb", "sa", "passwd"); Statement st = con.createstatement(); ResultSet rs = st.executequery("select vorname, nachname from person"); 6

7 while (rs.next()) { System.out.format("Zeile %d: %s %s", rs.getrow(), rs.getstring(1), rs.getstring(2)); rs.close(); st.close(); PreparedStatement pst = con.preparestatement("update person set nachname=? where id=?"); pst.setstring(1, "Meier"); pst.setint(2, 5); pst.executeupdate(); con.close(); Bei ResultSet und PreparedStatement ist darauf zu achten, dass die Zählung der Ergebnisspalten bzw. SQL-Parameter jeweils bei 1 beginnt. 3.2 JPA, Objektrelationales Mapping In Anwendungen enspricht einer Datenbanktabelle häufig eine Java-Klasse, wobei die Tabellenspalten auf Attribute der Klasse abgebildet werden. Mit der Java Persistence API ist eine elegante Möglichkeit erwachsen, Datenbanktabellen mit normalen Java-Objekten (POJO plain old Java objects) zu verknüpfen. So kann in einer Anwendung weitgehend auf gewohnte Weise mit Java-Klassen und -Objekten gearbeitet werden, wobei diese Objekte persistent bleiben, das sich die Daten in Wirklichkeit in einer Datenbank befinden. Eine bekannte Implementierung der JPA ist das Projekt Hibernate. Dieses wird von Redhat als Teil des Open-Source-Applikationsservers JBoss finanziert. In Hibernate werden POJOs, die Java-Beans sind (dies bedeutet, dass diese Klassen einen öffentlichen Standardkonstruktor und öffentliche Zugriffsmethoden, also Getter und Setter für die Attribute der Klasse, besitzen), auf Datenbanktabellen abgebildet. Diese Abbildung findet in Hibernate über XML-Dateien statt, die einerseits die Datenbankeigenschaften (Server, Datenbanktyp, Zugriffsdaten) als auch den Zusammenhang zwischen Tabellen und Klassen sowie den Tabellenspalten und Attributen der Klasse beschreiben. Neben einfachen Eins-zu-Eins-Abbildungen (Abbildung einer Klasse auf eine Tabelle) sind auch komplexe Abbildungen möglich, in denen Klassen mit Verknüpfungen von Tabellen zusammen hängen. 4 XML-Verarbeitung 4.1 JAXP Die Standardschnittstelle zum Verarbeiten von XML-Dateien in Java ist die Java API for XML Processing (JAXP). Hierbei bestehen zwei wesentliche Methoden: 7

8 SAXParserFactory newsaxparser() : SAXParser newinstance() : SAXParserFactory newinstance() «instanceof» factory: SAXParserFactory SAXParser parse(uri: String, handler : DefaultHandler) : void parse(file: File, handler : DefaultHandler) : void parse(is: InputStream, handler : DefaultHandler) : void newsaxparser() parser: SAXParser «instanceof» parser.parse(source, new MyHandler()); DefaultHander startdocument() enddocument() startelement(...) endelement(...) characters(...) MyHandler XML-Source Abbildung 3: Workflow für SAX SAX (Simple API for XML Processing) als schlanker Weg. Hier wird Ereignis-orientiert beim Parsen auf die Struktur der XML-Datei reagiert. Typische Ereignisse sind Start bzw. Ende des Dokuments, Start oder Ende eines Elementes, sowie normaler Text. Da auf diese Weise nicht das komplette XML-Dokument im Speicher vorliegen muss, ist SAX sehr Ressourcen-schonend. DOM (Document Object Model) Hier wird das XML-Dokument komplett eingelesen und hieraus ein DOM-Baum im Speicher aufgebaut. Dieser besteht entsprechend der Struktur des XML aus Knoten. DOM ist aufwändiger, aber auch mächtiger und flexibler als SAX. Das Parsen eines XML-Dokumentes mit SAX wird in Abb. 3 gezeigt. Hierbei wird zunächst eine Parser-Factory angelegt, die wiederum einen Parser erzeugt. Mit diesem wird dann eine XML- Quelle verarbeitet, wobei für die Verarbeitungslogik eine eigene Klasse verwendet wird, die von DefaultHandler erbt. In dieser Klasse können die Callback-Methoden für die auftretenden Ereignisse überladen werden: startdocument() Beginn des Dokuments, enddocument() Ende des Dokuments, startelement(string uri, String localname, String qname, Attributes attr) Beginn eines Elements (der Name des Elementes befindet sich in qname, die evtl. vorhandenen Attribute in 8

9 attr), enddocument(string uri, String localname, String qname) Ende eines Elementes (der Name des Elementes befindet sich in qname). characters(char[] ch, int start, int length) Hier wurden Zeichen gelesen, und zwar length Zeichen im Array ch ab Index start. Es ist möglich, dass ein Textbereich in mehreren Etappen (d. h. mit mehreren Aufrufen dieses Callbacks) gelesen wird. DocumentBuilderFactory newdocumentbuilder() : DocumentBuilder newinstance() : DocumentBuilderFactory newinstance() «instanceof» factory: DocumentBuilderFactory DocumentBuilder parse(uri: String) : Document parse(file: File) : Document parse(is: InputStream) : Document newdocument(): Document newdocumentbuilder() builder: DocumentBuilder «instanceof» doc = builder.parse(source); XML-Source doc : Document getdocumentelement() rootelem: Element Abbildung 4: Workflow zum Parsen eines Dokumentes mit DOM Der Weg zum Parsen eines XML-Dokuments als DOM-Baum sieht zunächst ganz analoge zu SAX aus. Zunächst wird eine Factory angelegt, die dann eine Instanz von DocumentBuilder erzeugt (vgl. Abb 4). Resultat des Parsens ist allerdings das Wurzelelement des DOM-Baum. Hiervon ausgehend kann die Struktur der XML-Quelle analysiert werden. Alle Knoten eines DOM-Baums implementieren das Interface Node. Die Knoten haben einen Typ, der sich aus der Methode getnodetype() ergibt. Dieser Typ ist ein short, wobei die Bedeutung dieses Wertes statischen Konstanten des Interface Node entspricht. Für die einzelnen Knotentype gibt es Subinterfaces von Node, die teilweise zusätzliche Methoden zur Verfügung stellen. Die Subinterfaces und Knotentypen sind in Tabelle 1 aufgelistet. Die Knoten stehen anhand der Baumstruktur zueinander in Beziehung. Die verwandten Knoten lassen sich durch Methoden von Node erreichen: 9

10 Tabelle 1: Knotentypen und entsprechende Subinterfaces von Node Interface Node.XXX_NODE Art Attr ATTRIBUTE_NODE Attribute Comment COMMENT_NODE Kommentar Document DOCUMENT_NODE Das eigentliche Dokument Element ELEMENT_NODE Element Text TEXT_NODE Text getparentnode() der Elternknoten, als der Knoten, in dem der aktuelle Knoten enthalten ist, getfirstchild() der erste Kindknoten, getlastchilde() der letzte Kindknoten, getnextsibling() der nächste Schwesternknoten auf gleicher Ebene, getprevioussibling() der vorige Schwesternknoten auf gleicher Ebene. Diese Methoden geben jeweils wieder einen Node zurück, wobei dieser im Fall, dass dieser nicht existiert, null entspricht. Weiterhin existiert die Methode getchildnodes, die eine NodeList mit allen Kindknoten zurück gibt, sowie für das Interface Element die Methode getelementsbytagname(string name), die alle Kindelemente eines Elements mit einem bestimmten Namen als NodeList zurück gibt. Beim Analysieren der Kindknoten muss man daran denken, dass nicht alle Knoten auch Elementknoten sind. Befindet sich z. B. zwischen zwei Elementen ein Zeilenumbruch, wird dieser als Textknoten interpretiert. Ein Quelltext zum Iterieren über alle Kindelement mit dem Namen person könnte also beispielsweise wie eine der beiden folgenden Varianten aussehen: Variante 1... Element root = doc.getdocumentelement(); NodeList nodes = root.getelementsbytagname("person"); for (int i=0; i<nodes.getlength(); i++) { Element person = (Person) nodes.item(i);... Variante 2... Element root = doc.getdocumentelement(); Node child = root.firstchild(); while (child!= null) { if (child.getnodetype()!=node.element_node) continue; if (!child.getnodename().equals("person")) continue; 10

11 Element person = (Person) child;... child = child.getnextsibling(); 4.2 JAXB Analog zum objekt-relationalen Mapping für Datenbanken existieren seit jüngerer Zeit Wege, neben dem manuellen Verarbeiten einer XML-Datei mit JAXP automatisiert einen Zusammenhang zwischen einer XML-Datei und einer Struktur von normalen Java-Objekten, also POJOs, generieren zu lassen. Abbildung 5: Workflow für JAXB Dies wird von JAXB, der Java API for XML Binding geleistet, die von Sun gefördert wird. Hierbei gibt es zwei generelle Wege (vgl. Abb. 5): Generieren von Java-Klassen anhand eines XML-Schemas mit dem Compiler xjc. Generieren eines XML-Schemas anhand von Java-Klassen mit speziellen Annotationen, die von dem Compiler schemagen ausgewertet werden. 5 Servlets und JSP Häufig werden Applikationsserver eingesetzt, um dynamischen Webinhalt über Java-Programme erzeugen zu lassen. Hierfür gibt es zwei prinzipielle Wege: Interpretieren von Java Server Pages (JSP), die spezielle Tags mit eingebettetem Java- Code enthalten. Diese Java-Anteile werden dann bei Aufruf kompiliert und vom Applikationsserver ausgeführt. Vorteil von JSP ist, dass sie großteils normalen HTML-Code enthalten können, und nur dort, wo dynamisch Inhalt eingefügt werden soll, die entsprechenden JSP-Tags eingesetzt werden. Daher wird die Präsentationsschicht in MVC- Mustern häufig als JSP realisiert. 11

12 Ausführen von Servlets in einem Servlet-Container. Der Container stellt dabei die Laufzeitumgebung zur Verfügung, die Servlets sind Klassen mit Methoden zur Behandlung von HTTP-Requests. Dadurch, dass diese im Servlet-Container ausgeführt werden, muss nicht zunächst eine JVM gestartet werden, so dass Servlets deutlich schneller sind als dynamische Inhalte, die über CGI realisiert werden. Ein weit verbreiteter Java-Applicationsserver stellt Apache Tomcat dar. Dieser ist sehr gut mit dem Apache-Webserver integriert, indem der Connector Coyote für eine direkte Verbindung von Applikations- und Webserver über das Apache JServ Protocol (AJP) sorgt. Tomcat besteht neben dem AJP-Connector aus den Komponenten: Catalina als Servlet-Container und Jasper als JSP-Compiler. In Tomcat findet die Zuordnung von URL-Pfaden zu Servlet-Klassen in der Konfiguration für den Kontext der Webapplikation statt. Diese Konfiguration erfolgt in einer XML-Datei, die einem Servlet-Namen sowohl eine Klasse als auch einen URL-Pfad zuordnet. Die Identifikation der Servlet-Klasse erfolgt somit über den Weg: URL Servlet-Name Servlet-Klasse Eigene Servletklassen erben von der Klasse HttpServlet. Je nach vorkommenden Request- Arten, wird hier eine oder beide der folgenden Methoden überschrieben: doget zur Behandlung von GET-Requests, bei denen zu übermittelnde Daten Formulareingaben) innerhalb des URL-Query-Strings übertragen werden. dopost zur Behandlung von POST-Requests, bei denen Formular-Daten getrennt vom Query- String übertragen werden und daher in der URL nicht sichtbar sind. Für Webanwendungen wird oft das Entwurfsmuster Model-View-Container (MVC) benutzt. Diese teilt die Logik der Webapplikation in verschiedene Schichten auf: Modell-Schicht Hierin steckt ein großer Teil der Geschäftslogik, nämlich der, der von der Webapplikation unabhänig ist. Hier erfolgen z. B. Datenbankabfragen, Parsen von XML- Dateien. Die Modell-Schicht ist in der Regel in Form von normalen Java-Klassen realisiert und kann auch für Nicht-Webanwendungen wiederverwendet werden. Präsentations-Schicht Diese ist für die Ansicht des Resultats zuständig, in Webanwendungen also meist für die Präsentation als HTML. Diese Schicht wird oft in Form von JSP realisiert, an das Daten von der Steuerungs-Schicht weiter gegeben werden. Steuerungs-Schicht Diese ist zuständig für die Interpretation der Anfrage, den Aufruf der notwendigen Methoden der Modell-Schicht, Interpretation der vom Modell erhaltenen Daten, und den Aufruf und die Übergabe der darzustellenden Daten an die Präsentationsschicht. 12

13 HttpServlet doget(request: HttpRequest: resp: HttpResopnse) dopost(request: HttpRequest: resp: HttpResopnse) Client GET MyServlet {Controller doget(...) Auswertung Response Daten Daten Anfage Request Forward Daten Daten-Modell JSP-Datei {View Abbildung 6: Model-View-Controller: Ablauf einer Webapplikation Eine grafische Darstellung der verwendung von MVC für eine Webanwendung findet sich in Abb. 6. Im Folgenden findet sich ein Beispiel für eine Webanwendng mit Verwendung eines Servlets und JSP. Hier wird das Servlet aufgerufen, dieses überlässt der dem Datenmodell das Parsen einer XML-Datei, das Ergebnis wird in das Request-Objekt geschrieben und dieser an die JSP result.jsp weiter geleitet. Steuerungs-Schicht import java.io.ioexception; import java.util.list; Datei PersonenListeServlet.java import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import person.*; import dom.personendom; public class PersonenListeServlet extends HttpServlet { 13

14 @Override protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { PersonenParser parser = new PersonenDOM(); List<Person> daten = parser.parse("personen.xml"); req.setattribute("daten", daten); RequestDispatcher view = req.getrequestdispatcher("result.jsp"); view.forward(req, resp); Modell-Schicht package person; import java.util.list; Datei PersonenParser.java // Dieses Interface wird von den beiden Parsern implementiert public interface PersonenParser { /** * Parsen der XML-Datei mit dem angegebenen Dateinamen, * als Ergebnis wird die Liste der Personen zurück gegeben. * * Wird einmal mit SAX und einmal mit DOM implementiert. * filename Liste von Personen */ public abstract List<Person> parse(string filename); package dom; Datei PersonenDOM.java import java.io.ioexception; import java.util.arraylist; import java.util.list; import javax.xml.parsers.documentbuilderfactory; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.parserconfigurationexception; 14

15 import org.w3c.dom.*; import org.xml.sax.saxexception; import person.person; public class PersonenDOM implements person.personenparser { public List<Person> parse(string filename) { // Leere Liste anlegen List<Person> personen = new ArrayList<Person>(); // Factory erzeugen DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { // Von der Factory den Builder erzeugen lassen DocumentBuilder builder = factory.newdocumentbuilder(); // Datei parsen Document doc = builder.parse(filename); // Wurzelelement kontakte holen Element kontakteelement = doc.getdocumentelement(); // Alle Kindelemente mit dem Namen person einsammeln NodeList personnodes = kontakteelement.getelementsbytagname("person"); for (int i=0; i<personnodes.getlength(); i++) { // Node nach Element casten Element personelement = (Element) personnodes.item(i); // Neue Instanz von Person anlegen Person person = new Person(); // Kindelemente vorname suchen, vom ersten (und einzigen!) den Textinhalt // als Vorname nehmen Node node = personelement.getelementsbytagname("vorname").item(0); person.setvorname(node.gettextcontent()); // Analog für nachname node = personelement.getelementsbytagname("nachname").item(0); person.setnachname(node.gettextcontent()); // Das Element firma ist optional, daher testen, ob item(0) überhaupt // existierte (node!=null) node = personelement.getelementsbytagname("firma").item(0); if (node!=null) { person.setfirma(node.gettextcontent()); // Person an die Liste anhängen personen.add(person); catch (ParserConfigurationException e) { e.printstacktrace(); catch (SAXException e) { e.printstacktrace(); catch (IOException e) { 15

16 e.printstacktrace(); return personen; Datei Person.java package person; public class Person { private String vorname; private String nachname; private String firma; public String getvorname() { return vorname; public void setvorname(string vorname) { this.vorname = vorname; public String getnachname() { return nachname; public void setnachname(string nachname) { this.nachname = nachname; public String getfirma() { return firma; public void setfirma(string firma) { this.firma = public String tostring() { String result; if (getfirma()==null) { result = String.format("%s %s", getvorname(), getnachname()); else { result = String.format("%s %s (%s)", getvorname(), getnachname(), getfirma()); return result; 16

17 Präsentations-Schicht Datei result.jsp page import="java.util.*, person.person" %> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso " /> </head> <body> <% List<Person> daten = (List<Person>) request.getattribute("daten"); %> <p>anzahl Personen: <%= daten.size() %></p> <table border="1"> <% for (Person p: daten) { %> <tr> <td><%= p.getvorname() %></td> <td><%= p.getnachname() %></td> <td><%= p.getfirma()!=null? p.getfirma() : "--" %></td> </tr> <% %> </table> </body> </html> 17

Programmieren II in Java

Programmieren II in Java Programmieren II in Java Dr. Klaus Höppner 2. Zusammenfassung Inhaltsverzeichnis 1 Datenbanken 1 1.1 JDBC.......................................... 1 1.2 JPA, Objektrelationales Mapping..........................

Mehr

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008 Programmieren II SAX Dr. Klaus Höppner DOM Hochschule Darmstadt SS 2008 JAXB 1 / 21 2 / 21 SAX SAX (Simple API for XML) ist eine ereignisorientierte Methode zum Parsen von XML-Dateien. Dies bedeutet, das

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:

Mehr

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 26 XML JAXP SAX DOM 2 / 26 Einführung in XML XML ist eine Auszeichnungssprache zur strukturellen Beschreibung von Dokumenten.

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Nullwerte und Primitive Typen Wenn parent==null, was wird in der Datenbank gespeichert? Wenn man aus der DB liest, wie kann

Mehr

2004-2006, Rainer Schmidberger, ISTE. XML und Java. Rainer Schmidberger Rainer.Schmidberger@informatik.uni-stuttgart.de

2004-2006, Rainer Schmidberger, ISTE. XML und Java. Rainer Schmidberger Rainer.Schmidberger@informatik.uni-stuttgart.de XML und Java Rainer Schmidberger Rainer.Schmidberger@informatik.uni-stuttgart.de Was ist XML? Müller Hans Ulmenweg 22 70565

Mehr

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 34 Annotationen XML JAXB JAXP SAX DOM 2 / 34 Annotationen (1/3) Annoataionen sind Sprachelemente, durch welche Metadaten

Mehr

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2012 1 / 34 Annotationen XML JAXB JAXP SAX DOM 2 / 34 Annotationen (1/3) Annoataionen sind Sprachelemente, durch welche Metadaten

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Angewandte Softwareentwicklung Serialisierung

Angewandte Softwareentwicklung Serialisierung Angewandte Softwareentwicklung Serialisierung WS 2014/2015 Markus Berg Hochschule Wismar Fakultät für Ingenieurwissenschaften Bereich Elektrotechnik und Informatik markus.berg@hs-wismar.de http://mmberg.net

Mehr

MCRServlet Table of contents

MCRServlet Table of contents Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Programmieren II. Wie kommen Daten von einem Webserver? Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 23 2 / 23 Wie kommen Daten von einem Webserver? In der Praxis existieren verschiedene Wege, wie ein Server einem Client zu

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

... MathML XHTML RDF

... MathML XHTML RDF RDF in wissenschaftlichen Bibliotheken (LQI KUXQJLQ;0/ Die extensible Markup Language [XML] ist eine Metasprache für die Definition von Markup Sprachen. Sie unterscheidet sich durch ihre Fähigkeit, Markup

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Java Webentwicklung (mit JSP)

Java Webentwicklung (mit JSP) Java Webentwicklung (mit JSP) SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 1 Inhalt 1 Zielsetzung... 1 2 Webprojekt mit Netbeans... 2 2.1 Webprojekt erstellen... 2 2.1.1 Neues Projekt... 2 2.2 Aufbau

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

XML-Programmierschnittstellen: SAX, DOM

XML-Programmierschnittstellen: SAX, DOM XML-Programmiershnittstellen: SAX, DOM SAX: The Simple API for XML Event-Based Doument Objet Model (DOM) Baumdarstellung APIs zum Parsen, Bearbeiten und Serialisieren von XML-Dokumenten. (Weitgehend) sprahunabhängig

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: http://ruhr.pm.org/

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: http://ruhr.pm.org/ XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: Simon Wilper simon AT ruhr.pm.org http://ruhr.pm.org/ Template Version 0.1 The use of a camel image in association with Perl is a trademark of

Mehr

DataTables LDAP Service usage Guide

DataTables LDAP Service usage Guide DataTables LDAP Service usage Guide DTLDAP Usage Guide thomasktn@me.com / www.ktn.ch Benutzung des DTLDAP Service DataTables Der Service stellt einen JSON Feed für DataTables (http://www.datatables.net)

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Java und XML 2. Java und XML

Java und XML 2. Java und XML Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Workshop Java Webentwicklung Tapestry. Ulrich Stärk Workshop Java Webentwicklung Tapestry Ulrich Stärk Webanwendungen Antwort im Browser des Benutzers sichtbar Anfrage geht ein Antwort rendern Anfrage an passenden Code weiterleiten 2 Servlets Servlet wird

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken & Informationssysteme Übungen Teil 1 Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Einführung in die Scriptsprache PHP

Einführung in die Scriptsprache PHP Herbst 2014 Einführung in die Scriptsprache PHP Wirtschaftsinformatik: 5. Semester Dozenten: Rainer Telesko / Martin Hüsler Fachhochschule Nordwestschweiz FHNW - Rainer Telesko / Martin Hüsler 1 Inhalt:

Mehr

6.9 Java Server Pages

6.9 Java Server Pages DocumentCollection dc = db.ftsearch(abfrage); Document d = dc.getfirstdocument(); while (d!= 0) { String Name = db.gettitle(); out.println(name + ""); d = dc.getnextdocument(); catch (NotesException

Mehr

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung Matthias Bethke bethke@linguistik.uni-erlangen.de Linguistische Informatik Universität Erlangen-Nürnberg Sommersemester

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Web- Applikationen. in Java-Web

Web- Applikationen. in Java-Web Einführung in Java-Web Web- Applikationen Frank Huber Humboldt-Universität zu Berlin Allgemeines Java: Programmierung ist Programmierung nach Konvention Insbesondere bei Web-Applikationen wurde eine API

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an? WEBAPPLIKATIONEN MIT PHP Wo gibt es Hilfe? Wie fang ich an? Tools Webapplikationen bestehen aus Textdateien Lassen sich in Texteditoren schreiben Alternativen: Eclipse (PDT) Netbeans (Dynamic Languages)

Mehr

Architektur des agimatec-validation Frameworks

Architektur des agimatec-validation Frameworks Development : Implementierung Validierungskonzept (Dokumentation) This page last changed on Apr 03, 2008 by roman.stumm. Architektur des agimatec-validation Frameworks Generierung der Metainformationen

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten. Personenverzeichnis Ab dem Wintersemester 2009/2010 wird das Personenverzeichnis für jeden Mitarbeiter / jede Mitarbeiterin mit einer Kennung zur Nutzung zentraler Dienste über das LSF-Portal druckbar

Mehr

Berufsakademie Stuttgart, Außenstelle Horb, MI2002

Berufsakademie Stuttgart, Außenstelle Horb, MI2002 Übungsblatt 1, Scanner für Mini-HTML Ergänzen Sie die JLex-Spezifikation aus der Vorlesung so, dass folgende HTML Lexemklassen , , , , , , , , ,

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Innovator 11 excellence. Import eines DB-Schemas mit Direktzugriff auf ein RDBMS via JDBC. HowTo. Udo Ende. www.mid.de

Innovator 11 excellence. Import eines DB-Schemas mit Direktzugriff auf ein RDBMS via JDBC. HowTo. Udo Ende. www.mid.de Innovator 11 excellence Import eines DB-Schemas mit Direktzugriff auf ein RDBMS via JDBC Udo Ende HowTo www.mid.de Zweck Aus einer Datenbank soll ein DB-Schema in ein Modell von Innovator Data excellence

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15 Historical Viewer zu ETC5000 Benutzerhandbuch 312/15 Inhaltsverzeichnis 1 Allgemeine Hinweise... 3 1.1 Dokumentation...3 2 Installation... 3 3 Exportieren der Logdatei aus dem ETC 5000... 3 4 Anlegen eines

Mehr

Seminar: XML und Datenbanken

Seminar: XML und Datenbanken Seminar: XML und Datenbanken XML-Verarbeitungsmodelle und Language Bindings Christian Müller 24.01.2003 Übersicht 1 Einleitung 2 Simple API for XML (SAX) 3 Document Object Model (DOM) 4 JDOM 5 Java API

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

Mehr

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach - Projekt Personalverwaltung Erstellt von Inhaltsverzeichnis 1Planung...3 1.1Datenbankstruktur...3 1.2Klassenkonzept...4 2Realisierung...5 2.1Verwendete Techniken...5 2.2Vorgehensweise...5 2.3Probleme...6

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Dateiname: ecdl5_01_02_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Access

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Veröffentlicht Januar 2009 Copyright 2009 Helmut Schottmüller Inhaltsverzeichnis 1.

Mehr

Java Server Pages (JSP)

Java Server Pages (JSP) Überblick über Internet-Technologien Server-Technologien Datenbankkopplung Servlets JSP PHP CGI XML+XSL Dokumentsprachen Client-PGM ruft DB-Server Web-Server ruft Datenbankserver HTML+Javascript HTML+Applets

Mehr

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9d: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

JTable. W. Lang HWR Berlin, SS

JTable. W. Lang HWR Berlin, SS JTable W. Lang HWR Berlin, SS 2014 1 JTable Die Swing-Komponente JTable dient der Darstellung einer zweidimensionalen Tabelle Verwendung häufig im Zusammenhang mit Datenbankanwendungen Im Gegensatz zu

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003 Page 1 of 8 SMTP Konfiguration von Exchange 2003 Kategorie : Exchange Server 2003 Veröffentlicht von webmaster am 25.02.2005 SMTP steht für Simple Mail Transport Protocol, welches ein Protokoll ist, womit

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Arbeiten mit Pivot-Tabellen

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Arbeiten mit Pivot-Tabellen Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Arbeiten mit Pivot-Tabellen Dateiname: ecdl_p2_04_01_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 2 Tabellenkalkulation

Mehr

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de.

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de. Java: Kapitel 9 Java und XML Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 9 Einführung in XML XML-Verarbeitung in Java Document Object

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 24 Singleton-Muster 2 / 24 Das Singleton Im einfachsten Fall wird ein Singleton über

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Projekt Systementwicklung. Wie kommen Daten von einem Webserver? Java-Applikationsserver. Servlets, JSP. Handout S. 1. Dr.

Projekt Systementwicklung. Wie kommen Daten von einem Webserver? Java-Applikationsserver. Servlets, JSP. Handout S. 1. Dr. Projekt Systementwicklung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2009/2010 1 / 32 Wie kommen Daten von einem Webserver? In der Praxis existieren verschiedene Wege, wie ein Server einem Client

Mehr

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Verarbeitung von XML mit SAX und DOM

Verarbeitung von XML mit SAX und DOM Verarbeitung von XML mit SAX und DOM Sven Peters Seminar Dokumentenverarbeitung Typeset by FoilTEX Urspünglich nur für Java SAX Simple Api for XML Peter Murray-Rust (Jumbo XML Browser) - YAXPAPI (Yet Another

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Drag and Drop (DnD) 1. Transfer-Mechanismus 2. Transfer-Support 3. Cursor-Symbole 4. Einführendes Beispiel 5. Komponenten DnD-fähig machen 6. Standard DnD-Verhalten ändern Folie 1 Lernziele Sie

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr