• Nenhum resultado encontrado

Ανάπτυξη Web εφαρμογών με Java Servlets

N/A
N/A
Protected

Academic year: 2023

Share "Ανάπτυξη Web εφαρμογών με Java Servlets"

Copied!
109
0
0

Texto

(1)

Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ

ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ

ΑΝΑΠΤΥΞΗ WEB ΕΦΑΡΜΟΓΩΝ ΜΕ JAVA SERVLETS

Μαριάννα Καραμάνη

ΦΕΒΡΟΥΑΡΙΟΣ 2009

ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Παπαδημητρίου Αστέριος

Εκπονηθείσα πτυχιακή εργασία απαραίτητη για την κτήση του βασικού πτυχίου

(2)

Πρόλογος

Αντικείμενο της παρούσας εργασίας είναι η διεπαφή του χρήστη με το Διαδύκτιο και κυρίως η ανάπτυξη διαδυκτιακών εφαρμογών με χρήση Java Servlets. Γίνεται αναλυτική παρουσίαση της τεχνολογίας και της αρχιτεκτονικής Servlet, των οποίων η κατανόηση είναι σημαντική για όσους ενδιαφέρονται για τον προγραμματισμό των Servlets. Εισχωρεί στο εσωτερικό τους για να δείξει τα στοιχεία του περιβάλλοντος τους και την διαμόρφωσή τους. Παρουσιάζει επίσης τις τάξεις, τα interfaces, τα πακέτα και τα χαρακτιριστικά τους που είναι σημαντικά για τον προγραμματισμό Servlet.

(3)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

Περιεχόμενα

Πρόλογος...2

Περιεχόμενα...3

1. Εισαγωγή...6

1.1 Τισυμβαίνειστηβιομηχανία... 7

1.2 Το Πρωτόκολλο Μεταφοράς Υπερκειμένου (Hypertext Transfer Protocol-HTTP)... 9

1.2.1 HTTP Αιτήσεις...10

1.2.2 Μέθοδοι HTTP αίτησης... 12

1.2.3 HTTP Απαντήσεις... 13

1.3 Αρχιτεκτονική Συστήματος... 14

1.3.1 Η Αρχιτεκτονική Two-Tier (δύο βαθμίδων)... 15

1.3.2 Η Αρχιτεκτονική Three-Tier (τριών βαθμίδων)... 17

1.3.3 Η Αρχιτεκτονική n-Tier...17

1.4 Java 2, Enterprise Edition (J2EE)...18

1.5 Αναπτύσσοντας Διαδικτυακές Εφαρμογές με Java... 18

2. Η Τεχνολογία Servlet... 20

2.1 Τα Πλεονεκτήματα των Servlets...21

2.2 Αρχιτεκτονική Servlet εφαρμογών... 24

2.3 Πως δουλεύει ένας Servlet... 26

2.4 Ο Tomcat Servlet Container... 27

2.5 Έξι Βήματα για να Τρέξετε τον Πρώτο σας Servlet... 29

2.5.1 Βήμα 1: Δημιουργήστε μια δομή καταλόγου κάτω απ’ τον Tomcat...29

2.5.2 Βήμα 2: Γράψτε τον πηγαίο κώδικα του servlet... 30

2.5.3 Βήμα 3: Μεταγλωττίστε τον πηγαίο κώδικά σας...31

2.5.4 Βήμα 4: Δημιουργήστε έναν deployment descriptor... 32

2.5.5 Βήμα 5: Τρέξτε τον Tomcat... 34

2.5.6 Βήμα 6: Καλέστε τον servlet σας από έναν web browser... 34

2.6 Σύνοψη...35

3. Μέσα στους Servlets... 36

3.1 Το Πακέτο javax.servlet...37

Σελίδα 3 από 109

(4)

3.2 Κύκλος Ζωής Ενός Servlet... 38

3.2.1 Η Μέθοδος init()...39

3.2.2 Η Μέθοδος service()...39

3.2.3 Η Μέθοδος destroy()...40

3.2.4 Επίδειξη του Κύκλου Ζωής ενός Servlet... 41

3.3 Απόκτηση Πληροφοριών Διαμόρφωσης... 44

3.4 Διατήρηση του ServletConfig... 47

3.5 Το Πλαίσιο Servlet... 49

3.6 Μοίρασμα Πληροφοριών Μεταξύ των Servlets... 52

3.7 Αιτήσεις και Απαντήσεις...55

3.7.1 Το ServletRequest Interface... 56

3.7.2 Το ServletResponse Interface... 58

3.8 Η Τάξη Συσκευαστής GenericServlet...61

3.9 Δημιουργία Thread-Safe Servlets... 63

3.10 Σύνοψη... 71

4. Εγγραφή Servlet Εφαρμογών... 72

4.1 Η HttpServlet Class... 73

4.2 Το HttpServletRequest Interface... 76

4.2.1 Απόκτηση Http Request Headers από Το HttpServletRequest...77

4.2.2 Απόκτηση του Query String Από Το HttpServletRequest...79

4.2.3 Απόκτηση Των Παραμέτρων Από Το HttpServletRequest....80

4.2.4 Χειρισμός Πολλαπλών Παραμετρικών Τιμών...82

4.3 HttpServletResponse... 85

4.4 Αποστολή Λάθος Κώδικα... 88

4.5 Αποστολή Ειδικών Χαρακτήρων... 88

4.6 Αποθήκευση Της Απάντησης... 93

4.7 Συγκέντρωση Των Στοιχείων HTML...93

4.8 Αποστολή Αίτησης... 95

4.8.1 Συμπεριλαμβάνοντας Άλλους Πόρους... 100

4.8.1.1 Συμπερίληψη Στατικού Περιεχομένου...101

4.8.1.2 Συμπερίληψη Άλλου Servlet...102

(5)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

4.8.2 Προώθηση Ελέγχου Επεξεργασίας...104 4.9 Σύνοψη... 108 Βιβλιογραφία... 109

Σελίδα 5 από 109

(6)

1. Εισαγωγή

Το Internet είναι ακόμη νέο και ευάλωτο. Επομένως, η ιστορία του δεν είναι και μεγάλη. Το δίκτυο ξεκίνησε όταν τα πάντα ήταν απλά στατικές σελίδες. E ^ πολύ πιθανό να ζήσατε την εποχή όπου ένας ιστοχώρος δεν ήταν τίποτε περισσότερο από HTML σελίδες. Τις πρώτες μέρες, ένας ιστοχώρος είχε το πολύ μια σελίδα και τις περισσότερες φορές αυτή λεγόταν Αρχική.

Οι όροι «εφαρμογή Διαδικτύου» ή «δικτυακή εφαρμογή» πλάστηκαν όταν εμφανίστηκε το δυναμικό περιεχόμενο. Σε χαλαρή μετάφραση, μια δικτυακή εφαρμογή είναι ένας δικτυακός χώρος του οποίου τα δεδομένα δημιουργούνται δυναμικά πριν αποσταλούν στον φυλλομετρητή. Πρέπει πρώτα να κατανοήσετε πως λειτουργεί το Διαδίκτυο πριν μάθετε πως λειτουργεί μια διαδικτυακή εφαρμογή.

Όταν σερφάρετε στο Διαδίκτυο, βασικά ζητάτε ένα συγκεκριμένο αρχείο που βρίσκετε σε ένα συγκεκριμένο υπολογιστή σε μια τοποθεσία που καθορίζετε με τον Ενοποιημένο Εντοπιστή Πόρων (URL - Uniform Resource Locator). Ο υπολογιστής στον οποίο το αρχείο είναι αποθηκευμένο ονομάζεται διακομιστής διαδικτύου (web server). Η κύρια λειτουργία αυτού του υπολογιστή είναι να εξυπηρετεί οποιονδήποτε στο Internet ο οποίος ζητάει τα αρχεία που φιλοξενεί. Επειδή ποτέ δεν ξέρεις πότε κάποιος χρήστης θα επισκεφτεί και θα χρησιμοποιήσει τη δικτυακή εφαρμογή σου, ο web server πρέπει να λειτουργεί συνέχεια.

Όταν κάνετε κλικ ή πληκτρολογείτε μια διεύθυνση URL στο πλαίσιο εισαγωγής διεύθυνσης του φυλλομετρητή σας, συμβαίνουν τα παρακάτω:

- Ο φυλλομετρητής - πελάτης εγκαθιστά μια σύνδεση TCP/IP με το διακομιστή.

- Ο φυλλομετρητής στέλνει μια αίτηση στο διακομιστή.

(7)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

- Ο διακομιστής (server) στέλνει μια απάντηση στον πελάτη.

- Ο διακομιστής κλείνει τη σύνδεση.

Σημειώστε πως αφού στείλει την ζητούμενη σελίδα στον φυλλομετρητή, ο διακομιστής πάντα κλείνει τη σύνδεση, είτε ο χρήστης ζητήσει άλλες σελίδες από το server είτε όχι.

1.1 Τι συμβαίνει στη βιομηχανία

Από την εμφάνιση του Internet, οι δικτυακές τεχνολογίες γίνονται ολοένα και πιο σημαντικές και οι δικτυακές εφαρμογές ολοένα και πιο συχνές. Η χρήση ενός φυλλομετρητή διαδικτύου δεν περιορίζεται πια σε περιήγηση στατικών σελίδων στο Internet. Είναι πια πολύ συνηθισμένο να βλέπουμε ένα φυλλομετρητή διαδικτύου να χρησιμοποιείται ως εφαρμογή - πελάτης.

Αυτό σημαίνει πως, κάποιοι άνθρωποι πιστεύουν ότι όποιος ελέγχει το Internet, ελέγχει και το μέλλον των υπολογισμών ή ακόμη και το ίδιο το μέλλον. Τουλάχιστον, αυτό αποδεικνύεται από τις αγωνιώδεις προσπάθειες ορισμένων εταιρειών να κυριαρχήσουν στην αγορά φυλλομετρητών διαδικτύου στα τέλη του 1990. Ίσως το καλύτερο παράδειγμα, η Microsoft Corporation - που εξακολουθεί να είναι ο μεγαλύτερος παίχτης στην παραγωγή λογισμικού μέχρι και σήμερα - κατάλαβε ότι ήταν σημαντικό να χρησιμοποιεί ο καθένας στον πλανήτη το δικό του Internet Explorer. Αυτός είναι ο λόγος για τον οποίο χρησιμοποίησε τη συντριπτική της δύναμη σε τεχνολογία λογισμικού ώστε να δημιουργήσει τον γρηγορότερο και εξυπνότερο φυλλομετρητή που υπήρξε ποτέ και να τον διανείμει δωρεάν. Με την πτώση της Netscape, η Microsoft είχε κερδίσει τη μάχη των φυλλομετρητών. Μέσα στα επόμενα πέντε χρόνια, είναι ακόμη δύσκολο να φανταστούμε πως ένας φυλλομετρητής θα μπορούσε να ξεπεράσει την δημοτικότητα του Internet Explorer.

Σελίδα 7 από 109

(8)

Παρόλα αυτά, από τη μεριά του server, είναι μια διαφορετική ιστορία. Ο πόλεμος απέχει πολύ από το τέλος του. Η Microsoft δεν μπορεί να προωθήσει την τεχνολογία server της τόσο εύκολα όσο όταν ανάγκασε τη Netscape να τα παρατήσει. Στην πραγματικότητα, η πιο διαδεδομένη τεχνολογία server είναι η Java. Και για να είμαστε ακριβείς, η Java 2, Enterprise Edition (J2EE) της Sun Microsystems. Η Microsoft ακόμη προσπαθεί να προλάβει με την ανάπτυξη της .ΝΕΤ τεχνολογίας που αντικαθιστά τις προηγούμενες Κατανεμημένες Διαδικτυακές Εφαρμογές (Distributed internet Applications - DNA) που ήταν μια πλατφόρμα για ανάπτυξη επιχειρηματικών εφαρμογών. Με την έκδοσή του στις αρχές του 2002, το .NET θα συγκρουστεί μετωπικά με την J2EE. Στα επόμενα χρόνια θα βλέπουμε το .NET και τη J2EE σαν δύο ανταγωνιστικές τεχνολογίες server. Αυτή τη στιγμή, είναι πολύ πρώιμο να προβλέψουμε ποιος θα αποδειχτεί νικητής.

Στρατηγικά σκεφτόμενη, η Microsoft ακολουθεί μια εντελώς διαφορετική προσέγγιση από τη Sun, στην προσπάθειά της να κερδίσει. Η Microsoft προσφέρει τη λύση ενός μοναδικού προμηθευτή, πουλώντας από το λειτουργικό σύστημα μέχρι και το διακομιστή βάσης δεδομένων. Η J2EE, από την άλλη μεριά, υποστηρίζεται από ολόκληρη τη βιομηχανία. (Για μια λίστα των προμηθευτών που παρέχουν servers συμβατούς με J2EE, δείτε το παράρτημα G, «Σχετικές Πηγές»). Αναλυτές έχουν προσπαθήσει να συγκρίνουν τα .NET και J2EE σε πολλά τεχνικά έγγραφα δημοσιευμένα στο Διαδίκτυο. Δυστυχώς, τα συμπεράσματα ποικίλουν πάρα πολύ. Για να βρείτε περισσότερες πληροφορίες σχετικά με τη σύγκριση του .NET με τη J2EE, μπορείτε να συμβουλευτείτε τα ακόλουθα άρθρα, τα οποία είναι διαθέσιμα στο Διαδίκτυο:

-I- Microsoft .NET vs. J2EE: How Do They Stack Up?, http://iava.oreillv.com/news/farlev 0800.html

-I- Java 2 Enterprise Edition (J2EE) versus The .NET Platform: Two Visions for eBusiness,

(9)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

http://www.objectwatch.com/FinalJ2EEand DotNet.doc -I- J2EE vs. Microsoft.NET: A Comparison of Building XML-

Based Web Services,

http://www.theserverside.com/resources/article.isp?1=J2E E-vs-DOTNE

-I- Compare Microsoft .NET to J2EE Technology, http://msdn.microsoft.com/net/compare/default.asp

Σ’ αυτό το σημείο, πρέπει να έχετε την γενική εικόνα του τι συμβαίνει στη βιομηχανία. Μπορείτε να βρείτε περισσότερα σχετικά με το .NET στο http://msdn.microsoft.com.

Επίσης σημειώστε ότι ο όρος Web Server μπορεί να χρησιμοποιηθεί για να αναφερθούμε στο πακέτο λογισμικού το οποίο χρησιμοποιείται από τον server υπολογιστή για να διαχειρίζεται τις αιτήσεις και να απαντάει σε αυτές.

Ο πρώτος γνωστός web server - ο NCSA HTTPd - δημιουργήθηκε από τον Rob McCool στο Εθνικό Κέντρο για Εφαρμογές Υπερυπολογιστών. Η εφεύρεση αυτή του McCool βοήθησε το Internet να μπει στη ζωή μας και πάνω της βασίστηκε ο Apache web server - ο συχνότερα χρησιμοποιούμενος web server στις μέρες μας.

1.2 Το Πρωτόκολλο Μεταφοράς Υπερκειμένου (Hypertext Transfer Protocol - HTTP)

Το πρωτόκολλο HTTP επιτρέπει στους διακομιστές και στους φυλλομετρητές να ανταλλάζουν δεδομένα μέσω διαδικτύου. Είναι πρωτόκολλο αίτησης - απάντησης. Ο πελάτης ζητά ένα αρχείο και ο server απαντά στην αίτηση. Το HTTP χρησιμοποιεί αξιόπιστες συνδέσεις TCP - εξ ορισμού στην TCP θύρα 80. Καθορίστηκε πρώτα στον RFC

Σελίδα 9 από 109

(10)

2068 και στην συνέχεια στον RFC 2616 που μπορείτε να το βρείτε στην διεύθυνση http://www.w3c.org/Protocols/.

Στο HTTP, είναι πάντα ο πελάτης αυτός που ζητά μια συναλλαγή εγκαθιστώντας μια σύνδεση και στέλνοντας μια HTTP αίτηση. Ο διακομιστής δεν είναι σε θέση να ξεκινήσει την επικοινωνία με έναν πελάτη. Και οι δύο μπορούν να τερματίσουν πρόωρα μια σύνδεση. Για παράδειγμα, όταν χρησιμοποιείτε έναν web browser, πατώντας το Stop για να τερματίσετε το κατέβασμα ενός αρχείου, διακόπτετε και την σύνδεση με τον διακομιστή.

1.2.1 HTTP Αιτήσεις

Η συναλλαγή ξεκινά με μια αίτηση από τον client browser και τελειώνει με την απάντηση του server. Η αίτηση αποτελείται από τρία μέρη:

-I- Μέθοδος—URI—Protocol/Version (πρωτόκολλο/ έκδοση) -I- Επικεφαλίδες αίτησης

-I- Κυρίως μέρος

Το παρακάτω είναι παράδειγμα HTTP αίτησης:

GET /servlet/default.jsp HTTP/1.1 Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhost

Referer: http://localhost/ch8/SendDetails.htm

User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

LastName=Franks&FirstName=Michael

(11)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

Η μέθοδος—URI—protocol version εμφανίζεται την πρώτη γραμμή της αίτησης.

GET /servlet/defaultjsp HTTP/1.1

Όπου GET είναι η μέθοδος, το /servlet/default.jsp αντιπροσωπεύει την URI και το HTTP/1.1 την έκδοση του πρωτόκολλου.

Η μέθοδος αίτησης θα εξηγηθεί με λεπτομέρειες στο επόμενο κεφάλαιο

«Μέθοδοι Αίτησης HTTP».

Το URI περιγράφει επακριβώς έναν πόρο του Διαδικτύου. Μια URI συνήθως ερμηνεύεται ως σχετική με τον κεντρικό κατάλογο του διακομιστή. Για αυτό πρέπει πάντα να ξεκινάει με μία κάθετο (/). Η URL είναι ένας τύπος της URI. Το protocol version αντιπροσωπεύει την έκδοση του HTTP πρωτοκόλλου που χρησιμοποιείται.

Η επικεφαλίδα περιέχει χρήσιμες πληροφορίες για το περιβάλλον του πελάτη και το κυρίως μέρος της αίτησης. Για παράδειγμα, μπορεί να περιέχει την γλώσσα του φυλλομετρητή, το μέγεθος του κυρίου μέρους κ.ά. Κάθε επικεφαλίδα χωρίζεται από μια ακολουθία carriage return/linefeed (CRLF).

Μεταξύ επικεφαλίδων και κυρίως μέρους, υπάρχει μια κενή γραμμή (CRLF) η οποία είναι σημαντική για την μορφή της HTTP αίτησης. Η CRLF λέει στον διακομιστή HTTP από που ακριβώς αρχίζει το κυρίως μέρος. Σε ορισμένα βιβλία σχετικά με τον προγραμματισμό Internet, αυτή η CRLF αναφέρεται σαν το τέταρτο στοιχείο μιας HTTP αίτησης.

Στο προηγούμενο παράδειγμα αίτησης, το κυρίως μέρος ήταν απλά η ακόλουθη γραμμή:

LastName=Franks&FirstName=Michael

Σελίδα 11 από 109

(12)

Μπορεί όμως να είναι πολύ μεγαλύτερο σε κάποια άλλη αίτηση.

1.2.2 Μέθοδοι ΗΤΤΡ αίτησης

Κάθε αίτηση μπορεί να χρησιμοποιήσει μία από τις πολλές μεθόδους που καθορίζονται στα HTTP πρότυπα. Στον Πίνακα 1.1 δίνονται οι μέθοδοι και η περιγραφές τους.

Πίνακας 1.1 Μέθοδοι HTTP 1.1 request (Kurniawan, 2002: xxii)

Μέθοδος Περιγραφή

GET Είναι η πιο απλή και η πιο συχνά χρησιμοποιούμενη μέθοδος. Αυτή απλώς παραλαμβάνει τα δεδομένα που αναγνωρίζονται από την URL. Αν η URL αναφέρεται σε ένα κομμάτι κώδικα (CGI, servlet ή άλλο), επιστρέφει τα δεδομένα που δημιουργούνται από αυτό.

HEAD Εκτελεί την ίδια λειτουργία με την GET, αλλά η HEAD επιστρέφει μόνο τις επικεφαλίδες χωρίς το κυρίως κείμενο.

POST Όπως η GET, η POST χρησιμοποιείται και αυτή πολύ συχνά. Τυπικά χρησιμοποιείται σε φόρμες HTML.

Μεταφέρει μια ομάδα δεδομένων στον διακομιστή στο κυρίως μέρος της αίτησης.

OPTIONS Η μέθοδος αυτή χρησιμοποιείται για να ρωτήσει έναν διακομιστή σχετικά με τις δυνατότητες που παρέχει.

Τα ερωτήματα μπορεί να είναι γενικά ή συγκεκριμένα για ένα καθορισμένο πόρο.

(13)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

PUT Η μέθοδος PUT συμπληρώνει την GET και

αποθηκεύει το κυρίως μέρος του αιτήματος στη θέση που καθορίζεται από την URL. Είναι παρόμοια με την λειτουργία PUT του FTP.

DELETE Διαγράφει ένα αρχείο από τον server. Το αρχείο προς διαγραφή καθορίζεται στο URI τμήμα της αίτησης.

TRACE Χρησιμοποιείται για να παρακολουθεί την διαδρομή μιας αίτησης διαμέσου του τείχους προστασίας (firewall) και πολλαπλών διακομιστών αντιπροσώπων (proxy server). Η TRACE είναι χρήσιμη για αποσφαλμάτωση περίπλοκων προβλημάτων δικτύου και είναι παρόμοια με το εργαλείο traceroot.

I

ΠροσοχήΗ HTTP 1.0 έχει μόνο τρεις μεθόδους: GET, HEAD και POST

Από τις εφτά αυτές μεθόδους μόνο η GET και η POST χρησιμοποιούνται συχνότερα σε μια εφαρμογή Internet.

1.2.3 HTTP Απαντήσεις

Όπως και οι αιτήσεις, έτσι και οι απαντήσεις αποτελούνται από τρία μέρη:

• Πρωτόκολλο—Status code—Περιγραφή

• Επικεφαλίδες

• Κυρίως μέρος

Το παρακάτω είναι παράδειγμα HTTP απάντησης:

Σελίδα 13 από 109

(14)

HTTP/1.1 200 OK Server: Microsoft-IIS/4.0

Date: Mon, 3 Jan 1998 13:13:33 GMT Content-Type: text/html

Last-Modified: Mon, 11 Jan 1998 13:23:42 GMT Content-Length: 112

<HTML>

<HEAD>

<TITLE>HTTP Response Example</TITLE></HEAD><BODY>

Welcome to Brainy Software

</BODY>

</HTML>

Η πρώτη γραμμή της επικεφαλίδας της απάντησης είναι όμοια με την πρώτη γραμμή της επικεφαλίδας της αίτησης. Ενημερώνει ότι το πρωτόκολλο που χρησιμοποιείται είναι το HTTP 1.1, η αίτηση είναι πετυχημένη (200 = επιτυχία) και όλα είναι σωστά.

Οι επικεφαλίδες περιέχουν χρήσιμες πληροφορίες όπως και αυτές της αίτησης. Το κυρίως μέρος είναι το ίδιο το HTML περιεχόμενο της απάντησης. Επικεφαλίδες και κυρίως μέρος χωρίζονται από μια ακολουθία CRLF.

1.3 Αρχιτεκτονική Συστήματος

Αυτό το κεφάλαιο έχει στόχο να σας δώσει μια γενική εικόνα ενός συστήματος εφαρμογής λογισμικού που χρησιμοποιεί Java ή άλλες τεχνολογίες. Χρησιμοποιεί τη συνηθισμένη προσέγγιση της παρουσίασης της αρχιτεκτονικής του συστήματος λογισμικού και της παράλληλης παρατήρησης του πως αυτή έχει εξελιχθεί.

Μια καλοσχεδιασμένη εφαρμογή λογισμικού χωρίζεται σε λογικά επίπεδα (layers). Το καθένα από αυτά έχει διαφορετική ευθύνη στην τελική

(15)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

λειτουργικότητα. Τα επίπεδα είναι καθαρά αφηρημένες έννοιες και δεν ανταποκρίνονται σε φυσικές κατανομές.

Τα τυπικά επίπεδα ενός συστήματος λογισμικού είναι:

-I- Επίπεδο παρουσίασης (presentation layer). Εδώ υπάρχουν τμήματα που χειρίζονται τη διεπαφή - περιβάλλον εργασίας και την αλληλεπίδραση του χρήστη (user interface και user interaction).

-I- Λογικό επίπεδο (business logic layer). Περιέχει στοιχεία που χειρίζονται τον λογικό προγραμματισμό της εφαρμογής.

-I- Επίπεδο δεδομένων (data layer). Χρησιμοποιείται από το προηγούμενο επίπεδο για να διατηρήσει μόνιμα την κατάστασή του. Αποτελείται από μία ή περισσότερες βάσεις δεδομένων όπου εκεί αποθηκεύονται τα δεδομένα. Ωστόσο, μπορούν να χρησιμοποιηθούν και άλλοι τύποι αποθήκευσης δεδομένων. Για παράδειγμα, είναι συνηθισμένη η χρήση XML αρχείων σαν αποθηκευτικό χώρο για δεδομένα.

1.3.1 Η Αρχιτεκτονική Two-Tier (δύο βαθμίδων)

Μια two - tiered εφαρμογή είναι μια απλή client-server εφαρμογή στην οποία την ευθύνη για την εργασία που πρέπει να εκτελεστεί την αναλαμβάνει ο πελάτης και ο διακομιστής απλά λειτουργεί σαν ελεγκτής κυκλοφορίας μεταξύ του πελάτη και των δεδομένων. Ο όρος "fat client” σε αυτόν τον τύπο αρχιτεκτονικής οφείλεται στον όγκο των απαιτήσεων από την πλευρά του πελάτη. Σε αυτή την αρχιτεκτονική, το επίπεδο παρουσίασης και το λογικό επίπεδο βρίσκονται στη μία βαθμίδα και το

Σελίδα 15 από 109

(16)

επίπεδο δεδομένων είναι στην άλλη. Η Εικόνα Ι.1 δείχνει μια αρχιτεκτονική two-tier.

Εικόνα Ι.1 Εφαρμογή two-tier. (Kurniawan, 2002: xxiv)

Το μειονέκτημα αυτού του τύπου αρχιτεκτονικής είναι ότι παρουσιάζει προβλήματα καθώς αυξάνεται ο αριθμός πελατών. Το πρώτο πρόβλημα οφείλεται στο γεγονός ότι όλες οι εργασίες εκτελούνται από τον πελάτη.

Υπάρχει αυξημένη κυκλοφορία δικτύου επειδή κάθε πελάτης πρέπει να κάνει πολλές αιτήσεις για δεδομένα από τον διακομιστή - πριν παρουσιάσει οτιδήποτε στον χρήστη.

Ένα ακόμη πρόβλημα είναι το κόστος λόγω του ότι κάθε πελάτης χρειάζεται ένα μηχάνημα με αρκετή δύναμη. Καθώς αυξάνεται ο αριθμός των πελατών, το κόστος μπορεί να γίνει αστρονομικό.

Ωστόσο, το μεγαλύτερο πρόβλημα που μπορεί να αντιμετωπίσει αυτός ο τύπος αρχιτεκτονικής είναι αυτό της συντήρησης. Ακόμη και η πιο μικρή αλλαγή στην λογική διαδικασία ίσως βγάλει εκτός προγράμματος όλους τους χρήστες. Αν και η διαδικασία μπορεί να είναι αυτοματοποιημένη, πάντα εμφανίζονται προβλήματα στους μεγάλους οργανισμούς εξαιτίας μερικών χρηστών οι οποίοι δεν είναι έτοιμοι να αντιμετωπίσουν μια αναβάθμιση, ενώ κάποιοι άλλοι επιμένουν στην άμεση εκτέλεσή της.

(17)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

1.3.2 Η Αρχιτεκτονική Three-Tier (τριών βαθμίδων)

Για να παρακαμφτούν τα προβλήματα, μια εφαρμογή two-tier γίνεται three- tier. Στο πρώτο μέρος ανήκει το επίπεδο παρουσίασης, στο δεύτερο το λογικό επίπεδο και στο τρίτο το επίπεδο δεδομένων. Η Εικόνα Ι.2 δείχνει μια αρχιτεκτονική three-tier.

Client Server

Εικόνα Ι.2 Εφαρμογή three-tier. (Kurniawan, 2002: xxv)

1.3.3 Η Αρχιτεκτονική n-Tier

Για περισσότερη ευελιξία, τα τρία μέρη της εφαρμογής three-tier μπορούν να χωριστούν σε περισσότερα μέρη. Μια τέτοια εφαρμογή λέγεται n-tier.

Σε αυτήν την αρχιτεκτονική, το λογικό επίπεδο διαιρείται με βάση τις λειτουργίες και όχι φυσικά. Χωρίζεται στα επιμέρους μέρη:

-I- User interface. Χειρίζεται την αλληλεπίδραση του χρήστη με την εφαρμογή. Για το Internet, αυτή την δουλειά την κάνει ο φυλλομετρητής ο οποίος αποδίδει HTML tags.

-I- Presentation logic. Προσδιορίζει τι εμφανίζει το περιβάλλον του χρήστη και τι γίνεται με τις αιτήσεις των χρηστών.

-I- Business logic. Διαμορφώνει την λογική της εφαρμογής.

-I- Infrastructure services. Εφοδιάζει με λειτουργίες που απαιτούνται από τα στοιχεία της εφαρμογής.

-I- Data layer. Φιλοξενεί τα δεδομένα της εφαρμογής.

Σελίδα 17 από 109

(18)

1.4 Java 2, Enterprise Edition (J2EE)

Η J2EE δεν είναι προϊόν. Καθορίζει την σχέση που υπάρχει μεταξύ των εφαρμογών και του υποδοχέα εφαρμογών (container). Σε αυτή την περίπτωση ο container αναφέρεται σε ένα τυποποιημένο περιβάλλον εκτέλεσης, ο οποίος παρέχει συγκεκριμένες υπηρεσίες για στοιχεία που αναπτύσσονται σε αυτόν.

1.5 Αναπτύσσοντας Διαδικτυακές Εφαρμογές με Java

Συνήθως χρησιμοποιούνται δύο βασικές αρχιτεκτονικές όταν αναπτύσσονται διαδικτυακές εφαρμογές με Java. Η πρώτη αρχιτεκτονική χρησιμοποιεί τους servlets και την JSP στο μεσαίο tier για να εξυπηρετήσει τους πελάτες και να επεξεργαστεί τη λογική της εφαρμογής.

Αυτή η αρχιτεκτονική απεικονίζεται στην Eικόνα Ι.3

Εικόνα Ι.3 Servlets/ JSP αρχιτεκτονική. (Kurniawan, 2002: xxvi)

Μικρού και μεσαίου μεγέθους εφαρμογές χρησιμοποιούν αυτό το μοντέλο.

Η δεύτερη αρχιτεκτονική περιλαμβάνει την χρήση J2EE διακομιστή και Enterprise JavaBeans (EJB) και αυτό είναι πολύ χρήσιμο για τις μεγάλες εφαρμογές που πρέπει να είναι ευέλικτες. Η αρχιτεκτονική αυτή φαίνεται στην Eικόνα Ι.4.

(19)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

Client

Servlets

JSP pages Database

Enterprise bean

EJB container

Εικόνα Ι.4 J2EE αρχιτεκτονική. (Kurniawan, 2002: xxvi)

Σελίδα 19 από 109

(20)

2. Η Τεχνολογία Servlet

Η τεχνολογία Servlet είναι το θεμέλιο της ανάπτυξης web εφαρμογών, χρησιμοποιώντας τη γλώσσα προγραμματισμού Java. Είναι μία από τις σημαντικότερες java τεχνολογίες και είναι η υποκείμενη τεχνολογία για μια άλλη δημοφιλή τεχνολογία java για την ανάπτυξη web εφαρμογών:

JavaServer Pages (JSP). Ως εκ τούτου, η κατανόηση της τεχνολογίας Servlet και της αρχιτεκτονικής του είναι σημαντική σε όσους θέλουν να γίνουν προγραμματιστές Servlet. Ακόμη και αν σχεδιάζετε να αναπτύξετε τη δικτυακή εφαρμογή σας σε Java χρησιμοποιώντας μόνο JSP Pages, η κατανόηση της Servlet τεχνολογίας θα σας βοηθήσει να χτίσετε μια πιο αποδοτική και αποτελεσματική JSP εφαρμογή.

Ο στόχος αυτού του κεφαλαίου είναι να μας εισάγει στην τεχνολογία Servlet και να μας εξοικειώσει με αυτήν παρουσιάζοντας βήμα-βήμα οδηγίες που βοηθούν στο χτίσιμο και εκτέλεση μιας Servlet εφαρμογής.

Ειδικότερα, το κεφάλαιο διαπραγματεύεται τα ακόλουθα θέματα:

-I- Τα πλεονεκτήματα των Servlets -I- Αρχιτεκτονική Servlet εφαρμογών -I- Πως δουλεύει ένα Servlet

-I- Πώς να γράψετε και να τρέξετε την πρώτη σας Servlet εφαρμογή

Σ’ αυτό το κεφάλαιο, θα μάθετε πώς να εγκαταστήσετε τον Tomcat γρήγορα για να τρέξετε την πρώτη μας Servlet εφαρμογή.

(21)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

2.1 Τα Πλεονεκτήματα των Servlets

Όταν εμφανίστηκε για πρώτη φορά, το σπουδαίο αυτό πράγμα που αποκαλούμε Internet αποτελούνταν μόνο από στατικά στοιχεία γραμμένα σε Hypertext Markup Language (HTML). Εκείνη την εποχή, όποιος μπορούσε να γράψει σελίδες HTML θεωρούνταν ειδικός του Internet.

Ωστόσο, αυτό δεν κράτησε πολύ.

Σύντομα εμφανίστηκαν τα δυναμικά δικτυακά στοιχεία χάρη στην τεχνολογία Common Gateway Interface (CGI). Το CGI επιτρέπει στον web server να καλεί ένα εξωτερικό πρόγραμμα και να περνάει μια HTTP αίτηση πληροφορίας σ’ αυτό το πρόγραμμα για να επεξεργαστεί την αίτηση. Μετά η απάντηση απ’ το εξωτερικό πρόγραμμα περνάει πίσω στον web server, που την προωθεί στον client browser. Τα προγράμματα CGI μπορούν να γραφτούν σε οποιαδήποτε γλώσσα μπορεί να καλέσει ο web server. Με τον καιρό, η Perl έγινε η πιο γνωστή γλώσσα για προγράμματα CGI.

Παρόλα αυτά, καθώς το Internet γινόταν όλο και πιο γνωστό, ο αριθμός των χρηστών ενός διάσημου δικτυακού χώρου αυξανόταν εκθετικά και έγινε φανερό ότι το CGI απέτυχε στην παράδοση εφαρμογών Internet μεγάλης κλίμακας. Το ψεγάδι του CGI είναι ότι κάθε αίτηση client κάνει τον web server να δημιουργεί μια νέα διεργασία για το CGI πρόγραμμα. Όπως ήδη γνωρίζουμε, η δημιουργία διεργασιών είναι μια ακριβή διαδικασία που καταναλώνει πολλούς CPU κύκλους και μνήμη.

Σταδιακά, νέες και καλύτερες τεχνολογίες θα αντικαταστήσουν το CGI σαν την κύρια τεχνολογία για ανάπτυξη web εφαρμογών. Ο κόσμος έχει παρακολουθήσει τις παρακάτω τεχνολογίες να προσπαθούν να κυριαρχήσουν στην δικτυακή ανάπτυξη:

Σελίδα 21 από 109

(22)

-I- ColdFusion. Η ColdFusion της Allaire παρέχει tags τύπου HTML τα οποία χρησιμοποιούνται για να εκτελέσουν έναν αριθμό λειτουργιών, ειδικά να υποβάλλουν ερωτήσεις σε βάσεις δεδομένων. Αυτή η τεχνολογία είχε την τιμητική της στην ιστορία του Παγκόσμιου Ιστού σαν η κύρια τεχνολογία για προγραμματισμό web εφαρμογών. Όμως ξεπεράστηκε με την εύρεση άλλων τεχνολογιών.

-I- Server-side JavaScript (SSJS). Η SSJS είναι μια προέκταση της γλώσσας JavaScript, της γλώσσας που ακόμη κυβερνά στον δικτυακό προγραμματισμό client-side.

Η SSJS μπορεί να προσπελάσει τις τάξεις Java που αναπτύσσονται στην πλευρά του server χρησιμοποιώντας την LiveWire τεχνολογία από τη Netscape.

4- PHP. Η PHP είναι μια συναρπαστική open-source τεχνολογία που έχει ωριμάσει με τα χρόνια. Η τεχνολογία παρέχει εύκολη ανάπτυξη δικτυακών εφαρμογών με την διαχείριση συνόδων της, και περιλαμβάνει κάποια ενσωματωμένη λειτουργικότητα, όπως για παράδειγμα

«ανέβασμα» αρχείων (file upload). Ο αριθμός των προγραμματιστών που υιοθετούν την PHP ως την τεχνολογία της προτίμησής τους αυξήθηκε ραγδαία τα τελευταία χρόνια.

-I- Servlet. Η τεχνολογία Servlet παρουσιάστηκε από τη Sun Microsystems το 1996.

-I- JavaServer Pages (JSP). Η JSP είναι προέκταση της τεχνολογίας Servlet.

-I- Active Server Pages (ASP). Η ASP της Microsoft χρησιμοποιεί scripting τεχνολογίες που δουλεύουν σε πλατφόρμες Windows, αν και έχουν γίνει προσπάθειες να εισαχθεί και σ' άλλα λειτουργικά συστήματα. Δουλεύει με το Internet Information Server διακομιστή διαδικτύου. Σύντομα θα αντικατασταθεί από την Active Server Pages.NET.

(23)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

-I- Active Server Pages.NET (ASP.NET). Η τεχνολογία αυτή είναι μέρος της συνολικής πατφόρμας Microsoft .NET. Το .NET Framework χρησιμοποιεί την λεγόμενη Κοινή Γλώσσα Εκτέλεσης (Common Language Runtime) που είναι παρόμοια με την Εικονική Μηχανή της Java (Java Virtual Machine) και παρέχει μια τεράστια βιβλιοθήκη διαθέσιμη σε όλες τις .NET γλώσσες και σε όλες τις ASP.NET σελίδες. Η ASP.NET είναι μια πολύ καλή τεχνολογία. Εισήγαγε πολλές νέες τεχνολογίες, συμπεριλαμβανόμενης της διαχείρισης κατάστασης (state management) που δεν εξαρτάται από cookies ή τροποποίηση της URL.

4-

Στο παρελθόν, η ASP και η servlet / JSP ήταν οι κύριες τεχνολογίες που χρησιμοποιήθηκαν στην ανάπτυξη web εφαρμογών. Με την εμφάνιση της ASP.NET, δεν είναι δύσκολο να δούμε ότι αυτή η τεχνολογία θα γίνει ο βασικός ανταγωνιστής της servlet/ JSP. Η ASP (και η ASP.NET) και η servlet/ JSP έχουν η κάθε μία τούς υποστηρικτές τους και δεν είναι εύκολο να πούμε ποια είναι η καλύτερη. Το πιο πιθανό είναι ότι καμία δεν θα αναδειχθεί απόλυτος νικητής που θα μονοπωλήσει την αγορά. Αντίθετα, αυτές οι τεχνολογίες θα ανταγωνίζονται η μία την άλλη τα επόμενα χρόνια.

Η servlet και η JSP προσφέρουν τα παρακάτω πλεονεκτήματα που δεν τα έχουν απαραίτητα και οι άλλες τεχνολογίες:

-I- Απόδοση. Η εκτέλεση των servlets υπερτερεί της CGI λόγω του ότι δεν δημιουργεί μια νέα διεργασία για κάθε αίτηση client. Αντ’ αυτού, κάθε αίτηση χειρίζεται από την διεργασία του Java container. Όταν τελειώσει ένας servlet την εκτέλεση της αίτησης, μένει στην μνήμη, περιμένοντας γι’ άλλη αίτηση.

Σελίδα 23 από 109

(24)

-I- Φορητότητα. Παρόμοια με άλλες Java τεχνολογίες, οι εφαρμογές servlet είναι φορητές. Μπορείτε να τις μετακινήσετε σε άλλα λειτουργικά συστήματα χωρίς σοβαρές δυσκολίες.

-I- Γρήγορος κύκλος ανάπτυξης. Όπως κάθε Java τεχνολογία, οι servlets έχουν πρόσβαση σε μια πλούσια Java βιβλιοθήκη, που βοηθά στην επιτάχυνση της λειτουργίας ανάπτυξης.

-I- Ευρωστία. Οι servlets διαχειρίζονται από την Java Virtual Machine. Δεν χρειάζεται να ανησυχείτε για διαρροές μνήμης ή για συλλογή «σκουπιδιών», κάτι που βοηθά στη συγγραφή εύρωστων εφαρμογών.

-I- Ευρεία αποδοχή. Η Java είναι μια τεχνολογία ευρέως αποδεκτή. Αυτό σημαίνει ότι τεράστιος αριθμός χρηστών δουλεύουν πάνω σε Java τεχνολογίες. Ένα απ’ τα πλεονεκτήματα της ευρείας αποδοχής είναι ότι μπορείτε εύκολα να βρείτε και ν’ αγοράσετε στοιχεία εφαρμογών που ταιριάζουν στις ανάγκες σας και να γλιτώσετε πολύτιμο χρόνο ανάπτυξης.

2.2 Αρχιτεκτονική Servlet εφαρμογών

Ένας servlet είναι μια τάξη Java που μπορεί να φορτώσει δυναμικά και να τρέξει από έναν ειδικό web server. Αυτός ονομάζεται servlet container και ήταν γνωστός και σαν servlet engine τον πρώτο καιρό.

Οι servlets αλληλεπιδρούν με τους clients μέσω ενός μοντέλου αίτησης- απάντησης βασισμένο στο HTTP. Επειδή η servlet τεχνολογία δουλεύει πάνω από το HTTP, ένας servlet container πρέπει να υποστηρίζει το HTTP ως το πρωτόκολλο για αιτήσεις client και απαντήσεις server.

Ωστόσο, ένας servlet container μπορεί επίσης να υποστηρίξει παρόμοια πρωτόκολλα, όπως το HTTPS (HTTP over SSL) για ασφαλή διαχείριση.

(25)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

Η Eικόνα 2. 1 δείχνει την αρχιτεκτονική μιας servlet εφαρμογής.

Εικόνα 2.1 (Kurniawan, 2002: 6)

Σε μια εφαρμογή JSP, ο servlet container αντικαθίσταται από έναν JSP υποδοχέα (container). Και οι δύο συχνά αναφέρονται σαν web container ή servlet/ JSP container, ιδίως αν μια δικτυακή εφαρμογή αποτελείται και από servlets και από JSP σελίδες.

Όπως βλέπουμε στην Eικόνα 2.1, μια servlet εφαρμογή μπορεί να περιλαμβάνει επίσης στατικό περιεχόμενο, όπως σελίδες HTML. Δεν προτιμούμε την μεταχείριση στατικών στοιχείων απ’ τον servlet container γιατί το περιεχόμενο είναι γρηγορότερο αν παραδίδεται από έναν πιο σταθερό HTTP server, όπως ο Apache web server ή ο Microsoft Internet Information server. Έτσι, είναι κοινή πρακτική να βάζουμε έναν web server μπροστά για να χειρίζεται όλες τις αιτήσεις των clients. Ο web server διαχειρίζεται τα στατικά στοιχεία και περνάει στους servlet containers όλες τις αιτήσεις πελατών για τους servlets.

Η Eικόνα 2.2 δείχνει μια πιο κοινή αρχιτεκτονική για μια εφαρμογή servlet.

Σελίδα 25 από 109

(26)

2.3 Πως δουλεύει ένας Servlet

Ένας servlet φορτώνεται από τον servlet container την πρώτη φορά που γίνεται αίτηση στον servlet. Τότε ο servlet προωθεί την αίτηση, την επεξεργάζεται και επιστρέφει την απάντηση στον servlet container, που με την σειρά του την στέλνει στον χρήστη. Μετά απ’ αυτό ο servlet παραμένει στην μνήμη περιμένοντας γι’ άλλες αιτήσεις - δεν ξεφορτώνεται απ’ την μνήμη αν δεν διαπιστώσει ο servlet container κάποια ανεπάρκεια μνήμης.

Κάθε φορά που γίνεται αίτηση στον servlet, ωστόσο, ο servlet container συγκρίνει το timestamp (χρονική υπογραφή) του φορτωμένου servlet με το servlet class file. Αν το class file timestamp είναι πρόσφατο, ο servlet φορτώνεται στην μνήμη. Μ’ αυτόν τον τρόπο, δεν χρειάζεται να κάνουμε επανεκκίνηση στον servlet container κάθε φορά που αναβαθμίζουμε ένα servlet.

Ο τρόπος με τον οποίο δουλεύει ένας servlet μέσα στον servlet container περιγράφεται στο διάγραμμα της Εικόνας 2.3.

(27)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

Εικόνα 2.3 (Kurniawan, 2002: 8)

2.4 Ο Tomcat Servlet Container

Πολλοί servlet containers είναι διαθέσιμοι σήμερα. Ο πιο διάσημος - και αναγνωρισμένος σαν επίσημος servlet/ JSP υποδοχέας - είναι ο Tomcat.

Σχεδιασμένος απ’ την Sun Microsystems, ο πηγαίος κώδικας Tomcat μεταβιβάστηκε στο Apache Software Foundation τον Οκτώβριο του 1999.

Στο νέο του σπίτι, ο Tomcat συμπεριλήφθηκε στο Jakarta Project, ένα από τα σχέδια του Apache Software Foundation. Η Apache, η Sun και άλλες εταιρίες - με την βοήθεια εθελοντών προγραμματιστών παγκοσμίως- μετέτρεψαν τον Tomcat σε μια παγκοσμίου φήμης εφαρμογή αναφοράς servlet. Δυο μήνες μετά την παράδοση, βγήκε ο Tomcat version 3.0. Ο Tomcat βγήκε σε πολλές 3.χ εκδόσεις μέχρι που εμφανίστηκε ο 3.3.

Σελίδα 27 από 109

(28)

Ο διάδοχος της έκδοσης 3.3 είναι η τρέχουσα έκδοση 4.0. Ο 4.0 servlet container (Catalina) βασίζεται σε μια εντελώς νέα αρχιτεκτονική και αναπτύχθηκε από κάτω προς τα πάνω για ευελιξία. Η έκδοση 4.0 υλοποιεί τον servlet 2.3 και τον JSP 1.2.

Ένας άλλος γνωστός servlet container είναι ο JRun από την Allaire Corporation. Ο JRun διατίθεται σε τρεις εκδόσεις: Developer, Professional και Enterprise. Η έκδοση Developer είναι ελεύθερη αλλά χωρίς άδεια γι’

ανάπτυξη. Οι εκδόσεις Professional και Enterprise δίνουν άδεια γι’

ανάπτυξη με κάποιο κόστος. Μπορείτε να κατεβάσετε τον JRun απ’ τη σελίδα http://commerce.allaire.com/download.

Ο Tomcat είναι από μόνος του ένας web server. Αυτό σημαίνει ότι μπορείτε να τον χρησιμοποιήσετε για να εξυπηρετήσετε αιτήσεις HTTP για servlets, όπως και στατικά αρχεία (HTML, image files κ.ά). Στην πράξη, ωστόσο, αφού είναι γρηγορότερος για αιτήσεις χωρίς servlet, χωρίς JSP, ο Tomcat χρησιμοποιείται μαζί μ’ έναν άλλον πιο εύρωστο web server, όπως ο Apache web server ή ο Microsoft Internet Information server.

Μόνο αιτήσεις για servlets ή σελίδες JSP περνάνε στον Tomcat.

Για να γράψετε έναν servlet, χρειάζεστε τουλάχιστον την έκδοση 1.2 της Java Development Kit. Αν δεν την έχετε, μπορείτε να κατεβάσετε την JDK 1.2 από την σελίδα http://iava.sun.com/i2se. Η σύσταση εφαρμογής και για τους servlets και για τον JSP δεν περιλαμβάνεται στην J2SE, αλλά περιλαμβάνεται στον Tomcat. Ο Tomcat είναι γραμμένος σε Java.

Αν δεν έχετε ακόμη εγκαταστήσει και ρυθμίσει τον Tomcat, τώρα είναι η ώρα να το κάνετε.

(29)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

2.5 Έξι Βήματα για να Τρέξετε τον Πρώτο σας Servlet

Αφού εγκαταστήσετε και διαμορφώσετε τον Tomcat, μπορείτε να τον βάλετε σε λειτουργία. Βασικά, χρειάζεται ν’ ακολουθήσετε έξι βήματα για να πάτε από το γράψιμο του servlet σας στο τρέξιμό του. Τα βήματα αυτά είναι περιληπτικά τα παρακάτω:

1. Δημιουργήστε μια δομή καταλόγου κάτω από τον Tomcat για την εφαρμογή σας.

2. Γράψτε τον πηγαίο κώδικα του servlet. Θα χρειαστεί να εισάγετε το πακέτο javax.servlet και το πακέτο javax.servlet.http στον source file σας.

3. Μεταγλωττίστε (compile) τον κώδικα πηγής σας.

4. Δημιουργήστε έναν deployment descriptor.

5. Τρέξτε τον Tomcat.

6. Καλέστε τον servlet σας από έναν web browser.

Ας δούμε τα βήματα ένα - ένα.

2.5.1 Βήμα 1: Δημιουργήστε μια δομή καταλόγου κάτω απ’ τον Tomcat

Όταν εγκαταστήσετε τον Tomcat, πολλοί υποφάκελοι δημιουργήθηκαν αυτόματα στον Tomcat home directory (%CATALINA_HOME%). Ένας από τους υποφακέλους είναι ο webapps. Ο webapps είναι εκεί που αποθηκεύετε τις εφαρμογές web. Μια εφαρμογή web είναι μια συλλογή από servlets και άλλα στοιχεία εγκατεστημένα σ’ ένα συγκεκριμένο υποσύνολο του URL namespace του server. Ένας ξεχωριστός φάκελος αφιερώνεται για κάθε εφαρμογή servlet. Το πρώτο πράγμα που πρέπει να κάνετε όταν κατασκευάζετε μια εφαρμογή servlet είναι να δημιουργήσετε τον φάκελο της εφαρμογής. Για να δημιουργήσετε μια δομή φακέλων για μια εφαρμογή που λέγεται myApp, ακολουθήστε αυτά τα βήματα:

Σελίδα 29 από 109

(30)

1. Δημιουργήστε έναν φάκελο που λέγεται myApp στον φάκελο webapps. Τ’ όνομα του φακέλου είναι σημαντικό γιατί εμφανίζεται επίσης στην URL του servlet.

2. Δημιουργήστε τους φακέλους WEB-INF στον myApp και δημιουργήστε έναν φάκελο με όνομα classes στον WEB- INF. Αυτός είναι για τις Java τάξεις. Αν έχετε φακέλους HTML, βάλτε τους κατευθείαν στον myApp. Ίσως θελήσετε να δημιουργήσετε έναν φάκελο με όνομα images στον myApp για όλα τα αρχεία εικόνων σας.

2.5.2 Βήμα 2: Γράψτε τον πηγαίο κώδικα του servlet

Σ’ αυτό το βήμα ετοιμάζετε τον πηγαίο κώδικα. Μπορείτε να γράψετε τον πηγαίο κώδικα μόνοι σας χρησιμοποιώντας τον κειμενογράφο της αρεσκείας σας ή να τον αντιγράψετε από το συνοδευτικό CD.

Ο κώδικας στον Πίνακα 2.1 δείχνει έναν απλό servlet που λέγεται TestingServlet. Ο φάκελος ονομάζεται TestingServlet.java. Ο servlet στέλνει μερικές HTML ετικέτες και κάποιο κείμενο στον browser. Προς το παρόν, μην ανησυχείτε αν δεν έχετε ιδέα πως δουλεύει.

Πίνακας 2.1 TestingServlet.java (Kurniawan, 2002: 11)

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.* ; import java.util.* ;

public class TestingServlet extends HttpServlet {

public void doGet (HttpServletRequest request, HttpServletResponse response)

Throws ServletException, IOException {

PrintWriter out = response.getWriter();

(31)

2 Η Τεχνολογία Servlet

out.println (“<HTML>”);

out.println (“<HEAD>”);

out.println (“<TITLE>Servlet Testing</TITLE>”);

out.println (“</HEAD >”);

out.println (“<BODY>”);

out.println (“Welcome to the Servlet Testing Center”);

out.println (“</BODY>”);

out.println (“</HTML>”);

} }

Τώρα, σώστε τον φάκελο TestingServlet.java στον φάκελο WEB- INF/classes στον myApp. Η τοποθέτηση του κώδικά σας εδώ θα τον κάνει απροσπέλαστο από έναν web browser. Στατικά αρχεία, όπως σελίδες HTML και αρχεία εικόνων, πρέπει να τοποθετηθούν κατευθείαν στον myApp ή έναν φάκελο πιο κάτω απ’ αυτόν.

ΠΡΟΣΟΧΗ: Τοποθετώντας τους φακέλους του κώδικα πηγής έξω απ’ τον WEB-INF τους κάνετε φανερούς στον browser.

2.5.3 Βήμα 3: Μεταγλωττίστε τον πηγαίο κώδικά σας

Για να μετατρέψετε τον πηγαίο κώδικά σας, πρέπει να συμπεριλάβετε τη διαδρομή για το αρχείο servlet.jar στη μεταβλητή περιβάλλοντος CLASSPATH. Ο servlet.jar βρίσκεται στον υποφάκελο common\lib\ μέσα στον %CATAUNAJHOME%.

Για παράδειγμα, αν εγκαταστήσατε τον Tomcat στον δίσκο C:\ στα Windows και ονομάσατε τον φάκελο tomcat, γράψτε την παρακάτω εντολή απ’ τον φάκελο όπου βρίσκεται ο TestingServlet.java.

javac classpath C:\tomcat\common\lib\servlet.jar TestingServlet.java

Σελίδα 31 από 109

(32)

Εναλλακτικά, για να γλιτώσετε την πληκτρολόγηση κάθε φορά που μεταφράζετε τον κώδικα πηγής, μπορείτε να προσθέσετε την πλήρη διαδρομή για το αρχείο servlet.jar στην μεταβλητή περιβάλλοντος CLASSPATH. Επίσης, αν εγκαταστήσατε τον Tomcat στον C:\ και ονομάσατε τον φάκελο tomcat, πρέπει να προσθέσετε C:\tomcat\common\lib\servlet.jar στην μεταβλητή περιβάλλοντος CLASSPATH. Έπειτα, μπορείτε να μεταγλωττίσετε τον κώδικα γράφοντας απλά το παρακάτω.

javac TestingServlet.java

Αν χρησιμοποιείτε Windows, θυμηθείτε ότι οι νέες μεταβλητές περιβάλλοντος θα ισχύουν μόνο για νέα παράθυρα κονσόλας εκτέλεσης.

Μ’ άλλα λόγια, αφού αλλάξετε μια νέα μεταβλητή περιβάλλοντος, ανοίξτε ένα νέο παράθυρο γραμμής εντολών για να πληκτρολογήσετε τις εντολές σας.

2.5.4 Βήμα 4: Δημιουργήστε έναν deployment descriptor

Ένας deployment descriptor είναι ένα προαιρετικό συστατικό σε μια εφαρμογή servlet. Ο descriptor παίρνει την μορφή εγγράφου XML που λέγεται web.xml και πρέπει να βρίσκεται στον φάκελο WEB-INF της servlet εφαρμογής. Όταν υπάρχει, ο deployment descriptor περιέχει ρυθμίσεις ειδικά γι’ αυτή την εφαρμογή.

Για να δημιουργήσετε τον deployment descriptor, χρειάζεται να δημιουργήσετε ένα αρχείο web.xml και να το τοποθετήσετε στον φάκελο WEB-INF μέσα στον myApp.

Ο web.xml γι’ αυτό το παράδειγμα εφαρμογής πρέπει να έχει το παρακάτω περιεχόμενο.

<?xml version-Ί .0 ” encoding-’ISO-8859-1”?>

(33)

Πτυχιακή Εργασία της Μαριάννας Καραμάνη

<!DOCTYPE web-app

PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”

“http://java.sun.com/dtd/web-ap p_2_3 .dtd”>

<web-app>

<servlet>

<servlet-name>Testing</servlet-name>

<servlet-class>TestingServlet</servlet-class>

</servlet>

</web-app>

Το αρχείο web.xml έχει ένα στοιχείο, το web-app. Πρέπει να γράψετε όλους τους servlets σας στο <web-app>. Για κάθε servlet, έχετε ένα

<servlet> στοιχείο και χρειάζεστε τα στοιχεία <servlet-name> και <servlet- class>. Το <servlet-name> είναι το όνομα για τον servlet σας, με το οποίο είναι γνωστός στον Tomcat. Το <servlet-class> είναι ο φάκελος του servlet χωρίς το πρόσθετο .class.

Το να υπάρχουν περισσότεροι από έναν servlet σε μια εφαρμογή είναι σύνηθες. Για κάθε servlet, χρειάζεστε ένα στοιχείο <servlet> στο αρχείο web.xml. Για παράδειγμα, το παρακάτω δείχνει πως είναι το web.xml αν προσθέσετε άλλον servlet που λέγεται Login:

<?xml version-Ί .0 ” encoding-’ISO-8859-1”?>

<!DOCTYPE web-app

PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”

“http://java.sun.com/dtd/web-ap p_2_3 .dtd ”>

<web-app>

<servlet>

<servlet-name>Testing</servlet-name>

<servlet-class>TestingServlet</servlet-class>

</servlet>

<servlet>

Σελίδα 33 από 109

(34)

<servlet-name>Login</servlet-name>

<servlet-class> LoginServlet</servlet-class>

</servlet>

</web-app>

2.5.5 Βήμα 5: Τρέξτε τον Tomcat

Α ο Tomcat δεν τρέχει ήδη, πρέπει να τον αρχίσετε.

2.5.6 Βήμα 6: Καλέστε τον servlet σας από έναν web browser

Τώρα, μπορείτε να καλέσετε τον servlet από έναν web browser. Εξ ορισμού ο Tomcat τρέχει στην θύρα 8080 στον εικονικό φάκελο myApp στον υποφάκελο του servlet. Ο servlet που γράψατε στα παραπάνω βήματα λέγεται Testing. Η URL γι’ αυτόν τον servlet έχει την παρακάτω μορφή:

http://domain-name/virtual-directory/servlet/servlet-name

Κάθε στατικός φάκελος είναι προσβάσιμος με την παρακάτω URL:

http://domain-name/virtual-directory/staticFile.html

Για παράδειγμα, το αρχείο Logo.gif στον φάκελο myApp/images/ είναι προσβάσιμο με την παρακάτω URL:

http://domain-name/virtual-directory/images/Logo.gif

Αν τρέχετε τον web browser στον ίδιο υπολογιστή με τον Tomcat, μπορείτε ν’ αντικαταστήσετε το μέρος domain-name με το “localhost”. Σ’ αυτή την περίπτωση, η URL για τον servlet είναι:

http://localhost:8080/myApp/servlet/Testing

Referências

Documentos relacionados

Από το ένστικτο και την παράδοση στην γνώση www teiath.gr 2014 Βασιζόμενοι σε όλα τα παραπάνω καθώς και στο γεγονός ότι μέχρι σήμερα στη χώρα μας δεν έχει εκπονηθεί μελέτη αναφορικά με