Κεφάλαιο 7 ΔΙΑΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ JAVA SERVLETS

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Κεφάλαιο 7 ΔΙΑΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ JAVA SERVLETS"

Transcript

1 Κεφάλαιο 7 ΔΙΑΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ JAVA SERVLETS Σύνοψη Σε αυτό το κεφάλαιο παρουσιάζεται η τεχνολογία Java Servlets, η οποία είναι κατάλληλη για διαδικτυακό προγραµµατισµό, καθώς επιτρέπει τη δηµιουργία εφαρµογών, υπηρεσιών και συστηµάτων στο περιβάλλον του παγκόσµιου ιστού (World Wide Web/WWW). Συγκεκριµένα, εξετάζονται η τεχνολογία που υποστηρίζει τα Servlets, τα βασικά ιδιαίτερα χαρακτηριστικά τους, καθώς και ο κύκλος ζωής τους. Κατόπιν, αναλύεται ο τρόπος µε τον οποίο κατασκευάζεται ένα Servlet, δίνεται µια σειρά από προγραµµατιστικά παραδείγµατα, µέσω των οποίων επιδεικνύεται η διαχείριση συνεδριών και παρουσιάζεται η αυθεντικοποίηση µέσω σύνδεσης σε βάση δεδοµένων. Προαπαιτούµενη γνώση 1) Κεφάλαια 5 και 6 του παρόντος. 2) M. Hall και L. Brown (2007), Servlets και σελίδες διακοµιστή Java: Τεχνολογίες πυρήνα, Κλειδάριθµος (Κωδικός Βιβλίου στον Εύδοξο: 13578). 3) Ι. Χ. Παναγιωτόπουλος (2010), Εφαρµογές Διαδικτυακού Προγραµµατισµού µε JAVΑ, Σταµούλης (Κωδικός Βιβλίου στον Εύδοξο: ) H γλώσσα προγραµµατισµού Java Η Java είναι µια γλώσσα ανάπτυξης εφαρµογών, η οποία δηµιουργήθηκε από τη Sun Micrοsystems και πρωτοεµφανίστηκε το Αποτελεί ένα σηµαντικό εργαλείο για τους προγραµµατιστές, καθώς µπορεί να χρησιµοποιηθεί σε ένα ευρύ φάσµα εφαρµογών, από εφαρµογές στην πλευρά του εξυπηρετητή (server-side) µέχρι και εφαρµογές κινητών τηλεφώνων. Αναπτύχθηκε ως µια γλώσσα µη εξαρτηµένη από πλατφόρµες, για να µπορεί να εκτελείται σε οποιοδήποτε µηχάνηµα και όχι µόνο σε εκείνο στο οποίο δηµιουργήθηκε η εφαρµογή. Είναι µια αντικειµενοστρεφής γλώσσα και, για την εκτέλεση των προγραµµάτων, απαιτεί µόνο την ύπαρξη µιας εικονικής µηχανής, της Java Virtual Machine (JVM). Μπορεί να εκτελεστεί είτε απευθείας σε ένα µηχάνηµα πελάτη είτε µέσω ενός εξυπηρετητή ιστού (Web Server).[1] Τα στοιχεία και οι δυνατότητες που περιέχει η Java προέρχονται κυρίως από άλλες γλώσσες προγραµµατισµού, όπως είναι οι C, FORTRAN, Ada και Lisp. Αυτό σηµαίνει ότι, για την πλειονότητα των προγραµµατιστών, και ιδίως για εκείνους που γνωρίζουν C++, η Java είναι σχετικά εύκολη και γρήγορη στην εκµάθηση. Είναι µια απλή γλώσσα, διότι περιέχει λίγες προγραµµατιστικές δοµές και εντολές, που έχουν αυστηρά ορισµένη σηµασία. Επίσης, χρησιµοποιεί κλάσεις που είναι τουλάχιστον υποκλάσεις ακριβώς µιας άλλης, δηλαδή δεν έχει ούτε πολλαπλή κληρονοµικότητα, ούτε δείκτες, όπως έχει η C++, χαρακτηριστικό που της προσδίδει απλότητα. Ακόµα, χρησιµοποιεί απλούς τελεστές, χωρίς να εµφανίζει την υπερφόρτωση τελεστών (operator overloading), που παρατηρείται στην C++. Ένα απλό παράδειγµα κώδικα προγράµµατος Java δίνεται στον Κώδικα 7.1. Ο τελικός κώδικας που παράγεται από την Java δεν είναι στοχευµένος σε συγκεκριµένο υπολογιστικό σύστηµα. Ο προγραµµατιστής µπορεί να γράψει το πρόγραµµά του ακόµα και σε έναν απλό επεξεργαστή κειµένου, όπως είναι το σηµειωµατάριο των Windows. Στη συνέχεια, µε τη βοήθεια του µεταγλωττιστή της Java, ο κώδικας υφίσταται µετάφραση σε έναν ενδιάµεσο κώδικα, που ονοµάζεται bytecode (αρχείο µε κατάληξη.class). Αυτός ο ενδιάµεσος κώδικας είναι κοινός για όλες τις πλατφόρµες που δέχονται

2 προγράµµατα σε JAVA. Ωστόσο, τα συστήµατα πρέπει να έχουν ενσωµατωµένο έναν αντίστοιχο διερµηνέα (interpreter) της Java, την Java Virtual Machine (JVM).[2] Η διαδικασία µεταγλώττισης και εκτέλεσης των προγραµµάτων Java προϋποθέτει τη λήψη και εγκατάσταση του Java Developer Kit (JDK). 1 Επίσης, χρειάζεται και ένας επεξεργαστής κειµένου, για την επεξεργασία των πηγαίων προγραµµάτων. Αρχικά, γίνεται µεταγλώττιση του πηγαίου προγράµµατος Java (π.χ. test.java), µε τη βοήθεια του javac, του µεταγλωττιστή (compiler) της Java και την εκτέλεση της απλής εντολής «javac test.java». Αν δεν υπάρχουν µεταφραστικά λάθη, παράγεται ο ενδιάµεσος κώδικας σε bytecode, σε ένα ή/και περισσότερα αρχεία, τα οποία µπορεί είτε να χρησιµοποιηθούν τοπικά είτε να µεταφερθούν σε άλλους υπολογιστές του δικτύου. Μόλις δηµιουργηθεί ο ενδιάµεσος κώδικας, γίνεται η εκτέλεσή του από την JVM. Η εκτέλεση αρχίζει µε την εντολή: Java test.java. // Πρόγραµµα σε Java το οποίο εµφανίζει το µήνυµα Hello Class class HelloClass { public static void main (String args[]) { // Εµφάνιση του µηνύµατος System.out.println("Hello Class from Java"); } } Κώδικας 7.1. Ένα απλό παράδειγµα σε γλώσσα Java. Οι γραµµές που αρχίζουν µε // αφορούν σχόλια, τα οποία αγνοούνται από το µεταγλωττιστή. Το αρχείο πρέπει να ονοµαστεί HelloClass.java (δηλαδή, να έχει το ίδιο όνοµα µε την κλάση), ώστε να δουλέψει το πρόγραµµα. Η µέθοδος main δείχνει την αρχή της εκτέλεσης του προγράµµατος. Δηλώνεται ως δηµόσια (public), δηλαδή µπορεί να κληθεί από οποιοδήποτε σηµείο του προγράµµατος. Επίσης, δηλώνεται και ως στατική (static), δηλαδή παραµένει ως µόνιµο αντίγραφο, κοινό για τα αντικείµενα της κλάσης σε όλη τη διάρκεια της εκτέλεσης. Τέλος, δηλώνεται ως void, δηλαδή δεν επιστρέφει κάποια τιµή. Όταν καλείται η µέθοδος main, εµφανίζει το µήνυµα «Hello Class from Java». Αυτό επιτυγχάνεται µέσω της µεθόδου System.out.println. Το περιβάλλον του χρόνου εκτέλεσης (Java Runtime Environment/JRE) της JVM αναλαµβάνει την κατασκευή και την καταστροφή αντικειµένων και, εν γένει, τη διαχείριση της µνήµης, σε πλήρη αλληλεπίδραση και συνεργασία µε το λειτουργικό σύστηµα. Η Java διαθέτει, επίσης, ένα σύστηµα συλλογής απορριµµάτων (garbage collector), το οποίο είναι υπεύθυνο για την απελευθέρωση µη χρησιµοποιούµενης µνήµης. Δηλαδή, η Java δεν απαιτεί από τον προγραµµατιστή να απελευθερώσει τη µνήµη που χρησιµοποιεί στην εφαρµογή του, αλλά το κάνει µόνη της, µε τη χρήση του συστήµατος συλλογής απορριµµάτων, το οποίο αποδεσµεύει οποιοδήποτε κοµµάτι µνήµης είναι πλέον ανενεργό, όπως ένα αντικείµενο που δεν διαθέτει αναφορές προς αυτό. Σηµαντικό πλεονέκτηµα της Java αποτελεί η ασφάλεια του κώδικα, η οποία παρέχεται µέσα από την ίδια την υλοποίηση της εικονικής µηχανής JVM. Αυτήν τη στιγµή, η Java ενυπάρχει σε ένα µεγάλο ποσοστό εφαρµογών που χρησιµοποιούνται παγκοσµίως, όπως είναι οι εφαρµογές σε προσωπικούς υπολογιστές, τα παιχνίδια, οι κινητές συσκευές κ.ά. Στη συνέχεια του κεφαλαίου, παρουσιάζεται ο τρόπος µε τον οποίο µπορεί να χρησιµοποιηθεί η Java ως γλώσσα διαδικτυακού προγραµµατισµού για τη δηµιουργία Servlets, δηλαδή προγραµµάτων που τρέχουν στην πλευρά ενός εξυπηρετητή ιστού ή ενός εξυπηρετητή εφαρµογών (application server), µε σκοπό να εξυπηρετήσουν τα αιτήµατα του πελάτη. 1

3 7.2. Στατικές και δυναµικές ιστοσελίδες Όταν πρωτοξεκίνησε ο παγκόσµιος ιστός, οι περισσότερες σελίδες ήταν στατικές, δηλαδή είχαν προκαθορισµένο περιεχόµενο για όλους τους πελάτες-επισκέπτες της ιστοσελίδας. Το περιεχόµενο αυτό µπορούσε να το αλλάξει µόνο ο διαχειριστής της ιστοσελίδας, µε απευθείας επέµβαση στον κώδικα της HyperText Markup Language (HTML). Πλέον, έχει επικρατήσει ένα νέο είδος ιστοσελίδων, οι δυναµικές. Οι δυναµικές ιστοσελίδες δεν διαθέτουν προκαθορισµένο περιεχόµενο, αλλά αυτό διαµορφώνεται σύµφωνα µε τις παραµέτρους της αίτησης (request) του χρήστη. Έτσι, δίνεται στον πελάτη η δυνατότητα να αλληλεπιδράσει µε την ιστοσελίδα και να τη διαµορφώσει ανάλογα µε τις ανάγκες του, στο βαθµό τον οποίο του προσφέρει ο κατασκευαστής της ιστοσελίδας. Επίσης, ο διαχειριστής µπορεί να διαχειριστεί και να διαµορφώσει την ιστοσελίδα πιο εύκολα. Ένας τρόπος δηµιουργίας δυναµικών ιστοσελίδων αποτελούν τα Java Applets, προγράµµατα που εκτελούνται στην πλευρά του πελάτη. Ο εξυπηρετητής δεν µπορεί να καθορίσει δυναµικά το περιεχόµενο µιας ιστοσελίδας, παρά µόνο να στείλει στατικές ιστοσελίδες, ως απάντηση των αιτήσεων του πελάτη. Γι αυτόν το λόγο, στην πλευρά του εξυπηρετητή χρησιµοποιείται µια βοηθητική εφαρµογή της γλώσσας Java, η οποία αναλαµβάνει την επεξεργασία των παραµέτρων των αιτήσεων και τη δυναµική δηµιουργία περιεχοµένου. Η βοηθητική αυτή εφαρµογή είναι τα Java Servlets, από τις λέξεις «server» και «applet», τα οποία είναι ένα είδος Java Applet που τρέχει στον εξυπηρετητή, αντί για το φυλλοµετρητή. Τα Servlet χρησιµοποιούν µεθόδους του πρωτοκόλλου Hypertext Transfer Protocol (HTTP), δηλαδή του προτύπου επικοινωνίας µεταξύ πελάτη και εξυπηρετητή.[3] Κάθε φορά που ένας εξυπηρετητής λαµβάνει µια αίτηση HTTP, καλεί το αντίστοιχο Servlet που έχει οριστεί να την αναλάβει. Αυτό, µε τη σειρά του, την επεξεργάζεται και επιστρέφει µια απόκριση (response) µε τη µορφή κώδικα HTML. Η σηµαντική διαφορά σε σχέση µε τα σενάρια Common Gateway Interface (CGI) είναι ότι τα τελευταία εκτελούνται στον εξυπηρετητή ιστού, ως ξεχωριστές διαδικασίες, ενώ τα Servlets εκτελούνται από τον εξυπηρετητή. Τα Servlets αναπτύχθηκαν µε στόχο να ξεπεράσουν τις ελλείψεις της τεχνολογίας CGI.[3] Κάθε φορά που ο χρήστης κάνει αίτηση για ένα έγγραφο, ο εξυπηρετητής ιστού µπορεί να εκτελέσει µία από τις εξής τρεις ενέργειες, ανάλογα µε αυτό που διευκρινίζεται στο έγγραφο ότι πρέπει να κάνει: α) να προσκοµίσει το έγγραφο απευθείας από το τοπικό σύστηµα αρχείων, β) να ξεκινήσει ένα πρόγραµµα CGI, που θα δηµιουργήσει ένα έγγραφο, ενδεχοµένως µε τη χρήση δεδοµένων από µια τοπική βάση δεδοµένων, και γ) να διαβιβάσει το αίτηµα σε ένα Servlet. Στη συνέχεια, θα δούµε αναλυτικότερα τη λειτουργία και τον προγραµµατισµό των Java Servlets Java Servlets Το Servlet αποτελεί µια κλάση της γλώσσας προγραµµατισµού Java και ανήκει στην έκδοση της Java για επιχειρήσεις, την Java Enterprise Edition (Java EE). Η πρώτη του έκδοση (1.0) αναπτύχθηκε το 1997 από την εταιρεία Sun Microsystems. Μπορεί να εκτελεστεί σε οποιονδήποτε εξυπηρετητή ιστού στον οποίο έχει ενσωµατωθεί ένας Servlet Container. Χρησιµοποιώντας τα Servlets, µπορεί να συλλεχθεί είσοδος από το χρήστη µέσω διαδικτυακών φορµών, µέσω τρεχουσών εγγραφών από µια βάση δεδοµένων ή µέσω µιας άλλης πηγής, και να δηµιουργηθούν ιστοσελίδες µε δυναµικό τρόπο.[3] Τα Servlets έχουν ορισµένα σηµαντικά χαρακτηριστικά. Ειδικότερα:[4][5] 1. Μπορεί να εκτελεστούν χωρίς αλλαγές σε εξυπηρετητές διαφορετικού τύπου. 2. Δεδοµένου ότι είναι γραµµένα στη γλώσσα Java, έχουν πρόσβαση σε πληθώρα σχετικών βιβλιοθηκών, όπως αυτές των CORBA και RMI, ασφαλείας ή σύνδεσης βάσεων δεδοµένων.

4 3. Με τον προγραµµατισµό CGI σε γλώσσες όπως η Perl, κάθε φορά που µια νέα αίτηση προωθείται από το φυλλοµετρητή του πελάτη, µια νέα διεργασία πρέπει να ξεκινήσει και να τερµατιστεί µε τη λήξη της σύνδεσης, ενώ το αντίστοιχο πρόγραµµα πρέπει να φορτωθεί και να ξεφορτωθεί από τη µνήµη. Αυτό σηµαίνει ότι το φορτίο µπορεί να είναι µεγάλο για τον εξυπηρετητή ιστού. Αντίθετα, τα Servlets δεν απαιτούν κάτι τέτοιο, επειδή είναι εγκατεστηµένα στη µνήµη, δηλαδή παρέχουν καλύτερη απόδοση από την τεχνολογία CGI σε σχέση µε το χρόνο επεξεργασίας και τη χρησιµοποίηση της µνήµης, γιατί εκµεταλλεύονται τα οφέλη των πολλαπλών νηµάτων (multithreading). Με αυτόν τον τρόπο, για κάθε νέα αίτηση, δηµιουργείται ένα νέο νήµα, µια τεχνική ταχύτερη από τη δηµιουργία ενός νέου αντικειµένου για κάθε νέα αίτηση που απαιτεί η τεχνολογία CGI. 4. Μπορούν να διατηρήσουν την κατάστασή τους, δηλαδή να διατηρήσουν κάποιο είδος µνήµης, ανάµεσα στις αιτήσεις που δέχονται. Αυτό σηµαίνει ότι µπορούν να «θυµηθούν» δεδοµένα και λεπτοµέρειες προηγούµενων αιτήσεων. 5. Το αντικειµενοστρεφές µοντέλο της Java βοηθά τον κώδικά της να είναι πιο δοµηµένος σε σχέση µε έναν κώδικα γραµµένο σε άλλες γλώσσες, όπως σε Perl. Πράγµατι, εξετάζοντας προγράµµατα Perl CGI, διαπιστώνουµε συχνά ότι είναι µονοκόµµατα, τεράστια και δυσνόητα. Επίσης, η αντικειµενοστρέφεια δίνει τη δυνατότητα µεγαλύτερης επαναχρησιµοποίησης του κώδικα. 6. Τρέχουν σε κάθε σύστηµα και πλατφόρµα, και η διαδικτυακή εφαρµογή που έχει προγραµµατιστεί µε αυτά µπορεί να εκτελεστεί σε κάθε συνηθισµένο Web Container, όπως είναι οι Tomcat και Glassfish, και σε διάφορα λειτουργικά συστήµατα, όπως τα Windows, Linux, Unix και Mac. 7. Ο container αναλαµβάνει τον κύκλο ζωής τους, και έτσι δεν τίθεται θέµα διαρροών µνήµης, ασφάλειας και διαχείρισης απορριµµάτων. Στην Εικόνα 7.1 φαίνεται η θέση των Servlets σε µια διαδικτυακή εφαρµογή. Εικόνα 7.1 Τα Servlets σε µια διαδικτυακή εφαρµογή.

5 Περιβάλλον ανάπτυξης για Servlet Μέσω του περιβάλλοντος ανάπτυξης (development environment), δηµιουργούµε, δοκιµάζουµε και εκτελούµε τα Servlets. Για τη εκτέλεσή τους, είναι απαραίτητο να υπάρχει εγκατεστηµένο στο µηχάνηµα το Java Development Kit. Επίσης, απαιτείται και ένας Servlet Container. Προτείνονται η λήψη και η εγκατάσταση του Apache Tomcat. 2 [6],[7] 7.4. Τα Servlets αναλυτικά Μπορούµε να πούµε ότι ένα servlet διαθέτει τρία ονόµατα-αναγνωριστικά, µε τα οποία το γνωρίζουν οι διάφορες οντότητες. Το πραγµατικό όνοµα του εξυπηρετητή και το τελευταίο επίπεδο στην ιεραρχία των κλάσεων για την εκτέλεσή του συνιστούν το απόλυτο µονοπάτι του αρχείου ServletName.class, που εµπεριέχει τον κώδικα του Servlet. Το δεύτερο όνοµα του Servlet προκύπτει από το διαχειριστή που το εγκαθιστά στο container. Ο διαχειριστής δίνει ένα µοναδικό αναγνωριστικό, το οποίο είναι γνωστό µόνο στο container. Το τρίτο όνοµα είναι αυτό µε το οποίο το γνωρίζει ο πελάτης, δηλαδή το URL που οδηγεί τελικά στο Servlet Ο κύκλος ζωής ενός Servlet Σε αυτή την υποενότητα αναλύεται ο κύκλος ζωής ενός Servlet, από τη στιγµή που δηµιουργείται µέχρι να διαγραφεί η οντότητά του. Κατά τη δηµιουργία ενός Servlet, ακολουθείται η ιεραρχία κλάσεων που φαίνεται στην Εικόνα 7.2. Στη συνέχεια, αναλύονται οι µέθοδοι του Servlet σε κάθε φάση του κύκλου ζωής του. Εικόνα 7.2 Η ιεραρχία κλάσεων Servlet. Στην πρώτη φάση του κύκλου ζωής του Servlet, ο container δηµιουργεί µια οντότητα (στιγµιότυπο) από το Servlet και ξεκινά τη χρήση της. Σε αυτό το στάδιο χρησιµοποιείται η εξής µέθοδος:[8][9] init(): Καλείται µία φορά, όταν ο container αρχικοποιεί µια οντότητα του Servlet, ή χρησιµοποιείται για τη δηµιουργία αντικειµένων που χρειάζονται στην εξυπηρέτηση των 2

6 αιτήσεων, όπως στη σύνδεση µε µια βάση δεδοµένων. Στον Κώδικα 7.2 φαίνεται η γενική σύνταξη της µεθόδου init(): public void init() throws ServletException { // κώδικας } Κώδικας 7.2. Η µέθοδος init(). Στη φάση της αρχικοποίησης, δηλαδή όταν δίνονται στο Servlet οι απαραίτητες παράµετροι για τη λειτουργία του, χρησιµοποιούνται οι εξής µέθοδοι (βλ. και Εικόνα 7.3): service(): Ελέγχει τη µέθοδο της αίτησης HTTP (GET, POST κτλ.) και, αναλόγως, καλεί την αντίστοιχη µέθοδο του Servlet [doget(), dopost() κτλ.]. Δεν πρέπει να γίνεται υπερφόρτωση της κλάσης HttpServlet. Εικόνα 7.3 Οι µέθοδοι service() και doget(). doget()/dopost(): Οι µέθοδοι αυτές εξάγουν τις πληροφορίες (παραµέτρους) που στέλνει ο πελάτης µέσω των αιτήσεων HTTP και στη συνέχεια επεξεργάζονται τις πληροφορίες, ενώ έχουν και πρόσβαση σε βάσεις δεδοµένων. Επίσης, χρησιµοποιούνται για την κατασκευή της απόκρισης HTTP, την οποία στέλνουν πίσω στον πελάτη. public void doget(httpservletrequest request,httpservletresponse response) throws ServletException, IOException { // κώδικας } Κώδικας 7.3. Η µέθοδος doget(). Στο τέλος, καλείται, για µόνο µία φορά, η µέθοδος destroy(), κατά τη διαγραφή της οντότητας του Servlet, η οποία χρησιµοποιείται για την απελευθέρωση πόρων, όπως για το κλείσιµο µιας σύνδεσης µε µια βάση δεδοµένων. Στην Εικόνα 7.4 φαίνεται ο κύκλος ζωής ενός Servlet, όπως αυτός αναλύθηκε παραπάνω. Παρουσιάζονται η αρχικοποίησή του, η καταστροφή του, καθώς και η κλήση των διαφόρων µεθόδων.

7 Εικόνα 7.4 Ο κύκλος ζωής ενός Servlet Δηµιουργία της απόκρισης HTTP Αφού ένα Servlet επεξεργαστεί την αίτηση του πελάτη, πρέπει να δηµιουργήσει την απόκρισης HTTP (και να τη στείλει στον πελάτη). Για να το κάνει αυτό, χρησιµοποιεί τις µεθόδους του αντικειµένου της κλάσης HttpServletResponse, που είναι παράµετρος της doget()/dopost(). Οι πιο συνηθισµένες µέθοδοι είναι οι εξής:[10] setcontenttype(): Θέτει τον τύπο των δεδοµένων που περιέχει η απόκριση (π.χ. text/html). getwriter(): Δηµιουργεί ένα ρεύµα εξόδου, για να γραφτεί το κείµενο ή ο κώδικας HTML της απόκρισης. Ουσιαστικά, επιστρέφει ένα αντικείµενο PrinterWriter, το οποίο γράφει το κείµενο µε τις µεθόδους print() και println(). PrinterWriter out = response.getwriter(); out.println( <title> welcome!! </title> ); Κώδικας 7.4. Η µέθοδος get.writer(). getoutputstream(): Δηµιουργεί ένα ρεύµα εξόδου, για την εγγραφή µιας σειράς από byte στην απόκριση. Δηλαδή, επιστρέφει ένα αντικείµενο ServletOutputStream, το οποίο γράφει τα byte µε τη µέθοδο write(). ServletOutputStream out = response.getoutputstream(); out.write(abytearray); Κώδικας 7.5. Η µέθοδος get.outputstream Παραδείγµατα Java Servlets Ένα απλό Servlet Ακολουθεί ένα παράδειγµα απλού Servlet, στο οποίο χρησιµοποιούνται οι µέθοδοι που αναλύθηκαν. Το συγκεκριµένο Servlet λαµβάνει µια αίτηση HTTP από τον πελάτη και απαντά µε µια απλή απόκριση, που περιλαµβάνει κώδικα HTML.[11] Στις τρεις πρώτες γραµµές του Servlet, φαίνεται ποιες κλάσεις πρέπει να εισαχθούν απαραίτητα και στη συνέχεια ο ορισµός της κλάσης του Servlet που κληρονοµεί την κλάση

8 HTTPServlet. Να σηµειωθεί ότι, λόγω της κλάσης HTTPServlet, δεν χρειάζεται να υπερφορτωθεί η µέθοδος service(), µια και υλοποιείται στην κλάση γονέας. Στη συνέχεια, στον Κώδικα 7.6, παρουσιάζεται ο ορισµός της doget() (γραµµή 6), η οποία δέχεται δύο ορίσµατα, ένα HttpServletRequest και ένα HttpServletResponse, και δεν επιστρέφει τίποτα, µια και ο τύπος επιστροφής είναι void. 1. import javax.servlet.*; 2. import javax.servlet.http.*; 3. import java.io.*; 4. public class SimpleServlet extends HttpServlet 5. { 6. public void doget (HttpServletRequest request, HttpServletResponse response) 7. throws ServletException, IOException { 8. // Στέλνεται πίσω µια απόκριση HTTP (HTTP response) 9. response.setcontenttype("text/html"); 10. PrintWriter out = response.getwriter(); 11. out.println("<title>a Simple Servlet</title>"); 12. out.println("<big>hello from Simple Servlet! </big>"); 13. } 14. } Κώδικας 7.6. Ένα απλό Servlet. Επίσης, η doget() διαχειρίζεται τις εξαιρέσεις (exception handling) ServletException και IOException (γραµµή 6). Στη συνέχεια, χρησιµοποιεί τη µέθοδο setcontenttype() (γραµµή 9) του HttpServletResponse, για να δηλώσει ότι ο τύπος των δεδοµένων της απάντησης θα είναι κώδικας HTML. Έπειτα, δηλώνει ένα αντικείµενο της κλάσης PrintWriter (γραµµή 10) και χρησιµοποιεί τη µέθοδο println (γραµµές 11 και 12), για να γράψει στο φυλλοµετρητή του πελάτη τον συγκεκριµένο κώδικα HTML, ο οποίος, µε τη σειρά του, θα εµφανίσει ως τίτλο σελίδας το «A Simple Servlet» και ως κείµενο, µε έντονα γράµµατα, το «Hello from Simple Servlet!» Παράδειγµα Servlet για την εµφάνιση στοιχείων από φόρµα Στην συνέχεια δίνεται το παράδειγµα δηµιουργίας ενός Servlet, το οποίο θα κάνει χρήση της µεθόδου GET, για να περαστούν τα στοιχεία µιας φόρµας από τον πελάτη στον εξυπηρετητή.[11] Η µέθοδος GET στέλνει την κωδικοποιηµένη πληροφορία από το χρήστη, µαζί µε την αίτηση για τη σελίδα. Η σελίδα και η κωδικοποιηµένη πληροφορία χωρίζονται µε το χαρακτήρα?, όπως φαίνεται στον Κώδικα 7.7. Για την υλοποίηση του παραδείγµατος, χρησιµοποιήθηκαν τα JDK 8, ο Tomcat 8.0 και το περιβάλλον NetBeans IDE

9 Κώδικας 7.7. Η µέθοδος GET. Η µέθοδος GET δεν πρέπει να χρησιµοποιείται για να µεταφερθούν στον εξυπηρετητή ευαίσθητα δεδοµένα, όπως κωδικοί πρόσβασης, γιατί αυτά φαίνονται στις παραµέτρους του υπερσυνδέσµου. Επίσης, η µέθοδος GET έχει περιορισµό στο πλήθος των χαρακτήρων. Επιτρέπει µέχρι χαρακτήρες σε µια συµβολοσειρά αίτησης. Για να διαβαστούν δεδοµένα από φόρµες µέσω Servlet, χρησιµοποιούνται οι εξής µέθοδοι: getparameter(): Χρησιµοποιείται για τη λήψη της τιµής µιας παραµέτρου που υπάρχει σε µια φόρµα. getparametervalues(): Χρησιµοποιείται εάν η παράµετρος καλείται πολλές φορές και επιστρέφει πολλαπλές τιµές, όπως σε ένα checkbox. getparameternames(): Χρησιµοποιείται όταν χρειάζεται µια πλήρης λίστα των παραµέτρων που υπάρχουν στην τρέχουσα αίτηση. Στο περιβάλλον του Netbeans, όπως φαίνεται στην Εικόνα 7.5, επιλέγουµε αρχικά «File New Project Java Web WebApplication» και µετά «Next». Στο όνοµα της εφαρµογής επιλέγουµε «ServletForm». Εικόνα 7.6 Δηµιουργία Servlet στο NetBeans IDE Στη συνέχεια, επιλέγουµε «Next» και «Finish». Έπειτα, στο χώρο όπου βρίσκονται τα τρέχοντα project, επιλέγουµε το ServletForm, πατάµε δεξί κλικ και µετά «New Servlet». Εικόνα 7.6 Το project ServletForm Δίνουµε για όνοµα το «ServletForm», όπως φαίνεται στην Εικόνα 7.7.

10 Εικόνα 7.7 Δηµιουργία του Servlet. Επιλέγοντας «Νext» στην επόµενη οθόνη που θα εµφανιστεί, µαρκάρουµε το «Add Information to Deployment descriptor» (web.xml), όπως φαίνεται στην Εικόνα 7.8, και κατόπιν επιλέγουµε «Finish». Εικόνα 7.8 Δηµιουργία του Servlet. Στη συνέχεια, διαγράφουµε το περιεχόµενο του αρχείου ServletForm.java που δηµιουργήθηκε και γράφουµε τον Κώδικα // Φόρτωση των απαραίτητων βιβλιοθηκών της Java 2. import java.io.*; 3. import javax.servlet.*; 4. import javax.servlet.http.*; 5. public class ServletForm extends HttpServlet { 6. public void doget(httpservletrequest request, HttpServletResponse response) 7. throws ServletException, IOException 8. { 9. response.setcontenttype("text/html"); 10. PrintWriter out = response.getwriter(); 11. String title = "Reading Data from a Servlet";

11 12. String doctype = "<!DOCTYPE html>\n"; 13. out.println(doctype + "<html>\n" + "<head><title>" + title + "</title></head>\n" "<body bgcolor=\"#ffffff\">\n" "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n" " <li><b>name</b>: " + request.getparameter("name") + "\n" " <li><b>surname</b>: " + request.getparameter("surname") + "\n" "</ul>\n" "</body></html>"); 20. }} Κώδικας 7.8. Το αρχείο ServletForm.java. Τέλος, στο αρχείο index.html που δηµιουργήθηκε διαγράφουµε το περιεχόµενό του και γράφουµε τον Κώδικα <!DOCTYPE html> 2. <body> 3. <form action="servletform" method="get"> 4. Name: <input type="text" name="name"> 5. Surname: <input type="text" name="surname" /> 6. <input type="submit" value="submit" /> 7. </form> 8. </body> 9. </html> Κώδικας 7.9. Το αρχείο index.html. Για την εκτέλεση του προγράµµατος, επιλέγουµε «Run Project» ή F6. Τότε, θα εµφανιστεί στο φυλλοµετρητή η σελίδα που φαίνεται στην Εικόνα 7.9. Εικόνα 7.9 Η σελίδα που εµφανίζεται τρέχοντας το Project Δίνοντας τις τιµές «Test1» και «Test2», για Name και Surname, αντίστοιχα, στην οθόνη εµφανίζεται η σελίδα της Εικόνας Εικόνα 7.10 Η σελίδα που εµφανίζεται αφού υποβληθεί η φόρµα. Παρατηρούµε ότι στην µπάρα διευθύνσεων εµφανίστηκε το URL του Κώδικα 7.10, στον οποίο φαίνονται οι παράµετροι εκτέλεσης της µεθόδου HTTP GET.

12 me=test2 Κώδικας Η διεύθυνση (URL) που φαίνεται στο φυλλοµετρητή Παράδειγµα Servlet για ανάλυση του ονόµατος εξυπηρετητή σε διεύθυνση IP Σε αυτή την ενότητα παρουσιάζεται ένα πρόγραµµα στο οποίο ο χρήστης γράφει ένα όνοµα εξυπηρετητή (Uniform Resource Locator/URL) και το Servlet τού επιστρέφει τη διεύθυνση IP που αντιστοιχεί σε αυτό το όνοµα. Αρχικά, δηµιουργούµε την ιστοσελίδα από την οποία περνά ο πελάτης την παράµετρο (URL) στο Servlet. Ο κώδικας HTML της συγκεκριµένης ιστοσελίδας είναι αυτός που εµφανίζεται στον Κώδικα <!DOCTYPE html> 2. <head> 3. <title>ip Example</title> 4. <meta charset="utf-8"> 5. <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6. </head> 7. <body> 8. <form action="getservletip" method="get"> 9. Host: <input type="text" name="host"> 10. <input type="submit" value="submit" /></form> 11. </body> 12. </html> Κώδικας Η διεύθυνση (URL) που καταχωρείται στο φυλλοµετρητή. Το χαρακτηριστικό action της ετικέτας form καθορίζει ότι, όταν υποβάλλονται τα δεδοµένα από την ιστοσελίδα, θα καλείται το GetServletIP µε τη µέθοδο HTTP POST. Η φόρµα της ιστοσελίδας αποτελείται από ένα πεδίο κειµένου, όπου ο χρήστης θα γράφει το URL για το οποίο ενδιαφέρεται να µάθει τη διεύθυνση IP και πατώντας ένα κουµπί θα υποβάλλει τα δεδοµένα. Ελέγχουµε αυτή την ιστοσελίδα πληκτρολογώντας τη διεύθυνση Έτσι, εµφανίζεται η ιστοσελίδα της Εικόνας Εικόνα 7.11 Η φόρµα υποβολής του ονόµατος του εξυπηρετητή υποδοχής (hostname URL). Το Servlet που θα επιστρέφει τη διεύθυνση IP του URL το οποίο καταχωρεί ο χρήστης, δηλαδή το GetServletIP, παρουσιάζεται στον Κώδικα import java.io.*; 2. import javax.servlet.*; 3. import javax.servlet.http.*; 4. import java.net.*;

13 5. public class GetServletIP extends HttpServlet 6. { 7. public void doget(httpservletrequest request, HttpServletResponse response) 8. throws IOException, ServletException 9. { 10. String name = request.getparameter("host"); 11. try{ 12. InetAddress address = InetAddress.getByName(name); 13. response.setcontenttype("text/html"); 14. PrintWriter out = response.getwriter(); 15. out.println("<html>"); 16. out.println("<head>"); 17. out.println("<title>host Search</title>"); 18. out.println("</head>"); 19. out.println("<body>"); 20. out.println("<h1>"); 21. out.println("the IP address is:" +address.gethostaddress()); 22. out.println("<br>"); 23. out.println("the Host is:" + address.gethostname()); 24. out.println("</h1>"); 25. out.println("</body>"); 26. out.println("</html>"); 27. } 28. catch (UnknownHostException e) 29. { 30. response.setcontenttype("text/html"); 31. PrintWriter out = response.getwriter(); 32. out.println("<html>"); 33. out.println("<head>"); 34. out.println("<title>host Search</title>"); 35. out.println("</head>"); 36. out.println("<body>"); 37. out.println("<h1>"); 38. out.println("this is not a valid host name"); 39. out.println("</h1>"); 40. out.println("</body>"); 41. out.println("</html>"); 42. } 43. } 44. public void dopost(httpservletrequest request, HttpServletResponse response) 45. throws IOException, ServletException 46. { 47. doget(request, response); 48. } 49. } Κώδικας Το GetServletIP Servlet.

14 Στη συνέχεια, παρέχονται επεξηγήσεις στα κυριότερα σηµεία του Κώδικα 7.12: Γραµµή 10: Για να πάρουµε τα δεδοµένα τα οποία έχει υποβάλει ο χρήστης από µια φόρµα, καλούµε τη µέθοδο getparameter του αντικειµένου request και αποθηκεύουµε την τιµή που επιστρέφει στη µεταβλητή name. Γραµµή 12: Δηµιουργούµε τη µεταβλητή address, τύπου InetAddress. Σε αυτήν εκχωρούµε την τιµή που επιστρέφεται από την κλήση της µεθόδου getbyname της κλάσης InetAddress, µε παράµετρο το όνοµα του υποδοχής (hostname) που εισήγαγε ο χρήστης. Η συγκεκριµένη µέθοδος κάνει µια έρευνα Domain Name Resolution (DNS) γι αυτό το όνοµα και το επιστρέφει µαζί µε τη διεύθυνση IP που του αντιστοιχεί. Γραµµή 21: Η µέθοδος gethostaddress επιστρέφει µόνο τη διεύθυνση ΙΡ που εµπεριέχεται στη µεταβλητή address. Αυτή η διεύθυνση εµφανίζεται στην ιστοσελίδα που παράγεται και µετά επιστρέφεται στο φυλλοµετρητή του χρήστη. Γραµµή 23: Η µέθοδος gethostname επιστρέφει µόνο το όνοµα του εξυπηρετητή που εµπεριέχεται στη µεταβλητή address. Γραµµή 28: Η µέθοδος getbynamegebyname επιστρέφει µια εξαίρεση UnknownHostException, αν δεν βρεθεί η διεύθυνση IP του ονόµατος του εξυπηρετητή που καταχώρησε ο χρήστης. Γραµµή 44: Η εκτέλεση του προγράµµατος αρχίζει από τη µέθοδο dopost και όχι από τη µέθοδο doget, αφού χρησιµοποιείται η µέθοδος dopost για την κλήση του Servlet. Η dopost καλεί απλώς την doget, στην οποία περιέχεται όλος ο κώδικας που υλοποιεί τη λειτουργικότητα του Servlet. Με αυτόν τον τρόπο, αν το ίδιο Servlet κληθεί από µια άλλη ιστοσελίδα µε τη µέθοδο doget, θα λειτουργεί µε τον ίδιο ακριβώς τρόπο. Ανοίγουµε την ιστοσελίδα εισάγουµε το όνοµα του εξυπηρετητή, όπως. και πατάµε το κουµπί «Submit». Με το «Submit» καλείται αµέσως το Servlet GetServletIP και επιστρέφεται η ιστοσελίδα της Εικόνας Εικόνα 7.12 Το αποτέλεσµα εκτέλεσης του Servlet GetServletIP. Στην περίπτωση που ο χρήστης εισάγει ένα άκυρο όνοµα εξυπηρετητή, τότε εµφανίζεται η ιστοσελίδα της Εικόνας 7.13.

15 Εικόνα 7.13 Η σελίδα σε περίπτωση µη υπαρκτού URL Παράδειγµα Servlet για αυθεντικοποίηση µέσω σύνδεσης σε βάση δεδοµένων Στη συνέχεια δίνεται ένα παράδειγµα αυθεντικοποίησης (authentication) µέσω µιας φόρµας σύνδεσης (Login) και της χρήσης Servlet. Πρώτα παρουσιάζεται ο Κώδικας 7.13 σε γλώσσα HTML, που δηµιουργεί την ιστοσελίδα στην οποία ο χρήστης τοποθετεί τα στοιχεία του (username και password), για να συνδεθεί.[12] 1. <html> 2. <head> 3. <title>login Page</title> 4. <meta http-equiv="content-type" content="text/html; charset=iso "> 5. </head> 6. <body> 7. <p>enter Username and Password</p> 8. <form name="form1" method="post" action="dbaccess"> 9. <table width="25%" border="1"> 10. <tr> 11. <td width="30%">username:</td> 12. <td width="70%"><input type="text" name="username"></td> 13. </tr> 14. <tr> 15. <td width="30%">password:</td> 16. <td width="70%"><input type="password" name="password"></ td> 17. </tr> 18. </table> 19. <div align="center"></div> 20. <p align="left"> 21. <input type="submit" name="submit" value="login"> 22. </p> 23. </form> 24. <p> </p> 25. </body> 26. </ html > Κώδικας Παράδειγµα σελίδας σύνδεσης. Ο Κώδικας 7.12 είναι ένα παράδειγµα κλασικής υλοποίησης ιστοσελίδας για αυθεντικοποίηση ενός χρήστη µε τη χρήση HTML. Βλέπουµε ότι στον ορισµό της φόρµας καλούµε «action» το DBAccess, το οποίο είναι ένα Servlet που θα πραγµατοποιήσει την

16 πιστοποίηση των στοιχείων τα οποία εισάγει ο χρήστης. Η υλοποίησή του παρουσιάζεται στον Κώδικα Στη γραµµή 8, στην ιστοσελίδα του Κώδικα 7.13, φαίνεται ο ορισµός της Java κλάσης DBAccess, ως «action» της συγκεκριµένης σελίδας HTML. 1. import javax.servlet.*; 2. import javax.servlet.http.*; 3. import java.io.*; 4. import java.util.*; 5. import java.sql.*; 6. public class DBAccess extends HttpServlet { 7. public void init(servletconfig config) throws ServletException { 8. super.init(config); 9. } 10. public void dopost(httpservletrequest request, HttpServletResponse response) 11. throws ServletException, IOException { 12. response.setcontenttype("text/html;charset=iso "); 13. PrintWriter out = response.getwriter(); 14. String username=null; 15. String password=null; 16. String dbusername="root"; 17. String dbpassword="password"; 18. HttpSession session = null; 19. Connection con=null; 20. Statement stmt = null; 21. username = request.getparameter("username"); 22. password = request.getparameter("password"); 23. ServletContext servletcontext = getservletcontext(); 24. try { 25. Class.forName("org.postgresql.Driver"); 26. con=drivermanager.getconnection("jdbc:postgresql:// :5432/etak_final", "etak_user", ""); 27. stmt = con.createstatement(); 28. if (username == null username.length() == 0) { 29. response.sendredirect(request.getcontextpath()+"/index.ht ml"); 30. return; 31. } 32. if (password==null password.length() == 0){ 33. response.sendredirect(request.getcontextpath()+"/index.ht ml");

17 34. return; 35. } 36. String SQL1 ="select * from credentials where (username= '"+username+"' and password ='" + password+"')"; 37. ResultSet rs = stmt.executequery(sql1); 38. if (rs.next()) { 39. session = request.getsession(true); 40. session.setattribute("userid",username); 41. response.sendredirect(request.getcontextpath() +"/dataentry.html "); 42. } 43. else { 44. response.sendredirect(request.getcontextpath() +"/loginerror.html "); 45. } 46. } 47. catch(exception e){ 48. System.out.println("Exception Messsage "+e.getmessage()); 49. e.printstacktrace(); 50. } 51. finally { 52. try { 53. if (stmt!=null) stmt.close(); 54. } 55. catch (SQLException e) { 56. e.printstacktrace(); 57. } 58. finally{ 59. try{ 60. if (con!=null) con.close(); 61. } 62. catch (SQLException ignored) {} 63. } 64. } 65. } 66. } Κώδικας Παράδειγµα Servlet µε αυθεντικοποίηση µέσω βάσης δεδοµένων. Στη συγκεκριµένη κλάση, ορίζονται δύο µέθοδοι, η init() και η service(). Η init() καλεί την προκαθορισµένη συνάρτηση init() της κλάσης HttpServlet, την οποία κληρονοµεί η κλάση DBAccess. Η service() συγκρίνει τα στοιχεία username και password που δίνει ο πελάτης, τα οποία ανακτά από µια βάση δεδοµένων. Με αυτά τα στοιχεία θα επιλέξει πώς θα δράσει αντίστοιχα. Αν ο πελάτης αυθεντικοποιηθεί επιτυχώς, θα τον οδηγήσει στην επόµενη σελίδα της εφαρµογής, ενώ στην αντίθετη περίπτωση, θα του επιστρέψει µια σελίδα λάθους. Παρακάτω αναλύονται µερικά σηµεία του παραπάνω κώδικα: Γραµµή 26: Γίνεται η σύνδεση µε τη βάση δεδοµένων (postgresql). Γραµµές 28 και 32: Ελέγχεται εάν έχουν δοθεί όνοµα χρήστη και κωδικός. Εάν δεν έχουν δοθεί, τότε ο χρήστης µεταφέρεται στην σελίδα index.html.

18 Γραµµή 41: Γίνεται η µεταφορά του χρήστη στην επιθυµητή σελίδα, µετά την επιτυχηµένη αυθεντικοποίηση. Γραµµή 44: Γίνεται η µεταφορά του χρήστη στη σελίδα ενηµέρωσης αποτυχηµένης αυθεντικοποίησης, ύστερα από εισαγωγή λανθασµένων στοιχείων. Έστω ότι οι κώδικες των σελίδων αποτελεσµάτων (index.html, dataentry.html και loginerror.html) είναι οι Κώδικες 7.14, και <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " 2. <html> 3. <head> 4. <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5. <title>insert title here</title> 6. </head> 7. <body> 8. <p>successful login</p> 9. </body> 10. </html> Κώδικας Η σελίδα dataentry.html. 1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " 2. <html> 3. <head> 4. <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5. <title>insert title here</title> 6. </head> 7. <body> 8. <p>index page</p> 9. </body> 10. </html> Κώδικας Η σελίδα index.html. 1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " 2. <html> 3. <head> 4. <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5. <title>insert title here</title> 6. </head> 7. <body> 8. <p>error</p> 9. </body> 10. </html> Κώδικας Η σελίδα loginerror.html. Τρέχοντας αυτή την ενδεικτική εφαρµογή ιστού, λαµβάνουµε τα αποτελέσµατα που εµφανίζονται στις Εικόνες 7.14, 7.15, 7.16 και 7.17.

19 Εικόνα 7.14 Η σελίδα εισόδου δεδοµένων αυθεντικοποίησης. Εικόνα 7.15 Η σελίδα σε περίπτωση που δεν δοθεί όνοµα χρήστη ή κωδικός. Εικόνα 7.16 Η σελίδα σε περίπτωση που δοθεί υπαρκτό όνοµα χρήστη, µε σωστό κωδικό Διαχείριση συνεδριών Εικόνα 7.17 Η σελίδα λάθους. Ένας πελάτης µιας εφαρµογής που βασίζεται σε τεχνολογίες ιστού περνά συνήθως µέσα από µια ακολουθία ιστοσελίδων, όπου υποβάλλει δεδοµένα και λαµβάνει διαφόρων τύπων αποκρίσεις από τον εξυπηρετητή. Η διαδικασία που ακολουθείται µεταξύ πελάτη και εξυπηρετητή για την ανταλλαγή πληροφοριών ονοµάζεται συνεδρία (session). Το θέµα που

20 εγείρεται σε τέτοιου είδους ανταλλαγή πληροφοριών αφορά τον τρόπο µε τον οποίο ο εξυπηρετητής θα αναγνωρίσει ότι όλη αυτή η ακολουθία ιστοσελίδων και αιτήσεων προέρχεται από τον συγκεκριµένο πελάτη. Συνήθως, στην αρχή της σύνδεσής του µε τον εξυπηρετητή, ο πελάτης παίρνει ένα µοναδικό αναγνωριστικό (ID). Αυτό επιτρέπει στον εξυπηρετητή να αναγνωρίζει από ποιον πελάτη έρχεται κάθε φορά η αίτηση, ώστε να επιτρέψει ή να αποτρέψει συγκεκριµένες ενέργειες. Για το σκοπό αυτό, ο πελάτης αποστέλλει σε κάθε αίτησή του και το αναγνωριστικό του. Το πρόγραµµα του Κώδικα 7.18 αρχίζει µια νέα συνεδρία την πρώτη φορά που συνδέεται ο πελάτης µε τον εξυπηρετητή και εκτυπώνει στο φυλλοµετρητή του το αναγνωριστικό που του έχει αποδώσει o εξυπηρετητής για τη συγκεκριµένη συνεδρία. 1. import javax.servlet.*; 2. import javax.servlet.http.*; 3. import java.io.*; 4. public class SessionServlet extends HttpServlet { 5. public void service(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { 6. response.setcontenttype("text/html;charset=iso "); 7. PrintWriter out = response.getwriter(); 8. HttpSession session = null; 9. String user = null; 10. int nof_visits=0; 11. try{ 12. session = request.getsession(false); 13. if (session == null) { // O χρήστης δεν έχει συνδεθεί ή η συνεδρία έληξε 14. out.println("είναι η πρώτη σας επίσκεψη στη σελίδα.<p> "); 15. session = request.getsession(true); 16. session.setattribute("nof_visits","1"); 17. session.setattribute( user, unipi ); 18. out.println("το ID της τρέχουσας συνεδρίας είναι: "+session.getid()+"<p>"); 19. out.println("είστε ο χρήστης: "+(String)session.getAttribute("user")+"<p>"); 20. return; 21. } 22. else{ 23. out.println("δεν είναι η πρώτη σας επίσκεψη στη σελίδα. <p>"); 24. out.println("το ID της τρέχουσας συνεδρίας είναι : "+session.getid()+ "<p>");

21 25. user = (String) session.getattribute("user"); 26. if (user == null!user.equals( unipi ) ) { 27. response.sendredirect(request.getcontextpath()+"/error.ht ml"); 28. return; 29. } 30. nof_visits=integer.parseint((string)session.getattribute( "nof_visits")); 31. nof_visits++; 32. session.setattribute("nof_visits",""+nof_visits); 33. out.println("έχετε επισκεφθεί τη σελίδα"+nof_visits+"φορές"); 34. out.println("είστε ο χρήστης: "+(String)session.getAttribute("user")+"<p>"); 35. return; 36. } 37. } 38. catch(exception e) { 39. System.out.println(e.getMessage()); 40. e.printstacktrace(); 41. } 42. } 43. } Κώδικας Παράδειγµα Servlet µε διαχείριση συνεδριών. Παρακάτω αναλύονται µερικά σηµεία του Κώδικα 7.18: Γραµµή 6: Βλέπουµε την αρχικοποίηση της απόκρισης HTTP και τον ορισµό της, ως απάντηση τύπου κειµένου της κωδικοποίησης iso (ελληνικά). Γραµµή 12: Με την κλήση request.getsession(false), παίρνουµε αναφορά στο αντικείµενο session, προκειµένου να εξετάσουµε στην παρακάτω γραµµή εάν υπάρχει συνεδρία ή όχι. Εάν δεν υπάρχει, τότε είναι η πρώτη µας επίσκεψη στην ιστοσελίδα. Θέτοντας την τιµή της παραµέτρου false, εάν η συνεδρία δεν υπάρχει, τότε συνεχίζει να µην υπάρχει, αφού δεν δηµιουργείται. Γραµµή 15: Με την κλήση request.getsession(true), εάν η συνεδρία δεν υπάρχει, τότε δηµιουργείται. Γραµµη 16: Πλέον έχει γίνει επίσκεψη, οπότε θέτουµε το χαρακτηριστικό (attribute) της συνεδρίας visited σε 1. Γραµµή 17: Στη συνεδρία αποθηκεύεται η τιµή «unipi», για το χαρακτηριστικό user. Γραµµή 18: Επιστρέφεται µε την απόκριση στο φυλλοµετρητή του πελάτη και το αναγνωριστικό της συνεδρίας. Γραµµή 26: Η τιµή του χαρακτηριστικού user της συνεδρίας που αναµένεται είναι unipi. Στην περίπτωση που δεν βρεθεί τέτοια τιµή, γίνεται επιστροφή από το servlet, εµφανίζοντας την σελίδα error.htlm.

22 Σε περίπτωση «τρεξίµατος» του Servlet για πρώτη φορά, εµφανίζεται η σελίδα της Εικόνας Εικόνα 7.18 Η σελίδα σε περίπτωση εισόδου για πρώτη φορά. Σε περίπτωση εκ νέου εισόδου, εµφανίζεται η σελίδα της Εικόνας Εικόνα 7.19 Η σελίδα σε περίπτωση εκ νέου εισόδου. Στην ιστοσελίδα του Κεφαλαίου 7 του παρόντος συγγράµµατος, στον Ελληνικό Συσσωρευτή Ακαδηµαϊκών Ηλεκτρονικών Βιβλίων ( υπάρχει διαθέσιµο το βίντεο µε τίτλο video7.1_servlets, στο οποίο εξηγείται η τεχνολογία των Servlet και δίνονται σχετικά παραδείγµατα Βασικά µειονεκτήµατα των Servlet Τα Java Servlets, παρότι είναι πολύ χρήσιµα σε αρκετές περιπτώσεις διαδικτυακού προγραµµατισµού, παρουσιάζουν µερικά πρακτικά προβλήµατα, που τα καθιστούν, ενδεχοµένως, µη βολικά για τον προγραµµατιστή. Συγκεκριµένα: Οι ιστοσελίδες έχουν εκατοντάδες γραµµές HTML και κώδικα JavaScript. Αυτό καθιστά εξαιρετικά άβολο τον προγραµµατισµό ενός Servlet, γιατί θα πρέπει να χρησιµοποιούνται συνεχώς µέθοδοι out.println(). Είναι πολύ δύσκολη η σχεδίαση της ιστοσελίδας, διότι πρέπει να εµπλακούν αρκετά και διαφορετικά άτοµα. Ο κώδικας HTML γράφεται από το σχεδιαστή ιστοσελίδων (web designer), ενώ ο κώδικας Java από τον προγραµµατιστή. Κάθε φορά που γίνεται αλλαγή στο κοµµάτι της HTML, πρέπει ο κώδικας του Servlet να υφίσταται επαναµεταγλώττιση και ανασύνταξη. Χρειάζεται διαχωρισµός της σχεδίασης της ιστοσελίδας από την υλοποίηση της λογικής. Τα Java Server Pages (JSP), τα οποία µελετώνται στο επόµενο κεφάλαιο, απαντούν στα παραπάνω µειονεκτήµατα των Servlets.[12] Αντί για κώδικα Java µε ενσωµατωµένη HTML, τα JSP ενσωµατώνουν κώδικα Java µέσα σε κώδικα HTML. Αυτό βοηθά στο διαχωρισµό της σχεδίασης από την υλοποίηση της λογικής. Τα Servlet κάνουν την επεξεργασία της αίτησης και τα JSP παίρνουν τα αποτελέσµατα και τα εµφανίζουν. Αυτό

23 αποτρέπει τη συγγραφή δυσανάγνωστου και µακροσκελούς κώδικα, για την εµφάνιση της απόκρισης µέσα από τα Servlet, µε τη χρήση συνεχόµενων out.println(). Βιβλιογραφικές αναφορές [1] «Oracle Technology Network for Java Developers», διαθέσιµο στο (πρόσβαση: ). [2] Ι.Χ. Παναγιωτόπουλος (2003), Διαδικτυακός προγραµµατισµός Java, Σταµούλης, Αθήνα. [3] «Java Servlet Tutorial with Examples for Beginners», διαθέσιµο στο (πρόσβαση: ). [4] «Java Servlet Tutorial The ULTIMATE Guide», διαθέσιµο στο (πρόσβαση: ). [5] «What is a Servlet Container?», διαθέσιµο στο (πρόσβαση: ). [6] «Java Application Servers», διαθέσιµο στο (πρόσβαση: ). [7] «Tomcat Servlet Container», διαθέσιµο στο (πρόσβαση: ). [8] «Java Servlet API Documentation», διαθέσιµο στο (πρόσβαση: ). [9] J. Hunter και W. Crawford (2001), Java Servlet Programming (Java Series), O Reilly. [10] M. Hall και L. Brown (2007), Servlets και σελίδες διακοµιστή Java, Κλειδάριθµος. [11] «Servlets Tutorial», διαθέσιµο στο (πρόσβαση: ). [12] Η. Bergsten (2002), Java Server Pages, O Reilly. Κριτήρια αξιολόγησης Ερώτηση 1 Ποιο από τα παρακάτω δεν εµπεριέχεται σε µια αίτηση HTTP; Α) Δεδοµένα. Β) Πληροφορίες για τον εξυπηρετητή. Γ) Μέθοδος HTTP. Δ) Πληροφορίες για τον πελάτη. Ερώτηση 2 Ποιο από τα παρακάτω δεν εµπεριέχεται σε µια απόκριση HTTP; Α) Πληροφορίες για τον πελάτη. Β) Κωδικός κατάστασης. Γ) Δεδοµένα. Δ) Τύπος δεδοµένων. Ερώτηση 3

24 Με τη µέθοδο POST οι παράµετροι µπαίνουν στο URL και υπάρχει περιορισµός στο µήκος. Α) Σωστό. Β) Λάθος. Ερώτηση 4 Ποιο από τα παρακάτω δεν ισχύει σχετικά µε τις δυναµικές ιστοσελίδες; Α) Ο πελάτης µπορεί να αλληλεπιδράσει µε το περιεχόµενο. Β) Διαθέτουν µη προκαθορισµένο περιεχόµενο. Γ) Το περιεχόµενο προσαρµόζεται ανάλογα µε τις αιτήσεις του πελάτη. Δ) Μόνο ο διαχειριστής µπορεί να αλλάξει το περιεχόµενο. Ερώτηση 5 Ποια από τα παρακάτω ισχύουν για ένα Servlet; Α) Στέλνει µόνο στατικές ιστοσελίδες στον πελάτη. Β) Έχει δυνατότητα καθαρισµού των δυναµικών δεδοµένων. Γ) Χρειάζεται µια βοηθητική εφαρµογή Java, για την επεξεργασία των αιτήσεων. Δ) Είναι ανεξάρτητο από κάποια βοηθητική εφαρµογή. Ερώτηση 6 Ποιο από τα παρακάτω δεν ισχύει για τους Servlet containers; Α) Προωθούν τις αιτήσεις από τον εξυπηρετητή στο Servlet. Β) Ελέγχουν την εκτέλεση του Servlet. Γ) Παρέχουν υπηρεσίες ασφαλείας. Δ) Διαθέτουν ολόκληρη την πλατφόρµα της Java. Ερώτηση 7 Ποια από τα παρακάτω ονόµατα διαθέτει ένα Servlet; Α) Container Name. Β) Relative Name. Γ) Path Name. Δ) URL. Ερώτηση 8 Ποια από τις παρακάτω δεν είναι µια συνήθης µέθοδος ενός HttpServlet; Α) getwriter(). Β) getoutputstream(). Γ) setcontenttype(). Δ) getlastmodified(). Ερώτηση 9 Η µέθοδος getoutputstream() επιστρέφει ένα αντικείµενο PrinterWriter. Α) Σωστό. Β) Λάθος. Ερώτηση 10 Για το κλείσιµο της σύνδεσης µε µια βάση δεδοµένων, ποια µέθοδο των Servlet µπορούµε να χρησιµοποιήσουµε; Α) service(). Β) init(). Γ) destroy(). Δ) dopost(). Ερώτηση 11 Τα σενάρια CGI υπερτερούν των Servlet. Α) Σωστό.

25 Β) Λάθος. Ερώτηση 12 Ποιο είναι το µειονέκτηµα των Servlets; A) Δεν διαχωρίζουν τη σχεδίαση της ιστοσελίδας από την υλοποίηση της λογικής της εφαρµογής. Β) Χρησιµοποιούνται µαζί µε τα νήµατα. Γ) Χρησιµοποιούνται για αυθεντικοποίηση. Δ) Τρέχουν σε κάθε πλατφόρµα. Ερώτηση 13 Για να διαβάσουν την επικεφαλίδα του HTTP, ποια από τα παρακάτω χρησιµοποιούν τα Servlets; Α) HTTP.header. Β) HttpServletResponse. Γ) import javax.servlet.http.*;. Δ) HttpServletRequest.getHeaderName();. Ερώτηση 14 Για να εξεταστεί αν υπάρχει ενεργή συνεδρία και να δηµιουργηθεί, εάν δεν υπάρχει, ποια από τις παρακάτω µεθόδους καλείται; Α) request.getsession(). Β) active.getsession(). Γ) request.getsession(true). Δ) active.getsession(true). Ερώτηση 15 Ποια από τις παρακάτω προτάσεις είναι σωστές; Α) Όταν γίνεται αλλαγή στον κώδικα τηςhtml, το Servlet δεν χρειάζεται επαναµεταγλώττιση. Β) Tα JSP ενσωµατώνουν κώδικα Java µέσα σε κώδικα HTML. Γ) Για τα Servlets, δεν χρειάζεται διαχωρισµός της σχεδίασης της ιστοσελίδας από την υλοποίηση της λογικής. Δ) Τα JSP δεν υπερτερούν των Servlets στη σχεδίαση µιας ιστοσελίδας. Κεφάλαιο 7 1. Β 2. Α 3. Β 4. Δ 5. Α και Γ 6. Δ 7. Α, Γ και Δ 8. Δ 9. Β 10. Γ 11. Β 12. A 13. Γ και Δ 14. Γ 15. B

Περιγραφή της εργασίας

Περιγραφή της εργασίας Προγραμματισμός Internet Εξάμηνο: Χειμερινό 2006-2007 Εργασία Εργαστηρίου Δευτέρα 11 Δεκ. 2006 Περιγραφή της εργασίας Μία εταιρία ηλεκτρονικού εμπορίου εμπορεύεται βιβλία πληροφορικής μέσω διαδικτύου.

Διαβάστε περισσότερα

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP)

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP) Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP) Τι είναι τα JSP ; Σελίδες Εξυπηρετητή σε Java Μέθοδος δημιουργίας δυναμικών σελίδων (σε HTML ή XML) Το κύριο έγγραφο είναι γραμμένο σε HTML

Διαβάστε περισσότερα

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τρίτη, 22 Μαΐου, 2007 Αίθουσα ΑΠ7 Μελετάµε ένα κατανεµηµένο σύστηµα για την

Διαβάστε περισσότερα

Java Servlets: Principles and Programming 1/19

Java Servlets: Principles and Programming 1/19 Java Servlets: Principles and Programming 1/19 Περιεχόµενα Εισαγωγή Πλεονεκτήµατα των Servlet έναντι CGI Αρχιτεκτονική Servlet Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes (SSI) Java

Διαβάστε περισσότερα

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition Κακαρόντζας Γεώργιος Μεθοδολογία Θα υλοποιήσουμε την λεγόμενη πιστοποίηση μέσω φόρμας στοιχείων εισόδου (form-based authentication)

Διαβάστε περισσότερα

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα NetBeans και σχετικά προγράμματα Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα Ατζέντα Εγκατάσταση προγραμμάτων Java NetBeans MySQL Δημιουργία απλής εφαρμογής διαδικτύου

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ:

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ: Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL Γιαννέλος Γιάννης ΑΜ:03108088 Μαρινέλλης Γιώργος ΑΜ:03108680 18 Μαΐου 2012 Εισαγωγή Το αντικείμενο της άσκησης είναι η χρήση της τεχνολογίας

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP) Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP) Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών

Διαβάστε περισσότερα

Διαδικτυακές Εφαρμογές Ενότητα 5: Servlets και JSPs

Διαδικτυακές Εφαρμογές Ενότητα 5: Servlets και JSPs Διαδικτυακές Εφαρμογές Ενότητα 5: Servlets και JSPs Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος Java & Java EE 1o Μέρος: Servlets και Java Server Pages Κακαρόντζας Γεώργιος Διάκριση μεταξύ Web και πλήρους προφίλ Στη Java EE υπάρχει η διάκριση μεταξύ web προφίλ και πλήρους προφίλ. Το Web προφίλ περιλαμβάνει

Διαβάστε περισσότερα

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP Τεχνολογίες Διαδικτύου Server Side Scripting I PHP Εισαγωγή PHP PHP:Hypertext Preprocessor Mηχανή που συνοδεύει web servers όπως ο IIS και ο Apache Η PHP είναι γλώσσα προγραμματισμού για web εφαρμογές

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήρια Δευτέρα 18:00-20:00,Τρίτη

Διαβάστε περισσότερα

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol HTTP Protocol Web and HTTP Βασικά Συστατικά: Web Server Web Browser HTTP Protocol Web Servers (1/2) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

Διαβάστε περισσότερα

Γενικά (για τις γραπτές εξετάσεις)

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

Cloud Computing Database with Amazon SimpleDB

Cloud Computing Database with Amazon SimpleDB Cloud Computing Database with Amazon SimpleDB Σύνολο από virtual online servers Δέχονται requests από χρήστες Προσφέρουν σειρά από υπηρεσίες Οι χρήστες δεν χρειάζεται να έχουν την γνώση, την εμπειρία και

Διαβάστε περισσότερα

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version 1. Ξεκινώντας Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να περιγράψετε τα κύρια χαρακτηριστικά της γλώσσας Java Να περιγράψετε τη Java Virtual Machine Να περιγράψετε πώς λειτουργεί ο μηχανισμός «συλλογής

Διαβάστε περισσότερα

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. Εργαλεία του JDK Β.1 Εργαλεία του JDK Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω. O µεταγλωττιστής (compiler) της Java javac. O διερµηνευτής (interpreter) της Java java. Το υπεύθυνο εργαλείο για

Διαβάστε περισσότερα

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που 1 Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Τεχνικός Εφαρμογών Πληροφορικής

Τεχνικός Εφαρμογών Πληροφορικής Τεχνικός Εφαρμογών Πληροφορικής ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΙΣΑΓΩΓΗ Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Περιεχόμενα 1.Τι είναι η Php; 2.Πως γίνετε η γραφή

Διαβάστε περισσότερα

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Servlet

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Servlet Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Servlet Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Βασικές Έννοιες Web Εφαρμογών

Βασικές Έννοιες Web Εφαρμογών ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Τεχνολογίες και Εφαρμογές Διαδικτύου Βασικές Έννοιες Web Εφαρμογών Κατερίνα Πραματάρη Τεχνολογίες και Εφαρμογές Διαδικτύου Περιεχόμενα

Διαβάστε περισσότερα

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Εισαγωγή-Σκοπός. Τρόποι δημιουργίας δυναμικών ιστοσελίδων. Dynamic Web Pages. Dynamic Web Page Development Using Dreamweaver. Τρόποι δημιουργίας δυναμικών

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ 2014 2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ H HTML είναι μία γλώσσα σήμανσης και αποτελεί την κύρια γλώσσα δημιουργίας ιστοσελίδων του διαδικτύου. Είναι το ακρωνύμιο των λέξεων HyperText

Διαβάστε περισσότερα

Java Servlets. Εισαγωγή. Σταύρος Πολυβίου

Java Servlets. Εισαγωγή. Σταύρος Πολυβίου Java Servlets Σταύρος Πολυβίου Εισαγωγή Ένας από τους πρώτους τρόπους δηµιουργίας δυναµικών σελίδων είναι το Common Gateway Interface (CGI). Ο web server καλεί προγράµµατα τα οποία εκτελούνται στον εξυπηρετητή

Διαβάστε περισσότερα

Τα βασικά για Servlet

Τα βασικά για Servlet Τα βασικά για Servlet 1 Αναφορές Ηπαρουσίαση βασίστηκε Σε διαφάνειες και παραδείγματα από το τμήμα Servlet του Java WSDP από τον Stephanie Bodoff της Sun Microsystems Σε διαφάνειες από το τμήμα Sevlet

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ Web Services

ΚΕΦΑΛΑΙΟ Web Services ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή

Διαβάστε περισσότερα

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

Διαβάστε περισσότερα

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

Διαβάστε περισσότερα

Δημιουργία μιας εφαρμογής Java με το NetBeans

Δημιουργία μιας εφαρμογής Java με το NetBeans Δημιουργία μιας εφαρμογής Java με το NetBeans Για να δημιουργήσετε μια εφαρμογή Java πρέπει να ακολουθήσετε τα εξής βήματα : Αρχικά πρέπει να δημιουργηθεί ένα project το οποίο θα περιέχει όλα τα αρχεία

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

Διαβάστε περισσότερα

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 13 Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 1.1 Εισαγωγή... 16 1.2 Διαδίκτυο και Παγκόσμιος Ιστός Ιστορική αναδρομή... 17 1.3 Αρχές πληροφοριακών συστημάτων

Διαβάστε περισσότερα

Πτυχιακή εργασία. Ανάπτυξη παιχνιδιού πολλών παικτών

Πτυχιακή εργασία. Ανάπτυξη παιχνιδιού πολλών παικτών Τεχνολογικό Εκπαιδευτικό Ίδρυµα Κρήτης Σχολή Τεχνολογικών Εφαρµογών Τµήµα Εφαρµοσµένης Πληροφορικής και Πολυµέσων Πτυχιακή εργασία Ανάπτυξη παιχνιδιού πολλών παικτών Τζεδάκης Χαράλαµπος (Α.Μ. 1658) Ροδινός

Διαβάστε περισσότερα

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP Εργαστήριο 6 Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Στόχος Στόχος του εργαστηρίου είναι η εισαγωγή στην γλώσσα PHP και η εξοικείωση των φοιτητών στην χρήση του Web Server για την εξυπηρέτηση σελίδων

Διαβάστε περισσότερα

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol)

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol) Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας-Βιβλιοθηκονοµίας Κέρκυρα ίκτυα - Internet 2 Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) ΜηχανέςΑναζήτησηςστοWeb Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία

Διαβάστε περισσότερα

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

Διαβάστε περισσότερα

Διαδικτυακές Εφαρμογές Ενότητα 6: Servlets και JSPs (Παραδείγματα)

Διαδικτυακές Εφαρμογές Ενότητα 6: Servlets και JSPs (Παραδείγματα) Διαδικτυακές Εφαρμογές Ενότητα 6: Servlets και JSPs (Παραδείγματα) Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Remote Method Invocation (RMI) Εισαγωγή Η αποµακρυσµένη επίκληση µεθόδων (RMI), επιτρέπει σε

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 1 ΠΕΡΙΕΧΟΜΕΝΑ Πρωτόκολο http εντολών έκδοση 1.0 Σελ:2...περιεχόμενα Σελ:3...τι θα βρείτε σε αυτό το βιβλίο Σελ:3...γενικά τεχνικά χαρακτηριστικά Σελ:4-5...πως

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... xiii

Περιεχόμενα. Πρόλογος... xiii Περιεχόμενα Πρόλογος... xiii Κεφάλαιο 1 ο Εισαγωγή στις τεχνολογίες Διαδικτύου... 1 1.1 Σύντομη ιστορία του Διαδικτύου... 3 1.2 Σύνδεση στο Διαδίκτυο μέσω Παρόχου (ISP)... 6 1.3 Μοντέλα Επικοινωνίας...

Διαβάστε περισσότερα

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες Συλλογή και Επεξεργασία Δεδομένων με Φόρμες Οι φόρμες αποτελούν τον πιο δημοφιλή τρόπο για τη συλλογή δεδομένων μέσω του World Wide Web (WWW). Επιτρέπουν στους χρήστες να επικοινωνούν με τη βοήθεια του

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Εφαρµογές διαδικτύου µε PHP

Εφαρµογές διαδικτύου µε PHP Εφαρµογές διαδικτύου µε PHP Σταύρος Πολυβίου Αρχιτεκτονική τριών επιπέδων (three-tier architecture) SQL HTTP request Αποτελέσµατα (πίνακες) PHP HTML Σύστηµα διαχείρισης δεδοµένων (Database Management System)

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Π17: Μορφοσυντακτικός και Σηµασιολογικός Σχολιαστής (λογισµικό)

Π17: Μορφοσυντακτικός και Σηµασιολογικός Σχολιαστής (λογισµικό) ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΠΡΑΞΗ «ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΩΝ, ΗΧΟΥ ΚΑΙ ΓΛΩΣΣΑΣ» στο πλαίσιο του ΜΕΤΡΟΥ 3.3 «Έρευνα και Τεχνολογική Ανάπτυξη στην Κοινωνία της Πληροφορίας» ΕΡΓΟ - 9: ΙΑΤΡΟΛΕΞΗ

Διαβάστε περισσότερα

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

HelloApplet. Παύλος Εφραιμίδης Java Applets 1 HelloApplet Παύλος Εφραιμίδης pefraimi@ee.duth.gr Java Applets 1 Applets Τα Applets είναι προγράμματα Java που μπορούν να εκτελεστούν μέσα στο περιβάλλον ενός Browser (Firefox, Internet Explorer, Netscape,

Διαβάστε περισσότερα

Βιοϊατρική τεχνολογία

Βιοϊατρική τεχνολογία Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Βιοϊατρική τεχνολογία Ενότητα 5: Οξύμετρο (OxyPro Project) Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr ΕΕΔΙΠ Μπέλλου Σοφία e-mail: sbellou@uowm.gr

Διαβάστε περισσότερα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Γαβαλάς Δαμιανός dgavalas@aegean.gr Στόχοι

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης 14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Στόχοι εργαστηρίου Εξοικείωση με τις βασικές

Διαβάστε περισσότερα

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

Διαβάστε περισσότερα

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο

Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο Δρ. Χρήστος Όροβας Τεχνικός Υπεύθυνος 1 Διαδικασία «Φόρτωσης» μιας Ιστοσελίδας Internet Explorer, Mozilla, Chrome, κτλ HTTP Server ΠΣΔ Αίτημα για επικοινωνία

Διαβάστε περισσότερα

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 6 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

Java & Java EE 2o Μέρος: Διασφάλιση ευκολίας τροποποίησης με το πρότυπο MVC (Model View Controller) Κακαρόντζας Γεώργιος

Java & Java EE 2o Μέρος: Διασφάλιση ευκολίας τροποποίησης με το πρότυπο MVC (Model View Controller) Κακαρόντζας Γεώργιος Java & Java EE 2o Μέρος: Διασφάλιση ευκολίας τροποποίησης με το πρότυπο MVC (Model View Controller) Κακαρόντζας Γεώργιος Model-View-Controller (MVC) Όπως αναφέραμε ήδη σε εφαρμογές JEE οι JSPs χρησιμοποιούνται

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών

Διαβάστε περισσότερα

6. Εξαιρέσεις στη γλώσσα Java

6. Εξαιρέσεις στη γλώσσα Java 6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ Αρχιτεκτονική προηγµένων web εφαρµογών Σαράντης Πασκαλής Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών 1 Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 18 Οκτωβρίου 2006 Η εργασία είχε σαν στόχο να δημιουργηθεί ένα κατανεμημένο σύστημα ελέγχου συσκευών μιας κουζίνας.συγκεκριμένα

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

Διαβάστε περισσότερα

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

Διαβάστε περισσότερα

/software/web_tools/webapps/speller/.

/software/web_tools/webapps/speller/. ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΠΡΑΞΗ «ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΩΝ, ΗΧΟΥ ΚΑΙ ΓΛΩΣΣΑΣ» στο πλαίσιο του ΜΕΤΡΟΥ 3.3 «Έρευνα και Τεχνολογική Ανάπτυξη στην Κοινωνία της Πληροφορίας» ΕΡΓΟ - 9: ΙΑΤΡΟΛΕΞΗ

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

6.2 Υπηρεσίες Διαδικτύου

6.2 Υπηρεσίες Διαδικτύου 6.2 Υπηρεσίες Διαδικτύου 1 / 34 Όλες οι υπηρεσίες στο Διαδίκτυο, όπως και πολλές εφαρμογές λογισμικού, στηρίζονται στο μοντέλο Πελάτη Εξυπηρετητή. 2 / 34 Σύμφωνα με αυτό το μοντέλο ο Εξυπηρετητής οργανώνει,

Διαβάστε περισσότερα

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

Διαβάστε περισσότερα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 1: Εισαγωγή Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα