Objectgeoriënteerd Programmeren en Webapplicaties

Maat: px
Weergave met pagina beginnen:

Download "Objectgeoriënteerd Programmeren en Webapplicaties"

Transcriptie

1 Info-books HO40c Toegepaste Informatica Objectgeoriënteerd Programmeren en Webapplicaties Deel 40c: Java voor het internet: Servlets K. Behiels - J. Gils

2 Hoofdstuk 3 JDBC 3.1 Inleiding De technologie die het mogelijk maakt om vanuit Java met databases te werken is Java Database Connectivity (JDBC). Ze bestaat uit twee delen: de JDBC core API die deel uitmaakt van J2SE, je vindt ze in de java.sqlpackage; de JDBC optional API die zich in de javax.sql-package bevindt. Een volledige studie van JDBC is een cursus op zichzelf, we beperken ons hier tot het strikte minimum De java.sql-package De belangrijkste onderdelen van de java.sql package zijn: de DriverManage-klasse; de Driver-interface; de Connection-interface; de Statement-interface; de ResultSet-interface; de PreparedStatement-interface; de ResultSetMetaData-interface. DriverManager Elke JDBC-driver die je wenst te gebruiken moet geregistreerd zijn bij de DriverManager. Deze drivers verschillen naargelang het type database dat je gebruikt. Om de JDBC-driver vanuit een servlet of een JSP-pagina te laden kopieer je het driverbestand (meestal een *.jar bestand) naar de WEB-INF\lib directory van je toepassing. Om de driver te laden voer je de volgende code uit: try { Class.forName("JDBC.driver"); catch(classnotfoundexception e) { // driver niet gevonden Hierin is JDBC.driver de volledige naam van de JDBC-driver klasse, voor de Cloudscape database is dit bijvoorbeeld "com.cloudscape.core.jdbcdriver". Als je zoals in de voorbeelden die volgen met Access werkt is dit K. Behiels J. Gils Servlets 51

3 "sun.jdbc.odbc.jdbcodbcdriver", de standaard JDBC-ODBC-driver van Sun Microsystems. De belangrijkste methode van deze klasse is de getconnection-methode, die bestaat in drie verschillende versies (telkens public static): Connection getconnection(string url); Connection getconnection(string url, Properties info); Connection getconnection(string url, String user, String password); Driver Deze interface is geïmplementeerd door elke JDBC-driver-klasse. De driver klasse zelf is geladen en geregistreerd bij de DriverManager. Er kan meer dan één driver tegelijkertijd geregistreerd zijn. De DriverManager vraagt elke driver om proberen te connecteren met de database op de bijbehorende URL. Connection De connection-interface stelt een verbinding met een database voor, een instantie hiervan wordt bekomen met de getconnection-methode van de DriverManager-klasse. Hij bevat de volgende methoden die allemaal een throw van een SQLException kunnen doen: public void close(); Met deze methode sluit je de verbinding onmiddellijk af in plaats van te wachten tot ze automatisch wordt afgesloten. public boolean isclosed(); Test of de verbinding al of niet is afgesloten. public Statement createstatement(); public PreparedStatement preparestatement(); Met de createstatement-methode maak je een Statement-object om SQLuitdrukkingen naar een database te zenden. Wanneer een SQL-uitdrukking meer dan eenmaal wordt uitgevoerd is het beter een PreparedStatement te gebruiken. public boolean getautocommit(); public void setautocommit(boolean autocommit); Met de eerste methode kan je de toestand van autocommit opvragen, met de tweede kan je ze wijzigen. Standaard staat autocommit op true. Dit wil zeggen dat de JDBC-driver de transactie automatisch zal beëindigen (starten gaat altijd automatisch). Als je autocommit op false zet moet je zelf de transactie eindigen met commit of rollback. public void commit(); public void rollback(); Met de commit-methode maak je alle wijzigingen in de database (sinds de laatste commit of rollback) permanent. Met de rollback-methode breng je de database terug in de toestand na de laatste succesvolle commit. 52 Servlets K. Behiels J. Gils

4 Statement Je gebruikt een statement-methode om een SQL-uitdrukking uit te voeren en de geproduceerde resultaten te bekomen. De twee belangrijkste methoden zijn de volgende (ze kunnen ook een SQLException veroorzaken): public ResultSet executequery(string sql); public int executeupdate(string sql); De executequery-methode voert een SQL-uitdrukking uit en geeft een ResultSetobject terug. Met een executeupdate kan je insert-, update- of delete <SQL-uitdrukking> uitvoeren. De returnwaarde is het aantal records dat door de transactie gewijzigd is. ResultSet Deze interface bevat het resultaat van een query in de vorm van een soort tabel. Hij bevat een soort pointer waarmee je naar de verschillende gegevensrijen kunt verwijzen. De drie belangrijkste methoden (die ook allemaal een SQLException kunnen veroorzaken) zijn: public boolean isfirst(); public boolean islast(); Deze methoden geven aan of de pointer respectievelijk naar de eerste of naar de laatste record in de ResultSet verwijst. public boolean next(); Deze methode verplaatst de pointer naar de volgende record, ze geeft true terug zolang er nog records zijn. public ResultMetaData getmetadata(); Deze methode geeft de meta data van de ResultSet. public XXX getxxx(int kolomindex); De getxxx-methoden, waarbij XXX voor een datatype staat, gebruik je om de waarde van een kolom in een bepaalde rij van de ResultSet op te vragen. Kolomindex 1 geeft de eerste kolom enzovoort. PreparedStatement Deze interface is een uitbreiding van de Statement-interface en wordt gebruikt om een SQL-uitdrukking vooraf te compileren zodat ze bij meervoudig gebruik efficiënter uitgevoerd wordt. ResultSetMetaData Deze interface stelt de meta data van een ResultSet voor. Ze bevat onder andere de volgende methoden (ook hier is een SQLException mogelijk): public int getcolumncount(); Geeft het aantal kolommen terug. public String getcolumnname(int kolomindex); Geeft de naam van de kolom terug, de indexwaarde van de eerste kolom is 1. K. Behiels J. Gils Servlets 53

5 3.1.2 Toegang krijgen tot een database Om toegang te krijgen tot een tabel in een database moet je 4 stappen doorlopen: Stap 1: Laad de JDBC-database-driver Voor bijna alle populaire databases zijn er tegenwoordig JDBC-drivers op de markt, bijvoorbeeld voor Oracle, Sybase, DB2, SQL Server, Cloudscape, MySQL, Ook voor ODBC zijn er drivers beschikbaar zodat je eventueel via een JDBC-ODBC bridge kan connecteren. Omdat JDBC-drivers meestal in de vorm van een *.jar-bestand geleverd worden is het eerste wat je moet doen ervoor zorgen dat de driver gevonden kan worden. Kopieer daarom de driver (het *.jar bestand) in de WEB-INF\lib-directory van je toepassing. Wanneer je met een JDBC-ODBC-brigde werkt is dit niet noodzakelijk omdat die in je Java-omgeving geïntegreerd is. Wanneer je van plan bent om met verschillende databases te werken moet je alle benodigde drivers laden. Als je bijvoorbeeld vanuit een programma met Access-, SQL Server- en MySQL-bestanden wilt werken moet je in je programma de volgende regels opnemen: // voor Access Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // voor SQL Server Class.forName("com.internetcds.jdbc.tds.driver"); // voor MySQL ( Class.forName("org.gjt.mm.mysql.driver"); Stap 2: Maak een verbinding (Connection) Nadat de JDBC-driver bij de DriverManager geregistreerd is kan je een verbinding met de database maken. Het eerste argument bij de verschillende versies van de getconnection-methodes is altijd de URL. Deze URL-string heeft de volgende syntaxis: "jdbc:subprotocol:subname" De subprotocol- en de subname-delen zijn afhankelijk van welke database je gebruikt. Als je met Access werkt is het subprotocol odbc en de subname de DSN (Data Source Name) voor de database (normaal de naam van het databasebestand). Als je Access-bestand de naam JavaWeb.mdb heeft dan wordt de URL-string als volgt: "jdbc:odbc:javaweb" Bij MySQL is het subprotocol mysql en de subnaam de naam van de machine en de database, de URL-string voor een database met de naam JavaWeb wordt dan: "jdbc:mysql///javaweb" 54 Servlets K. Behiels J. Gils

6 en als de naam van de server 'linux' is wordt het: "jdbc:mysql///linux/javaweb" De volledige uitdrukkingen zijn dan respectievelijk bijvoorbeeld: Connection connection = DriverManager.getConnection("jdbc:odbc:JavaWeb"); Connection connection = DriverManager.getConnection("jdbc:mysql://JavaWeb"); Connection connection = DriverManager.getConnection("jdbc:mysql://linux/JavaWeb", "admin", "secret"); In het laatste geval worden ook gebruikersnaam en wachtwoord meegegeven. Stap 3: Maak een SQL-uitdrukking (Statement) Nadat je een Connection-object ter beschikking gekregen hebt kan je een SQLuitdrukking maken. Welke SQL-onderdelen begrepen worden is afhankelijk van je database server. Verder is de uitvoering van een SQL-uitdrukking afhankelijk van het toegankelijkheidsniveau, bijvoorbeeld of je al of niet de toelating hebt om records te wijzigen. Je creëert eerst een Statement-object (uitgaande van een open verbinding met de naam connection). Daarna kan je een executequery- of een executeupdate-methode uitvoeren. Bijvoorbeeld met een tabel met de naam Gebruikers: Statement statement = connection.createstatement(); String sqlstring = "INSERT INTO Gebruikers " + "VALUES ('Don', 'Johnson', 'Miami', 'Vice')"; statement.executeupdate(sqlstring); ResultSet result = statement.executequery("select * FROM Gebruikers"); Stap 4: Verwerk de het resultaat (ResultSet) Als je gebruik maakte van een executequery-statement staat het resultaat daarvan in een ResultSet-object. Om de gegevens hieruit op te halen kan je gebruik maken van de getxxx-methoden waarvan de getstring-methode de meest gebruikte is. Deze methode bestaat in twee versies: public String getstring(int kolomindex) ; public String getstring(string kolomnaam); Verder kan je de verschillende records doorlopen met de volgende lus: while(result.next()) { // K. Behiels J. Gils Servlets 55

7 3.1.3 Een praktisch voorbeeld Voor de volgende programmavoorbeelden maken we gebruik van de volgende eenvoudige Access-tabel Gebruikers in het bestand Javaweb.mdb: Gebruikers Sleutel Voornaam Familienaam Gebruikersnaam Wachtwoord 1 Jos Gils gils swordfish 2 Erik Goossens goose matrix 3 Theo Jansens jans sleeples 4 Luc Lambrecht lam stigmata 5 Ronny Verlinden ronny silence 6 Kris Van Gompel gompy outbreak 7 Els D'Heer d'heer o'cool 8 Tom Van den Eede tom nightowl Het volgende programma maakt een verbinding met de database en toont de inhoud ervan op het scherm: /** hst3vb TestJavaWeb.java Kristiaan Behiels 1.0 */ import java.io.*; import java.sql.*; public class TestJavaWeb { public static void main(string[] args) throws IOException { try { // laad de driver (=standaard driver uit JDK1.2) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Geef het bestand aan voor de driver via ODBC // naar 'JavaWeb.mdb' odbc vooraf instellen // (control panel ODBC Data sources)! // Geef als naam JavaWeb en verwijs naar // de juiste directory. String sourceurl = "jdbc:odbc:javaweb"; // maak een connection via de DriverManager Connection databaseconnection = DriverManager.getConnection(sourceURL); // voer een sql statement uit Statement statement = databaseconnection.createstatement(); ResultSet result = statement.executequery("select * FROM Gebruikers"); // toon de resultaten while (result.next()) { System.out.println("\"" + result.getstring("voornaam") + "\" \"" + result.getstring("familienaam") + 56 Servlets K. Behiels J. Gils

8 "\" \"" + result.getstring("gebruikersnaam") + "\" \"" + result.getstring("wachtwoord") + "\""); statement.close(); databaseconnection.close(); catch (ClassNotFoundException e) { System.out.println(e); catch (SQLException e) { System.out.println(e); Dit geeft (indien succesvol) de volgende afdruk: "Jos" "Gils" "gils" "swordfish" "Erik" "Goossens" "goose" "matrix" "Theo" "Jansens" "jans" "sleeples" "Luc" "Lambrecht" "lam" "stigmata" "Ronny" "Verlinden" "ronny" "silence" "Kris" "Van Gompel" "gompy" "outbreak" "Els" "D'Heer" "d'heer" "o'cool" "Tom" "Van den Eede" "tom" "nightowl" 3.2 Enkele Servlet-toepassingen Zoeken in een databasetabel De klasse StringUtil /** hst3vb StringUtil.java Kristiaan Behiels 1.0 */ package myutils; public class StringUtil { /** Deze methode verdubbelt de single quotes die * in een string, die in een SQL-uitdrukking zal * gebruikt worden, voorkomen. */ public static String fixsqlfieldvalue(string value) { if (value == null) { return null; int length = value.length(); StringBuffer fixedvalue = new StringBuffer((int)(length * 1.1)); for (int i = 0; i < length; i++) { char c = value.charat(i); if (c == '\'') { K. Behiels J. Gils Servlets 57

9 fixedvalue.append("''"); else { fixedvalue.append(c); return fixedvalue.tostring(); /** Deze methode vervangt speciale tekens zodat ze * op de juiste wijze in de browser zullen getoond * worden. De HTML-tag wordt in een StringBuffer * geplaatst en elk van de volgende tekens wordt * als volgt vervangen: * '<' met "<" * '>' met ">" * '&' met "&" * '"' met """ * ' ' met " " */ public static String encodehtmltag(string tag) { if (tag == null) { return null; int length = tag.length(); StringBuffer encodedtag = new StringBuffer(2 * length); for (int i = 0; i < length; i++) { char c = tag.charat(i); if (c == '<') { encodedtag.append("<"); else if (c == '>') { encodedtag.append(">"); else if (c == '&') { encodedtag.append("&"); else if (c == '"') { encodedtag.append("""); else if (c == ' ') { encodedtag.append(" "); else { encodedtag.append(c); return encodedtag.tostring(); De eigenlijke servlet /** hst3vb SearchServlet.java Kristiaan Behiels 1.0 */ 58 Servlets K. Behiels J. Gils

10 import java.io.*; import java.util.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; import myutils.stringutil; public class SearchServlet extends HttpServlet { private String zoekstring = ""; public void init() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); System.out.println("JDBC driver geladen"); catch (ClassNotFoundException e) { System.out.println(e.toString()); /** Verwerk de http-get-request*/ public void doget(httpservletrequest request, HttpServletResponse response) sendpageheader(response); sendsearchform(response); sendpagefooter(response); /** Verwerk de http-post-request*/ public void dopost(httpservletrequest request, HttpServletResponse response) zoekstring = request.getparameter("keyword"); sendpageheader(response); sendsearchform(response); sendsearchresult(response); sendpagefooter(response); /** Toon het resultaat */ void sendsearchresult(httpservletresponse response) throws IOException { PrintWriter out = response.getwriter(); try { Connection connection = DriverManager.getConnection("jdbc:odbc:JavaWeb"); System.out.println("verbinding met database"); Statement statement = connection.createstatement(); out.println("<table BORDER=1>"); out.println("<tr>"); out.println("<th>voornaam</th>"); K. Behiels J. Gils Servlets 59

11 out.println("<th>familienaam</th>"); out.println("<th>gebruikersnaam</th>"); out.println("<th>wachtwoord</th>"); out.println("</tr>"); zoekstring = StringUtil.fixSqlFieldValue(zoekString); String sqlstring = "SELECT Voornaam, Familienaam, " + "Gebruikersnaam, Wachtwoord" + " FROM Gebruikers" + " WHERE Voornaam LIKE '%" + zoekstring + "%'" + " OR Familienaam LIKE '%" + zoekstring + "%'"; ResultSet result = statement.executequery(sqlstring); while (result.next()) { out.println("<tr>"); out.println("<td>" + StringUtil.encodeHtmlTag(result.getString(1)) + "</TD>"); out.println("<td>" + StringUtil.encodeHtmlTag(result.getString(2)) + "</TD>"); out.println("<td>" + StringUtil.encodeHtmlTag(result.getString(3)) + "</TD>"); out.println("<td>" + StringUtil.encodeHtmlTag(result.getString(4)) + "</TD>"); out.println("</tr>"); statement.close(); connection.close(); catch (SQLException e) { catch (Exception e) { out.println("</table>"); /** * Zend de HTML-pagina-header, inclusief de titel * en de <BODY>-tag */ private void sendpageheader(httpservletresponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>displaying Selected Record(s)</TITLE>"); out.println("</head>"); out.println("<body>"); out.println("<center>"); /** Zend the HTML-pagina-footer */ private void sendpagefooter(httpservletresponse response) 60 Servlets K. Behiels J. Gils

12 PrintWriter out = response.getwriter(); out.println("</center>"); out.println("</body>"); out.println("</html>"); /** Zend het zoekformulier */ * private void sendsearchform(httpservletresponse response) PrintWriter out = response.getwriter(); out.println("<br><h2>zoekformulier</h2>"); out.println("<br>geef de voornaam, de familienaam " + "of een deel ervan."); out.println("<br>"); out.println("<br><form METHOD=POST>"); out.print("naam: <INPUT TYPE=TEXT Name=keyword"); out.println(" VALUE=\"" + StringUtil.encodeHtmlTag(zoekString) + "\""); out.println(">"); out.println("<input TYPE=SUBMIT>"); out.println("</form>"); out.println("<br>"); Bij het invullen van de deelstring "en" ziet het er in de browser na het verzenden van de query zo uit: Zoekformulier Geef de voornaam, de familienaam of een deel ervan. Naam: en Query verzenden Voornaam Familienaam Gebruikersnaam Wachtwoord Erik Goossens goose matrix Theo Jansens jans silence Ronny Verlinden ronny crash Tom Van den Eede tom nightowl Inloggen met gegevens uit een databasetabel /** hst3vb DataBaseLoginServlet.java Kristiaan Behiels 1.0 */ import java.io.*; import java.sql.*; import java.util.*; K. Behiels J. Gils Servlets 61

13 import javax.servlet.*; import javax.servlet.http.*; import myutils.stringutil; public class DataBaseLoginServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) sendloginform(response, false); public void dopost(httpservletrequest request, HttpServletResponse response) String username = request.getparameter("username"); String password = request.getparameter("password"); if (login(username, password)) { RequestDispatcher rd = request.getrequestdispatcher("welcomeservlet"); rd.forward(request, response); else { sendloginform(response, true); private void sendloginform(httpservletresponse response, boolean witherrormessage) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>login</title>"); out.println("</head>"); out.println("<body>"); out.println("<center>"); if (witherrormessage) { out.println("login mislukt.<br>"); out.println("gebruikersnaam of wachtwoord foutief.<br>"); out.println("<br>"); out.println("<br><h2>login Pagina</H2>"); out.println("<br>"); out.println("<br>geef je gebruikersnaam en wachtwoord."); out.println("<br>"); out.println("<br><form METHOD=POST>"); out.println("<table>"); out.println("<tr>"); out.println("<td>user Name:</TD>"); out.println("<td><input TYPE=TEXT NAME=userName></TD>"); 62 Servlets K. Behiels J. Gils

14 out.println("</tr>"); out.println("<tr>"); out.println("<td>password:</td>"); out.println("<td><input TYPE=PASSWORD NAME=password></TD>"); out.println("</tr>"); out.println("<tr>"); out.println("<td ALIGN=RIGHT COLSPAN=2>"); out.println("<input TYPE=SUBMIT VALUE=Login></TD>"); out.println("</tr>"); out.println("</table>"); out.println("</form>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); boolean login(string username, String password) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection connection = DriverManager.getConnection("jdbc:odbc:JavaWeb"); System.out.println("geconnecteerd met database"); Statement statement = connection.createstatement(); username = StringUtil.fixSqlFieldValue(userName); password = StringUtil.fixSqlFieldValue(password); String sqlstring = "SELECT Gebruikersnaam FROM Gebruikers" + " WHERE Gebruikersnaam='" + username + "'" + " AND Wachtwoord='" + password + "'"; ResultSet result = statement.executequery(sqlstring); if (result.next()) { result.close(); statement.close(); connection.close(); return true; result.close(); statement.close(); connection.close(); catch (ClassNotFoundException e) { System.out.println(e.toString()); catch (SQLException e) { System.out.println(e.toString()); catch (Exception e) { System.out.println(e.toString()); return false; K. Behiels J. Gils Servlets 63

15 /** hst3vb WelcomeServlet.java Kristiaan Behiels 1.0 */ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class WelcomeServlet extends HttpServlet { public void dopost(httpservletrequest request, HttpServletResponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>welkom</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>welkom op de website van " + "Toegepaste Informatica.</P>"); out.println("</body>"); out.println("</html>"); De login-pagina ziet er bijvoorbeeld als volgt uit: Login Pagina Geef je gebruikersnaam en wachtwoord. User Name: Password: goose Login Indien login-naam en wachtwoord in de database gevonden worden krijgt de gebruiker het welkomscherm te zien, in het andere geval wordt de login-pagina herhaald met als extra bovenaan de volgende foutmelding: Gegevens in een database toevoegen Login mislukt. Gebruikersnaam of wachtwoord foutief. /** hst3vb RegistrationServlet.java Kristiaan Behiels 1.0 */ import java.io.*; 64 Servlets K. Behiels J. Gils

16 import java.sql.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import myutils.stringutil; public class RegistrationServlet extends HttpServlet { private String voornaam = ""; private String familienaam = ""; private String gebruikersnaam = ""; private String wachtwoord = ""; public void init() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); System.out.println("JDBC driver geladen"); catch (ClassNotFoundException e) { System.out.println(e.toString()); public void doget(httpservletrequest request, HttpServletResponse response) sendpageheader(response); sendregistrationform(request, response, false); sendpagefooter(response); public void dopost(httpservletrequest request, HttpServletResponse response) sendpageheader(response); voornaam = request.getparameter("voornaam"); familienaam = request.getparameter("familienaam"); gebruikersnaam = request.getparameter("gebruikersnaam"); wachtwoord = request.getparameter("wachtwoord"); boolean error = false; String message = null; try { Connection connection = DriverManager.getConnection( "jdbc:odbc:javaweb"); System.out.println("verbinding met database"); Statement statement = connection.createstatement(); String sqlstring = "SELECT Gebruikersnaam FROM Gebruikers" + " WHERE gebruikersnaam='" + StringUtil.fixSqlFieldValue(gebruikersnaam) + "'"; ResultSet result = statement.executequery(sqlstring); K. Behiels J. Gils Servlets 65

17 if (result.next()) { result.close(); message = "De gebruikersnaam <B>" + StringUtil.encodeHtmlTag(gebruikersnaam) + "</B> bestaat reeds. Kies een andere naam a.u.b."; error = true; else { result.close(); sqlstring = "INSERT INTO Gebruikers" + " (Voornaam, Familienaam, Gebruikersnaam, Wachtwoord)" + " VALUES" + " ('" + StringUtil.fixSqlFieldValue(voornaam) + "'," + " '" + StringUtil.fixSqlFieldValue(familienaam) + "'," + " '" + StringUtil.fixSqlFieldValue(gebruikersnaam) + "'," + " '" + StringUtil.fixSqlFieldValue(wachtwoord) + "')"; int i = statement.executeupdate(sqlstring); if (i == 1) { message = "Nieuw gebruiker succesvol toegevoegd."; statement.close(); connection.close(); catch (SQLException e) { message = "Error." + e.tostring(); error = true; catch (Exception e) { message = "Error." + e.tostring(); error = true; if (message!=null) { PrintWriter out = response.getwriter(); out.println("<b>" + message + "</B><BR>"); out.println("<hr><br>"); if (error==true) sendregistrationform(request, response, true); else sendregistrationform(request, response, false); sendpagefooter(response); private void sendpageheader(httpservletresponse response) response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>registratiepagina</title>"); out.println("</head>"); out.println("<body>"); 66 Servlets K. Behiels J. Gils

18 out.println("<center>"); private void sendpagefooter(httpservletresponse response) PrintWriter out = response.getwriter(); out.println("</center>"); out.println("</body>"); out.println("</html>"); private void sendregistrationform(httpservletrequest request, HttpServletResponse response, boolean displaypreviousvalues) PrintWriter out = response.getwriter(); out.println("<br><h2>registratiepagina</h2>"); out.println("<br>vul de gevraagde gegevens in a.u.b."); out.println("<br>"); out.println("<br><form METHOD=POST>"); out.println("<table>"); out.println("<tr>"); out.println("<td>voornaam</td>"); out.print("<td><input TYPE=TEXT Name=voornaam"); if (displaypreviousvalues) out.print(" VALUE=\"" + StringUtil.encodeHtmlTag(voornaam) + "\""); out.println("></td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>familienaam</td>"); out.print("<td><input TYPE=TEXT Name=familienaam"); if (displaypreviousvalues) out.print(" VALUE=\"" + StringUtil.encodeHtmlTag(familienaam) + "\""); out.println("></td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>gebruikersnaam</td>"); out.print("<td><input TYPE=TEXT Name=gebruikersnaam"); if (displaypreviousvalues) out.print(" VALUE=\"" + StringUtil.encodeHtmlTag(gebruikersnaam) + "\""); out.println("></td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>wachtwoord</td>"); out.print("<td><input TYPE=PASSWORD Name=wachtwoord"); if (displaypreviousvalues) out.print(" VALUE=\"" K. Behiels J. Gils Servlets 67

19 + StringUtil.encodeHtmlTag(wachtwoord) + "\""); out.println("></td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td><input TYPE=RESET></TD>"); out.println("<td><input TYPE=SUBMIT></TD>"); out.println("</tr>"); out.println("</table>"); out.println("</form>"); out.println("<br>"); out.println("<br>"); Bij het opstarten van de servlet zie je in de browser het volgende: Registratiepagina Vul de gevraagde gegevens in a.u.b. Voornaam Familienaam Gebruikersnaam Wachtwoord Beginw aarden Query verzenden 68 Servlets K. Behiels J. Gils

20 Besluit Via JDBC maak je verbindingen tussen een Java-programma en externe databases. De belangrijkste onderdelen daarvan bevinden zich in de java.sql-package. Om toegang tot een database te krijgen moet je eerst de JDBC-database-driver laden en vervolgens verbinding maken met de database via een Connection-object. Daarnaast zijn er methoden om een SQL-uitdrukking te maken, een query uit te voeren en de resultaten te verwerken. Wat je moet kennen en kunnen: verbinding maken met een database vanuit servlet-toepassingen; in de database gegevens opzoeken, toevoegen en wijzigen; een login op basis van database gegevens in toepassingen voorzien. Opdracht Voor deze opgave mag je gebruik maken van de klassen Adres en AdresBoek. De laatste klasse bevat al enkele adressen en is een voorbeeld van de toepassing van het singleton pattern. In eerste instantie is dit geen database toepassing, het is de bedoeling om eerst een werkend geheel te krijgen en dit later aan een database te koppelen. Stap 1: Maak een welkom HTML-bestandje met de naam index.html in de volgende aard: Welkom bij Adresboek Enter De link <ENTER> moet verwijzen naar een servlet met de naam MENU. Stap 2: Maak een servlet met de naam Menu dat er ongeveer als volgt uitziet: Adresboek Wat wil je doen? Overzicht Zoeken Toevoegen Stoppen K. Behiels J. Gils Servlets 69

21 De verschillende links moet verwijzen naar servlets, OVERZICHT naar TOONADRESSEN, Zoeken naar ZOEKADRES en TOEVOEGEN naar VOERADRESIN. Via de link STOPPEN ga je terug naar de welkompagina. Stap 3: Maak een servlet met de naam VOERADRESIN. Wanneer je hem uitvoert moet je (ongeveer) het volgende op het scherm bekomen: Nieuw adres Naam: Straat: Postnummer: Gemeente: Voeg Toe Er moet een controle op de invoer zijn. Alle velden moeten ingevuld zijn en de waarde van het postnummer moet tussen 1000 en liggen. Bij foutieve of niet ingevulde waarden krijg je het scherm terug met vermelding van de bewuste velden. Een voorbeeldje: Nieuw adres De volgende velden werden niet of foutief ingevuld: Straat Postnummer Verbeter a.u.b. Naam: Straat: Jos Postnummer: 900 Gemeente: Gent Voeg toe Dit krijg je te zien als je naast Naam 'Jos', naast Straat niets, naast PostNummer '900' en naast Gemeente 'Gent' invult. Na het verzenden moet je terug naar het menu gaan. Stap 4: Schrijf de servlet ToonAdressen, het resultaat (indien je nog geen adres hebt toegevoegd) moet ongeveer het volgende zijn: 70 Servlets K. Behiels J. Gils

22 Overzicht adressen Naam Straat PostNr Gemeente Bachus, Lieve Dambruggestraat Antwerpen De Maeght, Maria Plezantstraat Sint-Niklaas De Pauw, Bart Koekkoekstraat Melle De Vos, Erik Schoonmeersstraat Gent Van Roy, Jean-Pierre Rozier Brussel Verlinden, Ronny Warande Wetteren terug De hyperlink brengt je terug naar het menu(servlet). Stap 5: Schrijf de servlet ZoekAdres, het beginbeeld in de browser moet er ongeveer als volgt uitzien: Zoek een adres Naam: Bachus, Lieve Zoek In het midden zie je een keuzelijst waarbij, als je hem uitpakt, alle aanwezige namen getoond worden. Bij het selecteren van een naam (bijvoorbeeld De Pauw, Bart) krijg je een nieuw scherm met de volgende inhoud: Adres gevonden: Naam: De Pauw, Bart Straat: Koekkoekstraat 70 Postnummer: 9090 Gemeente: Melle Verw ijderen Wijzigen Terug Voorlopig moet alleen de knop Terug werken, hij moet je terug naar het menu brengen. Stap 6: Zorg er nu voor dat de knoppen Verwijderen en Wijzigen ook werken. K. Behiels J. Gils Servlets 71

Info-books. Toegepaste Informatica. Objectgeoriënteerd Programmeren en Webapplicaties. Java voor het internet: Persistentie en Threads.

Info-books. Toegepaste Informatica. Objectgeoriënteerd Programmeren en Webapplicaties. Java voor het internet: Persistentie en Threads. Info-books HO40e Toegepaste Informatica Objectgeoriënteerd Programmeren en Webapplicaties Deel 40e: Java voor het internet: Persistentie en Threads K. Behiels - J. Gils Hoofdstuk 2 Andere vormen van Persistentie

Nadere informatie

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Correspondentie inzake overnemen of reproductie kunt u richten aan: Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.

Nadere informatie

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Correspondentie inzake overnemen of reproductie kunt u richten aan: Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.

Nadere informatie

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Correspondentie inzake overnemen of reproductie kunt u richten aan: Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.

Nadere informatie

Practicum Orientatie op Webserver

Practicum Orientatie op Webserver Practicum Orientatie op Webserver Doel: Een goed beeld krijgen van een drie-tier applicatie. Het gebruik van drivers om database-onafhankelijk te werken. Het kunnen lezen van een java servlet. Database

Nadere informatie

Databanken en webtoepassingen in Java

Databanken en webtoepassingen in Java Databanken en webtoepassingen in Java K. Coolsaet Universiteit Gent 20 maart 2017 WiFi UGentGuest Gebruikersnaam: guestm3java Wachtwoord: ag4oznpq Eerst surfen naar http://www.ugent.be Cursuswebsite: http://inigem.ugent.be/moevie.html

Nadere informatie

Databanken en webtoepassingen in Java

Databanken en webtoepassingen in Java Databanken en webtoepassingen in Java K. Coolsaet Universiteit Gent 21 maart 2017 WiFi UGentGuest Gebruikersnaam: guestleerkr Wachtwoord: T5EVyMYW Eerst surfen naar http://www.ugent.be Cursuswebsite: http://inigem.ugent.be/moevie.html

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

INFITT01 - Internettechnologie WEEK 8

INFITT01 - Internettechnologie WEEK 8 INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

8. Koppeling met een database

8. Koppeling met een database PHP7 en MySQL 8. Koppeling met een database 8.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

Dynamische webapplicaties in Java

Dynamische webapplicaties in Java Dynamische webapplicaties in Java October 7, 2006 In java is het mogelijk dynamische webpagina s te implementeren. De code om de dynamische gegevens te genereren staat in servlets of Java Server Pages

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

PHP en een MySQL database.

PHP en een MySQL database. mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;

Nadere informatie

eerste voorbeelden in Java

eerste voorbeelden in Java Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele

Nadere informatie

Een fragment wordt afgeleid van de basis klasse "Fragment".

Een fragment wordt afgeleid van de basis klasse Fragment. Android fragmenten 1/5 Fragmenten Klasse Een fragment wordt afgeleid van de basis klasse "Fragment". package com.android.cursustekst; import java.text.simpledateformat; import java.util.arraylist; import

Nadere informatie

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Kwis (3) class X { public void a() { System.out.println(x); public static void main(string[] args) { X x = new X(); Kwis (3) class X { public void a() { System.out.println("x"); class Y extends X { public void a() { System.out.println("y"); class Z extends Y { public void a() { System.out.println("z"); public static

Nadere informatie

ASP.NET Test 2009-2010. Jan Van Ryckeghem

ASP.NET Test 2009-2010. Jan Van Ryckeghem ASP.NET Test 2009-2010 Jan Van Ryckeghem Inhoud Exceptionhandling H4... 3 Try Catch slide 25... 3 Error pagina slide 29... 3 Error.aspx... 3 Error.aspx.cs... 4 Web.config... 4 Logbestand aanmaken... 4

Nadere informatie

Katholieke Hogeschool Kempen ASP

Katholieke Hogeschool Kempen ASP Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica ASP www.projectchatroom.be Yorkim Parmentier 3TI4 Andy Geluykens 3TI4 Academiejaar

Nadere informatie

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers Verslag SE Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers In dit verslag zullen wij een beschrijving geven, over welke

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

Een stoomcursus door Edgar de Graaf, november 2006

Een stoomcursus door Edgar de Graaf, november 2006 Programmeren in Java Een stoomcursus door Edgar de Graaf, november 2006 Deze tekst geeft een zeer korte inleiding in de programmeertaal Java, uitgaande van kennis van de taal C++. Daarnaast bestudere men

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

Nadere informatie

Zelftest Database applicatieprogrammering met JDBC

Zelftest Database applicatieprogrammering met JDBC Zelftest Database applicatieprogrammering met JDBC Document: n1216test.fm 02/04/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST DATABASE

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

De MySQL C API. Variabelen in C Functies in C Pointers in C LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat

Nadere informatie

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet. Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Game of Life in Java

Game of Life in Java Game of Life in Java Auteur: drs. M.S.L.F. Manssen http://www.manssen.eu Game of Life is een spel van een rooster van cellen, waarbij telkens een ronde gebeurt waarbij de nieuwe waardes van cellen gebeurt.

Nadere informatie

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

Nadere informatie

Les 9: formulier controle met javascript.

Les 9: formulier controle met javascript. Les 9: formulier controle met javascript. Javascript is erg veel gebruikt bij internet toepassingen. In tegenstelling tot PHP, wat een server side scripting is, is java client side scripting. Dwz, niet

Nadere informatie

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 12

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 12 Inhoud Introductie 2 Opgaven 3 Terugkoppeling 12 1 Objectgeoriënteerd programmeren in Java 1 I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het tentamen van de cursus Objectgeoriënteerd

Nadere informatie

Dynamische Websites. Week 6. vrijdag 25 oktober 13

Dynamische Websites. Week 6. vrijdag 25 oktober 13 Dynamische Websites Week 6 AGENDA Herhaling Databank SQL Injection Ontwerp OO _ indien private of protected magic zo weinig mogelijk php! View MVC home.php confirm.php vehicledetail.php Controller Model

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

Figuur 1 HTML-pagina opvragen

Figuur 1 HTML-pagina opvragen Inleiding In figuur 1 vraagt een host naar een HTML-pagina die in de Web-server is opgeslagen. De Web-server leest deze pagina van de hard disk en stuurt de desbetreffende pagina naar de host. harddisk

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

Stappenplannen MailPlus SOAP API

Stappenplannen MailPlus SOAP API Stappenplannen MailPlus SOAP API Stappenplannen MailPlus SOAP API oktober 2009 Introductie Dit document bevat stappenplannen welke u als technische gebruiker van MailPlus op weg kunnen helpen met de koppeling

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D

Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D Hoofdstuk 6 PHP Data Objects Cursus PHP & MySQL Groep D Hoofdstuk 1: PHP Data Objects 1.1 Inleiding Tegenwoordig kun je er bij het ontwikkelen van een website bijna niet meer omheen: het gebruik van een

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

Acht stappen voor JSF

Acht stappen voor JSF Acht stappen voor JSF Inleiding In deze tutorial zullen we JSF (Java server faces) installeren. Wat we niet beschrijven is hoe te werken met JSF, over dit onderwerp zijn er genoeg boeken en internetsites

Nadere informatie

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie. Introductie Dit artikel laat zien hoe je een Image in een C# applicatie kan opslaan in een database en het kan ophalen uit de database om het te laten zien. Voor de database gebruiken we MS SQL maar voor

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

ORTHOSMART B.V. VERSIE FEBRUARI

ORTHOSMART B.V. VERSIE FEBRUARI ORTHOSMART B.V. VERSIE 2019 8 FEBRUARI 2019 Copyright 2019, Orthosmart B.V. Theremon Cloud Versie 2019 Inhoudsopgave 2. REGISTREREN BIJ THERAMON CLOUD... 2 2.1 REGISTREREN NIEUWE GEBRUIKER... 2 2.2 INSTALLEREN

Nadere informatie

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

Nadere informatie

Beheer van databanken

Beheer van databanken Beheer van databanken Wim De Proost Jan Jochems Pieter Van den Akkerveken Departement Handelswetenschappen en Bedrijfskunde Bachelor Informatica 3 de jaar Academiejaar 2011-2012 2 Inhoud INLEIDING... 3

Nadere informatie

Werken op afstand via internet

Werken op afstand via internet HOOFDSTUK 12 Werken op afstand via internet In dit hoofdstuk wordt uitgelegd wat er nodig is om op afstand met de ROS artikel database te kunnen werken. Alle benodigde programma s kunnen worden gedownload

Nadere informatie

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008 judge Teamhandleiding DOMjudge (versie..0mukp) 31 mei 008 /\ DOM DOM judge Inhoudsopgave 1 Inleiding Samenvatting.1 Inlezen en wegschrijven............................... Insturen van oplossingen...............................3

Nadere informatie

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak); Vaknaam: Programmeren I (Java) - Tentamen Module: 2 Datum/Tijd: 17 mrt 2015 / 18.30 20:30 Richting: ICT Code: IC011 Docent: E. Lieuw Boeken en aantekeningen NIET toegestaan. Kladpapier is wel toegestaan.

Nadere informatie

MA!N Rapportages en Analyses

MA!N Rapportages en Analyses MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6

Nadere informatie

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Inhoudsopgave. versie 0.8

Inhoudsopgave. versie 0.8 JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker

Nadere informatie

NAAM: Programmeren 1 Examen 21/01/2011

NAAM: Programmeren 1 Examen 21/01/2011 Programmeren 1 21 januari 2011 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

[TOETS SQL INLEIDING]

[TOETS SQL INLEIDING] 2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10

Nadere informatie

Installatiehandleiding TiC Narrow Casting Manager

Installatiehandleiding TiC Narrow Casting Manager Installatiehandleiding TiC Narrow Casting Manager Inhoudsopgave 1. Algemeen - 3-2. Installatie PostgreSQL database server - 4-3. Installatie FTP server - 9-4. Aanmaken account in FileZilla server - 13

Nadere informatie

Tentamen in2705 Software Engineering

Tentamen in2705 Software Engineering Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen

Nadere informatie

Vervang UW SERVERNAAM, UW SERVERNAAM ZONDER VPN en COMPUTERNAAM door de naam van de server en computer welke wij u doorgegeven hebben.

Vervang UW SERVERNAAM, UW SERVERNAAM ZONDER VPN en COMPUTERNAAM door de naam van de server en computer welke wij u doorgegeven hebben. VPN ONDER WINDOWS 7 VOOR JE BEGINT Deze handleiding is geschreven voor Windows 7. Bij het doorlopen van de handleiding zal je regelmatig handelingen moeten uitvoeren. Hierbij wordt een vaste schrijfwijze

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

Nadere informatie

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens Info-books HA40c Toegepaste Informatica Handleiding Deel 40c : Gegevensbeheer en algoritmen in Access Jos Gils Erik Goossens Veldlengte Het maximale aantal tekens dat in een veld kan ingevoerd worden.

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

Handleiding www.restofrit-prijslijsten.be

Handleiding www.restofrit-prijslijsten.be Handleiding www.restofrit-prijslijsten.be Hoe log ik in Van start gaan Beginnen met het aanmaken van je prijslijst Hoe voeg ik een kader met titel toe Hoe voeg ik lijnen tekst toe aan een kader Kiezen

Nadere informatie

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod:

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod: 16. Web Station U kunt uw QNAP NAS gebruiken om een website te hosten. U kunt zelf een website bouwen in HTML of gebruik maken van één van de vele content management systemen die beschikbaar worden gesteld

Nadere informatie

Secure Application Roles

Secure Application Roles Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam

Nadere informatie

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen

Nadere informatie

Installatie King Task Centre

Installatie King Task Centre Installatie King Task Centre In deze handleiding wordt beschreven hoe u de King Task Centre moet installeren. King Task Centre is de nieuwe naam van de King MaatwerkBox. In alle documentatie en communicatie

Nadere informatie

Hoe email- adressen in uw website opladen en bewaren?

Hoe email- adressen in uw website opladen en bewaren? Hoe email- adressen in uw website opladen en bewaren? Stap 1: Klik in de footer van je website op Inloggen onder de titel Admin- Area Stap 2: Typ volgende gegevens in om in te loggen: Gebruikersnaam: agentennummer

Nadere informatie

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet.

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet. Het installeren van WordPress Nu je een volledig werkende virtuele server hebt is het tijd om er een applicatie op te installeren. We beginnen met de blogtool WordPress. De database De eerste stap is het

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze:

Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze: Hoe verhuis je een WordPress website? Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze: Iemand heeft een WordPress website en stapt over naar een andere webhost (meestal blijft het

Nadere informatie

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin: Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de

Nadere informatie

Handleiding IDEP: Inlezen gegevens; meerdere stromen/periodes/aangevers

Handleiding IDEP: Inlezen gegevens; meerdere stromen/periodes/aangevers Handleiding IDEP Inlezen gegevens; meerdere stromen/periodes/aangevers In deze korte handleiding wordt beschreven hoe je meerdere stromen en/of periodes en/of aangevers in één keer kunt inlezen. Dat betekent

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

Installatie en configuratie documentatie

Installatie en configuratie documentatie Installatie en configuratie documentatie Assistance Web Portal v. 2.x Voor Windows 2003 / XP / Vista Assistance PSO handleiding, uitgegeven door Assistance Software. Alle rechten voorbehouden. Niets uit

Nadere informatie

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

Nadere informatie

Tentamen Objectgeorienteerd Programmeren

Tentamen Objectgeorienteerd Programmeren Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het

Nadere informatie

Olympus Portal. Inhoud

Olympus Portal. Inhoud Olympus Portal Inhoud 1. Naar de portal gaan 2. Een beheerder van de portal toevoegen 3. Een gebruiker van Office on Wheels toevoegen 4. Contactpersoon voor de facturatie toevoegen 5. Gebruikers wijzigen

Nadere informatie

Syntra-West. Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07

Syntra-West. Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 Syntra-West Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST... 0 INITIATIECURSUS JAVA & DATABASE-DEVELOPNMENT... 0 JBUILDER 2005... 0 1. INLEIDING...

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Installatie SQL Server 2014

Installatie SQL Server 2014 Installatie SQL Server 2014 Download de SQL Server Express net advanced Services van de website: https://www.microsoft.com/en-us/download/details.aspx?id=42299 klik op Download. Als u een 64 bit variant

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

return an ; } private I L i s t l i j s t ;

return an ; } private I L i s t l i j s t ; In bovenstaande code werd de binding t e k s t. DataBindings. Add(new Binding ( Text, l i j s t, ) ) ; gebruikt om de eigenschap Text van het object tekst (dwz. tekst.text) te binden aan het object lijst.

Nadere informatie

ODS: Open Directory service. Wat is ODS?

ODS: Open Directory service. Wat is ODS? Wat is ODS? Wat is ODS? Geïntegreerde Meta-directorie voor OpenScape Office LX/MX/HX voor het zoeken van contacten in verschillende databasen en directories. Toegang verlenen naar verschillende directories.

Nadere informatie

BASIS- INRICHTING ORBIS TASKCENTRE 4.7

BASIS- INRICHTING ORBIS TASKCENTRE 4.7 Trainingsdocument BASIS- INRICHTING ORBIS TASKCENTRE 4.7 ORBIS SOFTWARE BENELUX BV TRAININGSDOCUMENT BASISINRICHTING ORBIS TASKCENTRE 4.7 - INHOUDSOGAVE BASISINRICHTING ORBIS TASKCENTRE 4.7 TRAININGSDOCUMENT

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

SPOJ oplossingen Gilles Callebaut 7 augustus 2015 SPOJ oplossingen 2012-2013 Gilles Callebaut 7 augustus 2015 DISCLAIMER Oefeningen zijn niet altijd correct of optimaal. Gelieve de oefeningen enkel te gebruiken ter ondersteuning. Van kopiëren leer je

Nadere informatie