Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs...

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

Transcript of Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs...

Page 1: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

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

Ενότητα 6: Servlets και JSPs (Παραδείγματα)

Μιχάλας Άγγελος

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

Page 2: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Άδειες Χρήσης

• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

2

Page 3: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια

του εκπαιδευτικού έργου του διδάσκοντα.

• Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού.

• Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

3

Page 4: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Servlets και Java Server Pages - JSPs (Παραδείγματα)

Page 5: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Σκοποί ενότητας

• Σε αυτή την ενότητα παρουσιάζονται παραδείγματα σχετικά με τα Servlets και τις Java Server Pages.

5

Page 6: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Περιεχόμενα ενότητας (1/2)

• Παράδειγμα Servlet.

• Παράδειγμα Cookie.

• Παράδειγμα Session.

• Παράδειγμα JSP.

• Eclipse - Servlets - Tomcat Προαπαιτούμενα.

• Εγκατάσταση του Apache Tomcat.

6

Page 7: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Περιεχόμενα ενότητας (2/2)

• Ρύθμιση της Java.

• Εκκίνηση του Tomcat.

• Άνοιγμα της σελίδας του Tomcat.

• Δημιουργία εφαρμογής Servlets με Eclipse.

7

Page 8: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (1/21)

• Η παρακάτω κλάση επεκτείνει την HttpServlet. – Υλοποιεί την doGet σύμφωνα με τις απαιτήσεις μας.

• Η doGet της αρχικής HttpServlet δεν κάνει τίποτε άλλο από το να ανταποκρίνεται στο GET request του http με την ένδειξη BAD_REQUEST() ως απάντηση.

• Εδώ θα αποστέλλει χρήσιμη πληροφορία.

• Αυτό επιτυγχάνεται μέσω του αντικειμένου response. – Δηλώνεται ως HttpServletResponse, δηλαδή ως

αυτό που απαιτεί σαν παράμετρο η doGet.

8

Page 9: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (2/21)

9

Page 10: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (3/21)

10

Page 11: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (4/21)

• Ορίζουμε ως text/html τον τύπο της απάντησής μας. – Με την μέθοδο setContentType.

• Η αναφορά output ορίζεται ως μία αναφορά σε αντικείμενο PrintWriter. – Είναι ένα αντικείμενο της Java (μέσα στο java.io) που

τυπώνει σειριακά διαδοχικούς χαρακτήρες.

• Ένα τέτοιο αντικείμενο μας διαθέτει εκ κατασκευής και το HttpServletResponse. – Μέθοδος getWriter, η οποία επιστρέφει μία αναφορά

(reference) σε αυτό την οποία ταυτίζομε με το δικό μας output.

11

Page 12: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (5/21)

• Μπορούμε να κάνουμε με το output όσα μας επιτρέπει η Java, όπως. – Append (προσθήκη κειμένου), println (εκτύπωση γραμμής).

• Σημείωση. – Εδώ δεν γίνεται πραγματική εκτύπωση, αλλά αποστέλλεται στο

web client ο συρμός των χαρακτήρων μέσω μίας απόκρισης (response).

• Ο συρμός είναι αυτός ο οποίος θα εμφανισθεί από τον web browser ως σελίδα Hyper Text Markup Language (html). – Έτσι, η κλήση της μεθόδου doGet ενός αντικειμένου της κλάσης

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

12

Page 13: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (6/21)

• Συνοπτικά, με τον παραπάνω κώδικα.

– Ορίσαμε το τι θα κάνει ο web server όταν λαμβάνει GET.

– Σημειώνουμε ότι.

• Στην αρχική εγκατάσταση του servlet στον web server (εξηγείται στην επόμενη διαφάνεια).

• Στις προ-προγραμματισμένες δυνατότητες όλων των αντικειμένων των class GenericServlet και HttpServlet.

• Στις πρόσθετες δυνατότητες πού προγραμματίσαμε κατά τον δικό μας σχεδιασμό της class HTTPGetServlet.

13

Page 14: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (7/21)

• Η χρήση του servlet είναι να στέλνει γραμμή προς γραμμή τη σελίδα .html στον web browser του client.

• H εγκατάσταση του servlet στον web server. – Η παρακάτω διαδικασία παρέχει στον server την

πληροφορία για το πώς να κατευθύνει τις αιτήσεις του client στα κατάλληλα αρχεία ή διαδικασίες.

– Για τα servlets: Υπάρχει μία προκαθορισμένη αρχιτεκτονική πού αποκαλείται servlet container. Αυτή συνυπάρχει μέσα στη γενική αρχιτεκτονική του εκάστοτε server. Στη συνέχεια θα περιγράψουμε την περίπτωση του Tomcat.

14

Page 15: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (8/21)

• H εγκατάσταση του servlet στον web server (Συνέχεια).

– Ο Tomcat μπορεί να χρησιμοποιηθεί ως ένας servlet container. • Δηλαδή ως το περιβάλλον μέσα από το οποίο θα εκτίθενται

στο διαδίκτυο τα servlets που φιλοξενεί. • Εκτελείτε σε ένα περιβάλλον ενός κοινού web ή HTTP server

όπως του Apache ο οποίος συνυπάρχει αλλά δεν φαίνεται στα παρακάτω. Ασχολείται με το να δέχεται και να αποστέλλει HTTP μηνύματα.

– O Tomcat ξεκινά/σταματά με το αρχείο batch startup/shutdown που βρίσκεται στην τοποθεσία C:\jakarta-tomcat-3.3.2\bin.

15

Page 16: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (9/21)

• Μία εφαρμογή web συνήθως περιλαμβάνει.

– Τον κώδικα του servlet.

– Συμπληρωματικά αρχεία.

• Όλα αυτά αποτελούν έναν κατάλογο (dir) με προκαθορισμένη δομή.

– Στην περίπτωσή μας τον ονομάζουμε myServletDir.

– Τοποθετείται πάντα, όπως και κάθε άλλη παράλληλα εκτεθειμένη εφαρμογή, κάτω από το webapps του Tomcat.

16

Page 17: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (10/21)

• Δομή του Dir.

– Αρχικά φορτώνομε οποιοδήποτε στατικό αρχείο, όπως index.html, mytest.html ή ακόμη και test.txt, κάτω από την τοποθεσία myServletDir. • Δηλαδή C:\jakarta-tomcat-

3.3.2\webapps\myServletDir\test.txt και το βλέπομε από τον browser με http://localhost:8080/myServletDir/test.txt.

– Το index.html είναι η προεπιλεγμένη σελίδα της εφαρμογής μας. • Εμφανίζεται αν προσδιορίσουμε μόνο

http://localhost:8080/myServletDir (). • Αυτή είναι η απλούστερη εργασία κάθε web server.

17

Page 18: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (11/21)

• Ο Κατάλογος myServletDir της εφαρμογής μέσα στον server.

• Ο φάκελος του Tomcat, κάτω από το οποίο κρεμάμε αυτήν και άλλες εφαρμογές είναι ο C:\jakarta-tomcat-3.3.2\webapps.

• Τα πλάγια είναι δικές μας ονομασίες, ενώ τα όρθια είναι ονόματα που αναγνωρίζονται έτσι από τον Tomcat.

18

Page 19: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (12/21)

• Τοποθετούμε τη μεταγλωττισμένη κλάση του servlet μας στην τοποθεσία. – C:\jakarta-tomcat-

3.3.2\webapps\myServletDir\WEB-INF\classes\ HTTPGetServlet.class.

• Χρειάζεται όμως και ένας λεγόμενος Deployment Descriptor (DD). – Καλείται πάντα web.xml.

– Βρίσκεται πάντα στην τοποθεσία WEB-INF.

19

Page 20: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (13/21)

• Το web.xml.

– Είναι σε μορφή .xml.

– Παρέχει όλες τις απαιτούμενες αντιστοιχήσεις μεταξύ.

• Του ονόματος της “εφαρμογής”.

• Του ονόματος πού η εφαρμογή αυτή είναι γνωστή και προσβάσιμη από τους browsers.

• Του ονόματος του αρχείου (εδώ java class) που την εκτελεί.

20

Page 21: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (14/21)

• Για να αναγνωρίζεται το servlet μας διαμορφώνουμε το αρχείο web.xml ως εξής.

21

Page 22: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (15/21)

22

Page 23: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (16/21)

• Η ενδιαφέρουσα πληροφορία είναι αυτή των στοιχείων servlet-name, servlet-class και url-pattern.

– Τα στοιχεία αυτά καθορίζουν τις παραπάνω αντιστοιχήσεις.

• Μέσα στο αρχείο web.xml ο συνδετικός κρίκος είναι το στοιχείο servlet-name.

– Του δώσαμε την αυθαίρετη τιμή ServletDemo.

– Μέσα στο στοιχείο servlet συνδέεται με τον κώδικα (το servlet-class), ενώ μέσα στο servlet-mapping συνδέεται με το url-pattern.

23

Page 24: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (17/21)

• Εκκινούμε τον Tomcat.

– Σε περιβάλλον DOS γράφουμε startup.

• Στον web browser γράφουμε localhost, θύρα 8080, το γενικό αρχείο το οποίο περικλείει την εφαρμογή μας (myServletDir) και την ονομασία της εφαρμογής μας στο διαδίκτυο (firstServlet).

– http://localhost:8080/myServletDir/firstServlet.

– Εμφανίζεται η σελίδα που δημιούργησε ο κώδικας του servlet μας.

24

Page 25: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (18/21)

• Ο Tomcat χρησιμοποίησε τις αντιστοιχήσεις που επισημάναμε για να γίνει η δουλειά.

• Ο εξωτερικός κόσμος, όπως το διαδίκτυο, βλέπει όλη την δομή μέχρι το WEB-INF, χωρίς το WEB-INF.

• Ο κώδικας (HTTPGetServlet.class) δεν φαίνεται.

– Καλείται με το alias που καθορίσαμε στο web.xml (firstServletDemo).

25

Page 26: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (19/21)

• Όσα κάναμε παραπάνω μπορούν να γίνουν σύμφωνα με μία προ-τυποποιημένη γενίκευση.

• Η γενική ιδέα είναι ότι η τοποθεσία webapps με το περιεχόμενό της.

– Είναι προσβάσιμη από το διαδίκτυο.

– Περιέχει άλλους καταλόγους (folders) με εφαρμογές web.

• Μέσα σε καθεμία από αυτές έχουμε.

– Στατικές σελίδες και το WEB-INF που περιέχει όλα όσα είδαμε πιο πάνω κι επίσης τους υποκαταλόγους lib και other directories σε πιο εξελιγμένες περιπτώσεις.

26

Page 27: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (20/21)

• Κάθε παιδί του webapps είναι αυτόνομο.

• Η κανονική διαδικασία επιτρέπει την εισαγωγή του σαν αρχείο .war (Web Application Archive - WAR).

– Είναι κάτι ανάλογο με τα .jar της Java.

– Δηλαδή όλη η δομή του παραπάνω σχήματος (της διαφάνειας 51) συμπιεσμένη σε ένα μοναδικό αρχείο.

– Το myServletDir.war μπορούμε να το κατασκευάσουμε δίνοντας μέσα από το MyServletDir φάκελο την εντολή:

• jar –cvfM MyServletDir.war WEB-INF index.html test.text.

27

Page 28: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Servlet (21/21)

• Τοποθετούμε το myServletDir.war μέσα στο webapps του Tomcat.

• Κατά την εκκίνηση του Tomcat.

– Επεκτείνονται αυτόματα όσα αρχεία .war υπάρχουν κάτω από το webapps.

– Δημιουργείται η ίδια δομή φακέλων κι αρχείων που φτιάξαμε νωρίτερα “χειροκίνητα”.

28

Page 29: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Αποτέλεσμα παραδείγματος Servlet

Σχήμα 1. Αποτελέσματα παραδείγματος servlet.

29

Page 30: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (1/8)

30

Page 31: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (2/8)

31

Page 32: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (3/8)

32

Page 33: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (4/8)

33

Page 34: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (5/8)

34

Page 35: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (6/8)

• Στον παραπάνω κώδικα. – H doPost δημιουργεί και αποστέλλει στον client ένα cookie.

– Σε αυτό αποθηκεύεται η επιλογή της προτιμώμενης διάρκειας ταινίας, που έγινε στον client κι ελήφθη στον server με μήνυμα POST (βλέπε FilmDuration.html παρακάτω). • Έρχεται από τον client μία παράμετρος με όνομα “duration” της

οποίας η τιμή διαβάζεται με την μέθοδο getParameter του αντικειμένου request.

• Φτιάχνεται ένα cookie με το ζεύγος των strings: Διάρκεια της ταινίας και το String των προτεινόμενων ταινιών με αυτή τη διάρκεια.

• Κάθε cookie είναι ένα ζεύγος ονόματος παραμέτρου / τιμής, π.χ. εδώ Two-Hours= Admission.

35

Page 36: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (7/8)

• Στον παραπάνω κώδικα (Συνέχεια).

– Ακολούθως.

• Τίθεται ως χρόνος ζωής του cookie τα 150 δευτερόλεπτα.

• Το cookie προστίθεται (addCookie) στο αντικείμενο response.

• Ορίζονται τα υπόλοιπα στοιχεία της επικεφαλίδας του μηνύματος.

• Με διαδοχικά println διαμορφώνεται το σώμα της απόκρισης.

36

Page 37: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie (8/8)

• Για την δοκιμή των παραπάνω φτιάχνομε και δύο ιστοσελίδες/φόρμες html στον browser μας.

• Και οι δύο έχουν την ιδιότητα της φόρμας, δηλαδή περιέχουν στοιχεία GUI με τα οποία ο χρήστης καθορίζει τις επιλογές του.

– Η πρώτη (FilmDuration.html) θα προκαλέσει αποστολή μηνύματος POST με τις παραμέτρους στο σώμα του και κλήση της doPost() στον server.

– Η δεύτερη (FilmRecommendation.html) αποστέλλει μήνυμα GET με τις παραμέτρους και τα cookies στην επικεφαλίδα του και κλήση της doGet() στον server.

37

Page 38: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

FilmDuration.html

38

Page 39: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

FilmsRecommendation.html

39

Page 40: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie - Web.xml (1/2)

40

Page 41: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie - Web.xml (2/2)

41

Page 42: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie – Συνέχεια (1/5)

• Δημιουργούμε το φάκελο MyExamplesDir. – Κάτω από αυτόν, δημιουργούμε το αρχείο index.html και τον

φάκελο WEB-INF. – Μέσα στο WEB-INF τοποθετούμε το παρακάτω web.xml

(βλέπε επόμενη διαφάνεια) και το φάκελο classes, όπου τοποθετούμε τα HTTPGetServlet.class και CookieServlet.class.

• Το νέο αρχείο WAR δημιουργείται μέσα στον φάκελο MyExamplesDir με την εντολή. – jar -cvfM examplesDir.war WEB-INF index.html.

• Τοποθετούμε το examplesDir.war κάτω από το C:\jakarta-tomcat-3.3.2\webapps.

42

Page 43: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie – Συνέχεια (2/5)

• Δοκιμή.

– Ανοίγουμε με τον web browser την φόρμα FilmDuration.html εισάγοντας το URL: http://localhost:8080/examplesDir/FilmDuration.html.

– Επιλέγουμε μία διάρκεια ταινίας. Με το submit η επιλογή μας φθάνει στον server, ο οποίος την επιβεβαιώνει. • Κλείνουμε τον web browser.

• Υπενθυμίζουμε ότι το HTTP είναι stateless πρωτόκολλο, δηλαδή, ζητήσαμε κάτι και λάβαμε την απόκριση, χωρίς κανένα παραμένον στοιχείο για μελλοντική χρήση.

• Κι όμως εδώ αυτό δεν ισχύει, γιατί χρησιμοποιούμε cookies.

43

Page 44: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie – Συνέχεια (3/5)

Σχήμα 2. Παράδειγμα cookie- βήματα 1 & 2.

44

Page 45: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie – Συνέχεια (4/5)

• Δοκιμή (Συνέχεια). – Ανοίγουμε με τον web browser την φόρμα

FilmRecommendation.html εισάγοντας το URL: http://localhost:8080/examplesDir/FilmRecommendation.html.

– Πατώντας κουμπί “Recommend Films” το cookie αποστέλλεται πίσω στον server. • Έτσι, ο server “θυμάται” την επιλογή μας για την διάρκεια ταινίας.

Η “μνήμη” του όμως είναι στον client, διότι εκεί είχε αποθηκευτεί το cookie.

• Κάνοντας πολλές διαδοχικές επιλογές μέσω του FilmDuration.html δημιουργούνται πολλά cookies. Όσο καθυστερούμε το πάτημα του “Recommend Films”, τόσο “ξεχνιούνται” οι επιλογές μας. – Τα cookies θα διαγράφονται από τον client λόγω της εκπνοής του

χρόνου ζωής τους.

45

Page 46: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Cookie – Συνέχεια (5/5)

Σχήμα 3. Παράδειγμα cookie- βήματα 3 & 4.

46

Page 47: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (1/9)

47

Page 48: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (2/9)

48

Page 49: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (3/9)

49

Page 50: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (4/9)

50

Page 51: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (5/9)

51

Page 52: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (6/9)

• Παρουσιάζονται σημειωμένες οι αλλαγές σε σχέση με το αντίστοιχο servlet που χρησιμοποιεί cookies.

• Το αντικείμενο session της class HttpSession το αποκτούμε από το αντικείμενο request με την εντολή:

HttpSession session = request.getSession(true);.

• Σε αυτό αποθηκεύουμε τα ζεύγη όνομα_παραμέτρου /τιμή που θέλουμε:

session.putValue(dur, getFilms( dur ));.

52

Page 53: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (7/9)

• Όταν ο client επικοινωνήσει ξανά με τον server.

– Ο server αυτομάτως έχει την αναφορά στο σωστό session μέσω του sessionID cookie.

– Έτσι ανακτά το αντικείμενο session με την εντολή: HttpSession session = request.getSession(false);.

– Και βλέπει τι είχε αποθηκευτεί σε αυτό με την εντολή: filmNames=session.getValueNames();.

– Δηλαδή τα ονόματα των παραμέτρων ως ένα vector.

53

Page 54: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (8/9)

• Έτσι, ο server δεν χρειάζεται έξω από αυτή την αντιμετώπιση του GET του συγκεκριμένου client, να θυμάται τίποτα, ενόσω ασχολείται με άλλους clients. – Όταν χρειασθεί ανατρέχει στο συγκεκριμένο αντικείμενο session.

• Αφού αποκτήσαμε τα ονόματα των παραμέτρων ανακτούμε τις τιμές με την εντολή:

String val = (String) session.getValue(filmNames[i]);.

• Πρέπει πάντα να ελέγχουμε αν η αναφορά στο session, δηλαδή το sessionID cookie, έχει πραγματικά σταλεί από τον client. – Σε διαφορετική περίπτωση τίποτα από τα παραπάνω δεν είναι

δυνατόν.

54

Page 55: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session (9/9)

• Μπορούμε να δοκιμάσουμε το SessionServlet με τις δύο φόρμες του client. – FilmDuration.html.

– FilmRecommendation.html.

• Σε αυτή την περίπτωση όμως. – Πρέπει να ανοίξουμε την δεύτερη χωρίς να κλείσουμε τον web

browser, αλλιώς εξαφανίζεται το SessionID cookie από τη μνήμη cache του.

– Με το Transmission Control Protocol (TCP) Monitor μπορούμε να δούμε και τον ρόλο του SessionID cookie.

55

Page 56: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session - Web.xml (1/2)

56

Page 57: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα Session - Web.xml (2/2)

57

Page 58: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Αποτελέσματα παραδείγματος Session (1/2)

Σχήμα 4. Αποτελέσματα παραδείγματος session, βήματα 1 & 2.

58

Page 59: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Αποτελέσματα παραδείγματος Session (2/2)

Σχήμα 5. Αποτελέσματα παραδείγματος session, βήματα 3 & 4.

59

Page 60: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

• Include μίας σελίδας JSP σε μία άλλη σελίδα JSP.

Παράδειγμα JSP (1/13)

60

Page 61: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (2/13)

• Για πλήρη αντιστοιχία παίρνουμε την SessionServlet.class του παραδείγματος με το Session.

• Δημιουργούμε τις σελίδες FilmDuration.jsp και FilmRecommendation.jsp.

• Γράφουμε ως καθαρές .html εντολές, όσα ήταν πριν μέσα σε println().

• Για το δυναμικό μέρος καταφεύγουμε στην Java. – Έτσι έχουμε μέσα σε σελίδα .html τον κώδικα πάντα

περικλειόμενο μεταξύ <%...%>.

– Σε αυτά τα σημεία πρέπει μετά την εκτέλεση να δημιουργείται ένα τμήμα αποδεκτού κειμένου .html.

61

Page 62: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (3/13)

62

Page 63: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (4/13)

63

Page 64: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (5/13)

64

Page 65: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (6/13)

65

Page 66: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (7/13)

• Τέλος, για το deployment τοποθετούμε τις

FilmDuration.jsp και FilmRecommendation.jsp μέσα σε

έναν φάκελο.

– Για παράδειγμα, JspExamples, κάτω από το webapps και

αλλάζουμε τις διευθύνσεις μέσα στις δύο φόρμες

FilmDuration.html και FilmRecommendation.html σε:

• Η συμπεριφορά του παραδείγματος θα είναι η ίδια με

αυτή του παραδείγματος με το session.

http://localhost:8080/jspExamples/ FilmDuration.jsp

http://localhost:8080/jspExamples/ FilmRecommendation.jsp .

66

Page 67: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (8/13)

• Παρατηρούμε την αισθητή καθυστέρηση

ανταπόκρισης. – Αλλά μόνο την πρώτη φορά που ανοίγουμε την σελίδα

.jsp.

– Ό λόγος είναι ότι τότε γίνεται η δημιουργία της κλάσης

ενός ισοδύναμου servlet.

• Από το σημείο αυτό, το servlet που δημιουργήθηκε

μένει στην μνήμη. – Έτοιμο να ανταποκριθεί ταχύτατα όπως και στα

προηγούμενα παραδείγματα.

67

Page 68: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (9/13)

• Ακολουθούν οι ιστοσελίδες DestinationSelection_jsp.html

και CitiesRecommendation_jsp.html.

– Τις τοποθετούμε στο webapps.

– Καλούν τις σελίδες Continent.jsp και Cities.jsp, αντίστοιχα.

68

Page 69: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (10/13)

69

Page 70: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (11/13)

Σχήμα 6. Παράδειγμα JSP, βήματα 1 & 2.

70

Page 71: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (12/13)

71

Page 72: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Παράδειγμα JSP (13/13)

Σχήμα 7. Παράδειγμα JSP, βήματα 3 & 4.

72

Page 73: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Eclipse - Servlets - Tomcat Προαπαιτούμενα (1/2)

• Λήψη του Java Development Kit (JavaJDK) από την διεύθυνση και εγκατάσταση.

– http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html.

• Δεξί κλικ στο My Computer->properties->advance->Environment Variables->path και εισαγωγή στο τέλος ;C:\Program Files\Java\jdk1.7.0_10\bin.

• Στην συνέχεια μπορείτε να προχωρήσετε με την εγκατάσταση το Apache Tomcat.

73

Page 74: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Eclipse - Servlets - Tomcat Προαπαιτούμενα (2/2)

• Λήψη του Apache Tomcat από την διεύθυνση:

– http://apache.cc.uoc.gr/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.exe.

• Εγκατάσταση του Apache Tomcat.

74

Page 75: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (1/7)

Σχήμα 8. Εγκατάσταση του Apache Tomcat (βήμα 1).

75

Page 76: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (2/7)

Σχήμα 9. Εγκατάσταση του Apache Tomcat (βήμα 2).

76

Page 77: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (3/7)

• Στο συγκεκριμένο σημείο επιλέγουμε και τα Examples.

Σχήμα 10. Εγκατάσταση του Apache Tomcat (βήμα 3).

77

Page 78: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (4/7)

Σχήμα 11. Εγκατάσταση του Apache Tomcat (βήμα 4).

78

Page 79: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (5/7)

• Σε περίπτωση που θέλουμε να αλλάξουμε την JVM κάνουμε κλικ στο κουμπί δεξιά κι επιλέγουμε τον φάκελο εγκατάστασης.

Σχήμα 12. Εγκατάσταση του Apache Tomcat (βήμα 5).

79

Page 80: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (6/7)

Σχήμα 13. Εγκατάσταση του Apache Tomcat (βήμα 6).

80

Page 81: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εγκατάσταση του Apache Tomcat (7/7)

• Πατάμε Finish ώστε να τελειώσει η εγκατάσταση.

Σχήμα 14. Εγκατάσταση του Apache Tomcat (βήμα 7).

81

Page 82: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Ρύθμιση της Java (1/3) • Ρύθμιση του JAVA_HOME.

• Δεξί κλικ στο My Computer->properties-> advance->Environment Variables και στο.

• System variables πατάμε το κουμπί New.

Σχήμα 15. Ρύθμιση της Java (βήμα 1).

82

Page 83: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Ρύθμιση της Java (2/3)

• Στο παράθυρο που ανοίγει δίνουμε ως Variable name : JAVA_HOME κι ως Variable value: C:\Program Files\Java\jdk1.7.0_10.

• Σε περίπτωση που ο κατάλογος εγκατάστασης της Java διαφέρει αλλάζεται κατάλληλα τον κατάλογο εγκατάστασης.

Σχήμα 16. Ρύθμιση της Java (βήμα 2).

83

Page 84: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Ρύθμιση της Java (3/3)

• Δεξί κλικ στο My Computer->properties->advance-> Environment Variables και στο System variables πατάμε το κουμπί New.

• Στο παράθυρο που ανοίγει δίνουμε ως Variable name : CLASSPATH κι ως Variable value: C:\Program Files\Java\jre7\lib.

Σχήμα 17. Ρύθμιση της Java (βήμα 3).

84

Page 85: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Εκκίνηση του Tomcat

• Τέλος δεξί κλικ στην μπάρα εργασιών και εκκίνηση του Tomcat.

Σχήμα 18. Εκκίνηση του Tomcat.

85

Page 86: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Άνοιγμα της σελίδας του Tomcat

• Τέλος, πληκτρολογώντας στον browser την διεύθυνση http://localhost:8080 θα πρέπει να δούμε την σελίδα του Tomcat.

86

Page 87: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (1/6)

• Ανοίγουμε το Eclipse και πάμε File->New->Other-> Web->Dynamic Web Project.

• Ως όνομα του Project δώστε MyServlet και Target Runtime επιλέξτε New Runtime.

• Από το παράθυρο που θα ανοίξει επιλέξτε Apache Tomcat 7 κι ορίστε τον φάκελο εγκατάστασης του Apache-tomcat.

Σχήμα 19. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 1).

87

Page 88: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (2/6)

• Στο Web Module επιλέξτε Generate web.xml deployment descriptor και πατήστε Finish.

Σχήμα 20. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 2).

88

Page 89: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (3/6)

• Στο Eclipse επιλέγουμε Servers κάνουμε κλικ στο new server wizard.

Σχήμα 21. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 3).

89

Page 90: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (4/6)

• Από το παράθυρο που θα ανοίξει επιλέγουμε Tomcat v7.0 Server και Finish.

Σχήμα 22. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 4).

90

Page 91: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (5/6)

• Στην συνέχεια δεξί κλικ επάνω στο Project και κλικ στο New->Servlet.

Σχήμα 23. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 5).

91

Page 92: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Δημιουργία εφαρμογής Servlets με Eclipse (6/6)

• Στο παράθυρο που θα ανοίξει δίνουμε σαν όνομα κλάσης το CookieServlet και πατάμε Finish.

Σχήμα 24. Δημιουργία εφαρμογής Servlets με Eclipse (βήμα 6).

92

Page 93: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Βιβλιογραφία

1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ..

2. «Προγραμματισμός Internet και World Wide Web», Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ..

3. «Πλήρες εγχειρίδιο της Java 6», Lemay C, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007.

93

Page 94: Servlets - JSPs παραδείγματα...3 Servlets και Java Server Pages - JSPs Παραίμανα) Σκοποί νόνηνας •ε αή ην ενόη α παροσιάζον

Τέλος Ενότητας