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

νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

Ενότητα 5: Servlets και JSPs

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

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

Page 2: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

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

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

2

Page 3: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

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

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

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

3

Page 4: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlets και Java Server Pages (JSPs)

Page 5: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Σε αυτή την ενότητα ασχολούμαστε με τα Servlets και τις Java Server Pages.

5

Page 6: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Τι είναι ένας Web Server.

• Βήματα αίτησης / απάντησης.

• Στατικές σελίδες.

• Δυναμικές σελίδες.

• Servlet.

• Η λειτουργία ενός Servlet.

6

Page 7: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Ένα απλό Servlet.

• Η δύναμη των Servlet.

• Διαδικαστικά.

• Με ποιους τρόπους μπορούμε να γράψουμε Servlets.

• GenericServlet και HttpServlet.

• Αλληλοεπίδραση με τον πελάτη.

7

Page 8: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Αιτήσεις Hypertext Transport Protocol (HTTP).

• Ο κύκλος ζωής ενός Servlet.

• Η μέθοδος init.

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

• Η μέθοδος destroy.

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

8

Page 9: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Πως να τρέξουμε ένα servlet.

• Τι είναι η σύνοδος (session) του χρήστη.

• Παρακολούθηση της συνόδου του χρήστη.

• Cookies.

• Session.

• Servlets και Database Connectivity.

9

Page 10: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

• Τι άλλο μπορούμε να κάνουμε με τα Servlets.

• Οι σελίδες JSP και οι λειτουργίες τους.

• Σύγκριση μεταξύ Servlets και JSPs.

• Στοιχεία σεναρίων (scripts) JSP σελίδων.

• Προκαθορισμένες μεταβλητές.

• Αρχεία και JSPs σε μία JSP σελίδα.

10

Page 11: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Τι είναι ένας Web Server

• Web Server. – Δέχεται HTTP requests. – Επιστρέφει ως απάντηση Hyper Text Markup

Language HTML αρχεία.

• Δημοφιλέστεροι Web Servers. – Apache web server (της Apache Foundation) κι ο

Internet Information Services - IIS (της Microsoft).

• Είναι αυτοί που συνήθως απαντάνε όταν γράφουμε μια διεύθυνση σε ένα φυλλομετρητή (web browser).

11

Page 12: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Βήματα αίτησης / απάντησης

Σχήμα 1. Βήματα αίτησης / απάντησης.

12

Page 13: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Στατικές σελίδες

• Στατική είναι μία σελίδα που το περιεχόμενό της δεν μπορεί να αλλάξει από σύνοδο σε σύνοδο (session).

• Το μοντέλο αυτό ήταν αρκετό στο παρελθόν.

13

Page 14: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Δυναμικές σελίδες

• Καθώς οι υπηρεσίες στο Διαδίκτυο πλήθαιναν και οι τοπικές βάσεις δεδομένων μεταφέρονταν για να υποστηρίξουν τις υπηρεσίες, δημιουργήθηκε η ανάγκη δυναμικών σελίδων.

14

Page 15: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlet (1/2)

• Τι είναι ένα Servlet. – Ενότητες κώδικα Java. – Τύπου αίτησης/απόκρισης. – Εκτελούνται σε web servers και τους επεκτείνουν

κατά κάποιο τρόπο.

• Αποτελούν το Server Side τμήμα της Java. – Σε αντίθεση με τα Applets που αποτελούν το Client

Side τμήμα της Java.

15

Page 16: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlet (1/3)

• Αποτελούν το Server Side τμήμα της Java (Συνέχεια). – Τα Servlets, όπως και τα applets, συνήθως δεν έχουν main μέθοδο.

• Χρησιμοποιούνται σε εφαρμογές που απαιτούν προεπεξεργασία. – Δηλαδή κάποια επεξεργασία των δεδομένων που θα εμφανιστούν

πριν την αποστολή τους στον αιτητή.

• Είναι κατά κάποιο τρόπο CGIs αλλά γραμμένα σε Java, – Κληρονομούν όλα τα πλεονεκτήματα που προσφέρει η Java.

16

Page 17: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlet (2/3)

• Ένα servlet είναι μια κλάση όπως όλες οι άλλες – Με την διαφορά ότι κάνει implement το javax.servlet.Servlet

interface.

– Τα περισσότερα servlets κάνουν επεκτείνουν (extend) την javax.servlet.http.HttpServlet

– Σπανιότερα κάνουν επεκτείνουν την javax.servlet.GenericServlet.

• Servlet API: http://java.sun.com/javaee/5/docs/api/.

17

Page 18: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία ενός Servlet

Σχήμα 2. Η λειτουργία ενός servlet.

18

Page 19: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Ένα απλό Servlet

19

Page 20: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η δύναμη των Servlet (1/2)

1. Είναι ανεξάρτητα από την πλατφόρμα (platform independence).

2. Εκμεταλλεύονται πλήρως τα Java API, rmi και database connectivity.

3. Εύκολη προσθήκη συστατικών δημιουργημένων από τρίτους (3rd party components).

4. Αποδοτικότητα κι Αντοχή. – Μένουν στην μνήμη μεταξύ διαδοχικών

καλεσμάτων.

20

Page 21: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η δύναμη των Servlet (2/2)

5. Ασφάλεια Κώδικα. – Garbage Collector, Διαχείριση Εξαιρέσεων.

6. Κομψότητα. – Αντικειμενοστραφής προσέγγιση, Απλότητα, Clean

Code, Modular.

7. Εύκολη ενσωμάτωση νέων υπηρεσιών.

21

Page 22: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Διαδικαστικά

• Όταν ο server (για παράδειγμα Tomcat) δέχεται την αίτηση από τον πελάτη. – Καλεί το σχετικό servlet δίνοντας του ως είσοδο τις

παραμέτρους του χρήστη.

• Το servlet εμπεριέχει την λογική που πρέπει να εκτελεστεί με είσοδο τις παραμέτρους του χρήστη. – Απαντάει επιστρέφοντας μια HTML σελίδα.

• Η σελίδα αυτή είναι δυναμική. – Παρήχθη μόλις ζητήθηκε και με βάση τις εκάστοτε

παραμέτρους του χρήστη.

22

Page 23: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Με ποιους τρόπους μπορούμε να γράψουμε Servlets; (1/2)

• Καλώντας άμεσα τα classes. • Τοποθετώντας τον παρακάτω κώδικα Java στον server και κάνοντάς τον

compile .

23

Page 24: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Με ποιους τρόπους μπορούμε να γράψουμε Servlets; (2/2)

• Java Server Pages JSPs. – Προσθήκη snippets servlet code απευθείας στις *.jsp σελίδες

(Scriptlets). – Παρόμοιος τρόπος με την ASP (Active Server Pages).

24

Page 25: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

GenericServlet και HttpServlet

• Όλα τα servlets υλοποιούν τη διεπαφή (interface) τους μέσω μίας από τις παρακάτω κλάσεις.

– GenericServlet (javax.servlet package).

• Γενικά servlets ανεξάρτητα πρωτοκόλλου.

– HttpServlet (javax.servlet.http package).

• Http servlets.

25

Page 26: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αλληλοεπίδραση με τον πελάτη (1/2)

• Όταν ένα servlet δέχεται ένα κάλεσμα από τον πελάτη (client), λαμβάνει δύο αντικείμενα (objects). – ServletRequest.

• Εξασφαλίζει το αίτημα από τον πελάτη προς τον server.

– ServletResponse. • Εξασφαλίζει την απόκριση από το servlet πίσω στον πελάτη.

– Τα αντικείμενα ServletRequest και ServletResponse είναι διεπαφές που ορίζονται στο πακέτο javax.servlet.

26

Page 27: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αλληλοεπίδραση με τον πελάτη (2/2)

• Βασικές μέθοδοι του HttpServlet. – doGet. – doPost.

27

Page 28: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αιτήσεις HTTP (1/2)

• Είναι συνήθως GET ή POST . – Η HTML ετικέτα <form> περιέχει την ιδιότητα action, που

μπορεί να λάβει τις τιμές “get” ή “post”. – Στην περίπτωση της “GET” οι παράμετροι αποστέλλονται

μετά από το σύμβολο ? του URL. • Παράδειγμα: http://www.google.com/search?hl=en&ie=UTF-

8&oe=UTF-8&q=servlets. • Το σύμβολο & διαχωρίζει τις διάφορες παραμέτρους μεταξύ

τους. • Μόνο ένας συγκεκριμένος αριθμός χαρακτήρων μπορεί να

αποσταλεί με αυτό τον τρόπο.

28

Page 29: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αιτήσεις HTTP (2/2)

• Είναι συνήθως GET ή POST (Συνέχεια). – Αντίθετα η “POST” μπορεί να στείλει θεωρητικά άπειρα

Bytes.

29

Page 30: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Ο κύκλος ζωής ενός Servlet

• Κάθε servlet έχει τον ίδιο κύκλο ζωής.

– Ο server το φορτώνει (load) και το αρχικοποιεί (initialize).

– Το servlet δέχεται μηδέν ή και περισσότερα client requests.

– Ο server το κάνει remove.

–Ορισμένοι servers εκτελούν αυτό το βήμα μόνο όταν κάνουν shut down.

30

Page 31: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η μέθοδος init

• Η μέθοδος init μπορεί να χρησιμοποιηθεί για την αρχικοποίηση ενός servlet. – Εκτελείται πριν εκτελεσθεί η doGet ή η doPost ή

οποιαδήποτε άλλη μέθοδος. – Tην πρώτη φορά που δημιουργείται ένα στιγμιότυπο.

• Υπάρχουν δύο υπογραφές της. – public void init(). – public void init(ServletConfig) για πρόσβαση σε

πληροφορίες σχετικά με τις ρυθμίσεις ενός servlet.

31

Page 32: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Παράδειγμα init

32

Page 33: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η μέθοδος destroy

• Η μέθοδος destroy καλείται από το servlet container. – Πριν ένα servlet γίνει μη διαθέσιμο και αφού έχουν

τερματισθεί όλα τα threads που το προσπελάζουν. – Ή έχει λήξει η περίοδος μη χρήσης του στιγμιότυπου για μια

εφαρμογή.

• Αυτή η μέθοδος αποτελεί το κατάλληλο σημείο για εργασίες εκκαθάρισης (clean up) όπως. – Αποδέσμευση μνήμης. – Αποθήκευση στοιχείων που θα πρέπει να αποθηκευθούν και

βρίσκονται στην μνήμη του servlet.

33

Page 34: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Παράδειγμα destroy

34

Page 35: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Πως να τρέξουμε ένα servlet (1/4)

• Διαδικασία. 1. Να εγκαταστήσουμε ένα servlet engine.

• Για παράδειγμα Sun’s JavaServer ή Tomcat.

2. Να προμηθευτούμε το Java Servlet API το οποίο περιέχει τις κλάσεις.

javax.servlet

javax.servlet.http

35

Page 36: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Πως να τρέξουμε ένα servlet (2/4)

• Παρατηρήσεις. – O Javaserver που θα προμηθευτούμε συνήθως τα

περιέχει. – Στον TOMCAT είναι το

$CATALINA_HOME/common/lib/servlet.api. • Να γράψουμε το servlet class στην java και να το κάνουμε

compile. • Να τοποθετήσουμε το class σε ένα directory του servlet

engine (Web directory).

36

Page 37: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Πως να τρέξουμε ένα servlet (3/4)

• Παρατηρήσεις (Συνέχεια). – Στον tomcat είναι το $CATALINA_HOME/

webapps/myapp/WEB-INF/classes/. • Να ξεκινήσουμε το servlet engine. • To servlet engine τώρα ανταποκρίνεται σε αιτήσεις που

γίνονται στο port 8080. – Για παράδειγμα:

http://ServerName:8080/servlets/Helloworld.

37

Page 38: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Πως να τρέξουμε ένα servlet (4/4)

• Μπορούμε να εκτελέσουμε ένα servlet απευθείας από κάποια εργαλεία Java όπως τα. – Symantec VisualCafe 3.0.

– Netbeans.

• Έχει δική του μηχανή για servlets (servlet engine).

38

Page 39: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Τι είναι η σύνοδος (session) του χρήστη

• Το HTTP είναι ένα stateless πρωτόκολλο.

– Κάθε φορά που ο χρήστης ζητά μία σελίδα από έναν web server.

• Η αίτηση δεν περιέχει πληροφορίες σχετικά με το ποιος την κάνει ή ποιες αιτήσεις είχε κάνει νωρίτερα.

– Δημιουργείται προβλήματα όταν θέλουμε να παρακολουθήσουμε τις ενέργειες του χρήστη σε διαδοχικές σελίδες που επισκέπτεται σε έναν ιστότοπο.

39

Page 40: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Παρακολούθηση της συνόδου του χρήστη (1/2)

• Cookies. – Αποθηκεύονται στον browser. – Υπάρχει υψηλού επιπέδου API με μεθόδους για την

διαχείριση των Cookies. • Για παράδειγμα το javax.servlet.http.Cookie. • Παρέχει τις μεθόδους

HttpServletResponse.addCookie(Cookie cookie) και HttpServletRequest.getCookies().

40

Page 41: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Παρακολούθηση της συνόδου του χρήστη (2/2)

• Session. – Διατηρείται στον web server. – Κάθε φορά που ανοίγουμε τον browser

δημιουργείται νέο. – Ο web server καθορίζει τον χρόνο διάρκειας του

session (TTL- Time To Live).

• Επανεγγραφή του URL (URL rewriting). • Κρυμμένα πεδία φόρμας.

41

Page 42: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Cookies (1/2)

• Με τα cookies, ο server μπορεί να αποθηκεύσει πληροφορία στον δίσκο του client.

– Η πληροφορία αυτή, παραμένει προσβάσιμη από τον server για κάποιο χρόνο και κάτω από ορισμένες συνθήκες.

– Έτσι ένας server μπορεί.

• Εξυπηρετώντας μεγάλο αριθμό clients, να συμπεριφέρεται στον καθένα με ελαφρά εξειδικευμένο τρόπο.

• Χωρίς ο ίδιος ο server να είναι υποχρεωμένος να διατηρεί ένα τεράστιο όγκο πληροφορίας.

42

Page 43: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Cookies (2/2)

• Τυπική περίπτωση.

– Όταν επισκεπτόμαστε μία ιστοσελίδα.

– Την επομένη ημέρα και βλέπουμε ότι αυτή θυμάται τις επιλογές που κάναμε την προηγουμένη.

– Η πληροφορία αυτή δεν κρατήθηκε στον server, αλλά στον client.

– Άλλωστε, είναι χρήσιμη μόνον όταν ο συγκεκριμένος client επανασυνδεθεί στον ίδιο server.

43

Page 44: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Session (1/5)

• Η δημιουργία ενός αντικειμένου της κλάσης HttpSession στον server, είναι ένας άλλος τρόπος να κρατείται πληροφορία σχετική με τη σύνοδο. – Εδώ, η πληροφορία κρατείται στον server.

• Σε αυτή την περίπτωση. – Με την πρώτη άφιξη ενός POST δημιουργούμε αντικείμενο

της HttpSession με την μέθοδο request.getSession(true) του request object.

44

Page 45: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Session (2/5)

• Πλέον, σε κάθε άφιξη GET, η ίδια μέθοδος με παράμετρο false, μας επιστρέφει την αναφορά στο αντικείμενο που δημιουργήσαμε. – Αν δηλαδή το mySession είναι ένα αντικείμενο HttpSession και

το valueNames ένα array από String, με τις εντολές.

λαμβάνουμε τα ονόματα των παραμέτρων που κρατούνται

στον server στα πλαίσια του session.

• Η αναφορά στο αντικείμενο mySession διατηρείται μέσω ενός cookie. – Του sessionID με τιμή έναν τυχαίο αριθμό δημιουργούμενο

από τον server.

mySession = request.getSession(false); valueNames = mySession.getValueNames() ;

45

Page 46: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Session (4/5)

• Το sessionID cookie διατηρείται στη μνήμη cache του browser κι όχι στον δίσκο του client.

• Αυτό σημαίνει ότι αν κλείσουμε τον browser, – Χάνεται το αποθηκευμένο sessionID. – Έτσι χάνεται κάθε τρόπος αναφοράς από τον client

στο αντικείμενο session του server.

• Στην μεριά του server. – Το αντικείμενο session θα διαγραφεί με timeout, της

τάξεως των 20 λεπτών.

46

Page 47: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Session (5/5)

• Συνοψίζοντας. – Τα cookies είναι ζεύγη ονόματος/τιμής που αποθηκεύονται

στον δίσκο του client και διατηρούνται εκεί για χρονικό διάστημα timeout.

– Το sessionID cookie είναι ένα ζεύγος sessionID/τυχαίος αριθμός που αποθηκεύεται στην cache του browser του client και διατηρείται εκεί όσο ο browser παραμένει ανοικτός. • Το sessionID αποστέλλεται ως παράμετρος σε κάθε αποστολή

από τον client στον server. – Ώστε να μπορεί αυτός να συνδέσει τον browser με το

συγκεκριμένο session. • Αν για κάποιο συγκεκριμένο διάστημα δεν έρχεται η

παράμετρος αυτή από τον client στον server, τότε σβήνεται στον server το αντικείμενο session.

47

Page 48: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlets και Database Connectivity (1/2)

• Τα Servlets μπορούν να συνδεθούν με βάσεις δεδομένων με την χρήση drivers. – Σε άλλες πλατφόρμες με JDBC, σε Windows με Java Database

Connectivity API - Open Database Connectivity (JDBC-ODBC) bridge.

– Το ίδιο ισχύει και για όλα τα αλλά προγράμματα Java.

• Τα JDBC είναι database independent. – Π.χ. με αλλαγή 2 γραμμών κώδικα μπορούμε να αλλάξουμε

την Sybase βάση μας σε Oracle. • Χωρίς αλλαγή του υπόλοιπου κώδικα.

48

Page 49: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Servlets και Database Connectivity (2/2)

• Μπορούμε να επεξεργαστούμε στοιχεία από διαφορετικές και ανομοιογενείς βάσεις δεδομένων μέσω του κώδικα μας.

• Κύριο πλεονέκτημα.

– Τα Servlets μπορούν να διατηρούν Open Database Connections.

– Έτσι, πολλά requests μπορούν να εξυπηρετηθούν από ένα κάλεσμα, σε αντίθεση με τα Computer-generated imagery (CGI).

49

Page 50: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Τι άλλο μπορούμε να κάνουμε με τα Servlets; (1/2)

• Τρόποι επικοινωνίας ενός servlet με ένα άλλο servlet.

1. Servlet Chaining (Κάνοντας διαδοχικά Post, Get).

• Μπορούμε να ενώσουμε μια σειρά από servlets, με τον ίδιο τρόπο που θα το κάναμε με τα CGI’s.

– θα μπορούσε για παράδειγμα να είναι μια διαδοχική καταχώρηση δεδομένων.

50

Page 51: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Τι άλλο μπορούμε να κάνουμε με τα Servlets; (2/2)

2. Servlet Interface through a Database.

– Καταχωρούμε στοιχεία από ένα servlet σε μια βάση δεδομένων.

– Μπορεί να τα ανακτήσει ένα άλλο servlet ταυτόχρονα.

• Δίνεται η εικόνα ότι επικοινωνούν ταυτόχρονα.

– Για παράδειγμα για ένα Chat Room.

51

Page 52: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Οι σελίδες JSP (1/3)

• Σελίδες HTML που εκτός των ετικετών HTML περιέχουν και ειδικές ετικέτες με κώδικα Java.

• Οι ετικέτες αυτές είναι της μορφής:

<% java κώδικας %>.

• Περιέχουν. – Πρότυπα δεδομένα. – Δυναμική πληροφορία.

52

Page 53: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Οι σελίδες JSP (2/3)

• Μπορούν να χρησιμοποιήσουν.

– JavaBeans. • Προτυποποιημένες σχετικά με το σχεδιασμό και

την ονοματολογία τους κλάσεις Java. – Χρησιμοποιούνται για την υλοποίηση συγκεκριμένων

λειτουργιών, όπως επικοινωνία με μία βάση δεδομένων.

53

Page 54: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Οι σελίδες JSP (3/3)

• Μπορούν να χρησιμοποιήσουν (Συνέχεια). – Tag Libraries.

• Tag που μπορεί να ορίσει ο προγραμματιστής. • Αντιστοιχούν σε κώδικα κι εκτελούν διάφορες λειτουργίες. • Είναι ιδιαίτερα χρήσιμα για δημιουργία

επαναχρησιμοποιήσιμων τμημάτων κώδικα.

54

Page 55: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία των JSP (1/5)

Σχήμα 3. Η λειτουργία των JSP.

55

Page 56: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία των JSP (2/5)

• Κάθε σελίδα JSP βασίζεται στα servlets. – Η μηχανή της JSP παράγει από την .jsp σελίδα πηγαίο κώδικα

servlet.

• Την πρώτη φορά που καλείται. – Μεταγλωττίζεται αυτός ο πηγαίος κώδικας σε ένα class file.

• Για την τρέχουσα αλλά και για μελλοντική χρήση.

56

Page 57: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία των JSP (3/5)

• Συγκεκριμένα έχουμε τα παρακάτω βήματα. 1. Ένας web browser αναζητά (request) μία σελίδα .jsp. 2. Ο server βρίσκει την ζητούμενη σελίδα .jsp και την

παραδίδει στο μηχανή JSP (JSP Servlet Engine). 3. Την πρώτη φορά η σελίδα .jsp περνιέται από τον

σχετικό parser. • Τις άλλες φορές εκτελείται το βήμα 7.

57

Page 58: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία των JSP (4/5)

4. Δημιουργείται ο πηγαίος κώδικας του servlet από το αρχείο .jsp. – Δημιουργείται αυτόματα μία σειρά από println statements.

• Ισοδύναμα ως προς την τελική εμφάνιση με τα γραμμένα σε HTML.

5. Ο πηγαίος κώδικας μεταγλωττίζεται σε class.

6. Δημιουργείται το servlet με κλήση των μεθόδων init και service.

58

Page 59: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Η λειτουργία των JSP (5/5)

7. Τα παραγόμενα από το servlet δεδομένα αποστέλλονται από τον server στον client. – Για παρουσίαση ως κοινή HTML σελίδα.

59

Page 60: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Σύγκριση μεταξύ Servlets και JSPs (1/2)

• Στα Servlets.

• Το παραγόμενο HTML «εκτυπώνεται» από java κλάσεις.

• Στις σελίδες JSP.

• Java κώδικας εμπεριέχεται σε HTML κώδικα.

Σχήμα 4. Σύγκριση μεταξύ Servlets και JSPs.

60

Page 61: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Σύγκριση μεταξύ Servlets και JSPs (2/2)

• Τα servlets αν και πανίσχυρα έχουν το παρακάτω μειονέκτημα.

– Αν κάτι πρέπει να αλλάξει στην παραγόμενη δυναμική σελίδα, όπως το χρώμα του background.

– Πρέπει η κλάση να ξαναγίνει compile και να αρχικοποιηθεί πάλι ο servlet container.

• Οι σελίδες JSP προσπερνούν αυτό το πρόβλημα.

61

Page 62: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Στοιχεία σεναρίων (scripts) JSP σελίδων (1/4)

• 3 είδη.

– Εκφράσεις (expressions).

– Τμήματα κώδικα (scriptlets).

– Δηλώσεις (declarations).

62

Page 63: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Στοιχεία σεναρίων (scripts) JSP σελίδων (2/4)

• Εκφράσεις (expressions).

– Είναι εντολές Java που περιέχονται μεταξύ των σημάνσεων <%= και %>.

– Αποτιμούνται άμεσα όπου εμφανίζονται και το αποτέλεσμά τους εισάγεται σαν κείμενο στο σημείο όπου εμφανίζονται.

• Παράδειγμά: <%= 17 + 12 %>.

– Στο html το αποτέλεσμα θα είναι 29.

63

Page 64: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

• Τμήματα κώδικα (scriptlets). – Είναι τμήματα κώδικα Java που περιέχονται μεταξύ των

σημάνσεων <% και %>. – Χρησιμοποιούνται για δηλώσεις μεταβλητών, εντολών κλπ. . – Οι μεταβλητές που δηλώνονται σε αυτά, είναι τοπικές

μεταβλητές και άρα ασφαλής σε ταυτόχρονη προσπέλαση. • Αυτό μπορεί να έχει συνέπειες στην απόδοση. • Για το λόγο αυτό υπάρχουν οι δηλώσεις.

Στοιχεία σεναρίων (scripts) JSP σελίδων (3/4)

64

Page 65: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Στοιχεία σεναρίων (scripts) JSP σελίδων (4/4)

• Δηλώσεις (declarations).

– Είναι δηλώσεις μεταβλητών αλλά και μεθόδων που περιέχονται μεταξύ των σημάνσεων <%! και %>.

– Οι δηλώσεις αυτών των μεταβλητών και μεθόδων έχουν εμβέλεια όλη την JSP σελίδα και όχι μόνο την μέθοδο εξυπηρέτησης του πελάτη (get / post).

– Δεν μπορούν να παράγουν output στον χρήστη.

– Αν πρόκειται για μεταβλητές. • Δεν είναι ασφαλείς σε περίπτωση ταυτόχρονης προσπέλασης,

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

65

Page 66: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (1/6)

• Υπάρχουν κάποιες προκαθορισμένες μεταβλητές. – Δημιουργούνται αυτόματα στην μέθοδο εξυπηρέτησης (post ,

get) μιας σελίδας JSP.

• Οι μεταβλητές αυτές είναι διαθέσιμες για τους προγραμματιστές σελίδων JSP. – Μπορούν να τις χρησιμοποιήσουμε μέσα από τμήματα

κώδικα (scriptlets) κι εκφράσεις (JSP expressions).

• Οι μεταβλητές ΔΕΝ μπορούν να χρησιμοποιηθούν σε δηλώσεις μεθόδων (declarations). – Οι μέθοδοι που δηλώνονται δεν έχουν ορατότητα στις τοπικές

μεταβλητές της μεθόδου εξυπηρέτησης.

66

Page 67: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (2/6)

• Request.

– Είναι το αντίστοιχο του HttpServletRequest αντικειμένου που είναι παράμετρος στην μέθοδο εξυπηρέτησης της αίτησης του χρήστη (π.χ. doGet ή doPost) για τα servlets.

– Π.χ. αν θέλουμε να ανακτήσουμε την τιμή μιας παραμέτρου που δίνεται από μία φόρμα σε μία JSP σελίδα καλούμε την request.getParameter(<όνομα_παραμέτρου>).

• Response.

– Είναι το αντίστοιχο του HttpServletResponse αντικειμένου που είναι παράμετρος στην μέθοδο εξυπηρέτησης της αίτησης του χρήστη (π.χ. doGet ή doPost) για τα servlets.

67

Page 68: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (3/6)

• Out.

– Είναι το αντίστοιχο του PrintWriter που στα servlets ανακτούμε καλώντας την μέθοδο getWriter() στο αντικείμενο HttpServletResponse.

68

Page 69: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (4/6)

• Session.

– Είναι ένα προ-δημιουργημένο αντικείμενο τύπου HttpSession.

– Παρέχει τις μεθόδους getAttribute και setAttribute, για την ανάκτηση κι αποθήκευση ιδιοτήτων αντίστοιχα στο session του χρήστη με τον δικτυακό τόπο.

– Για να απαγορεύσετε την συμμετοχή μίας σελίδας JSP σε sessions.

• Μπορείτε να χρησιμοποιήσετε την οδηγία σελίδας page, θέτοντας την ιδιότητα session στην τιμή false ως εξής:

<%@page session= “false”%>.

• Η προκαθορισμένη τιμή είναι true.

69

Page 70: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (5/6)

• Application.

– Είναι το αντικείμενο ServletContext.

• Στα servlets επιστρέφεται από την μέθοδο ServletConfig.getContext().

• Config.

– Αυτό είναι το αντικείμενο ServletConfig της σελίδας.

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

70

Page 71: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Προκαθορισμένες μεταβλητές (6/6)

• pageContext. – Είναι αντικείμενο javax.servlet.jsp.PageContext.

– Η κυριότερη δυνατότητα που παρέχεται είναι η αποθήκευση και η ανάκτηση αντικειμένων μέσω των μεθόδων getAttribute και setAttribute. • Σε τέσσερις διαφορετικές εμβέλειες (scopes), που μπορεί να είναι

application, page, session και request.

• Page. – Αυτό το αντικείμενο είναι συνώνυμο με το this για το

παραγόμενο servlet.

71

Page 72: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αρχεία και JSPs σε μία JSP σελίδα (1/2)

• Μπορούμε να περιλάβουμε σε μία σελίδα JSP περιεχόμενα που βρίσκονται σε άλλες σελίδες JSP ή αρχεία HTML.

– Εισάγουμε σε οποιοδήποτε σημείο της σελίδας την εντολή include με την ακόλουθη σύνταξη:

<%@ include file= “όνομα_αρχείου” %>.

– Το όνομα αρχείου μπορεί να έχει μία σχετική διαδρομή.

• Η συμπερίληψη του αρχείου γίνεται κατά την διάρκεια της μεταγλώττισης της JSP σελίδας σε servlet.

72

Page 73: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

Αρχεία και JSPs σε μία JSP σελίδα (2/2)

• Αυτό έχει μία σημαντική συνέπεια.

– Αν αλλάξουν τα περιεχόμενα του περιλαμβανόμενου αρχείου.

• Οι σελίδες που το περιλαμβάνουν δεν θα αλλάξουν παρά μόνο αν γίνει ξανά η μεταγλώττιση τους.

73

Page 74: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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

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.

74

Page 75: νόη α 5: Servlets και JSPs - openclass.teiwm.gr · 3 . Servlets και Java Server ... (session) ο χρήση . •Παρακολούθηση ης σνόδο ο χρήση

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