Objectgeoriënteerd Programmeren en Webapplicaties
|
|
- Petrus Goossens
- 8 jaren geleden
- Aantal bezoeken:
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 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 informatieCorrespondentie 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 informatieCorrespondentie 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 informatieCorrespondentie 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 informatiePracticum 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 informatieDatabanken 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 informatieDatabanken 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 informatieTechnische 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 informatieINFITT01 - 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 informatieTechnische 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 informatieDatabases - 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 informatieIngebouwde 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 informatieUniversiteit 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 informatieNAAM: 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 informatieFormulieren 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 informatie8. 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 informatieLes 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 informatieKoppeling 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 informatieDynamische 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 informatieTentamen 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 informatiePHP 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 informatieeerste 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 informatieEen 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 informatieKwis (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 informatieASP.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 informatieKatholieke 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 informatieVerslag. 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 informatieSQL 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 informatieTentamen 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 informatieEen 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 informatieSQL 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 informatieObjectgericht 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 informatieZelftest 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 informatieDe 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 informatieOpen 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 informatieProgrammeren 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 informatieGame 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 informatieKies 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 informatieTentamen 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 informatievoegtoe: 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 informatieLes 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 informatieInhoud. 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 informatieDynamische 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 informatieLes 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 informatieZelftest 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 informatieVoor 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 informatieFiguur 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 informatieEen 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 informatieStappenplannen 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 informatieVoorbeeldtentamen 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 informatieHoofdstuk 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 informatieKleine 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 informatieAcht 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 informatieDit 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 informatieDOMjudge 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 informatieModelleren 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 informatieORTHOSMART 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 informatieIMP 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 informatieBeheer 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 informatieWerken 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 informatieTeamhandleiding 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 informatiepublic 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 informatieMA!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 informatieProgrammeren 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 informatiehttp://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 informatieInhoudsopgave. 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 informatieNAAM: 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]
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 informatieInstallatiehandleiding 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 informatieTentamen 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 informatieVervang 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 informatieQuery 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 informatieInfo-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 informatieOvererving & 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 informatieHandleiding 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 informatie16. 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 informatieSecure 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 informatieMet 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 informatieInstallatie 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 informatieHoe 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 informatieOp 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 informatieSparse 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 informatieDie 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 informatieEen 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 informatieHandleiding 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 informatieAFO 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 informatieInstallatie 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 informatieElementary 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 informatieTentamen 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 informatieOlympus 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 informatieSyntra-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 informatieDBMS. 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 informatieInstallatie 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 informatieProgrammeren (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 informatiereturn 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 informatieODS: 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 informatieBASIS- 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 informatieTentamen 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 informatieSPOJ 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