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

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

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

Java Servlets: Principles and Programming 1/19

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

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

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

Πληροφορική στιςεπιχειρήσεις

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

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

Περιεχόμενα ΕΥΧΑΡΙΣΤΙΕΣ ΕΙΣΑΓΩΓΗ Σχετικά με τους συγγραφείς...24

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

Τα βασικά για Servlet (Μέρος

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

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

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

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

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

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

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

Cloud Computing Database with Amazon SimpleDB

Τεχνολογίες Ανάπτυξης Εφαρμογών στο WEB

Σύστημα για on-line δημοπρασίες & πωλήσεις

Εισαγωγή στη J2EE. Μέρος 2

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

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

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

άσκηση Hide UI Elements 7.2 Try and Catch

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

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

Κατανεμημένα Συστήματα. Javascript LCR example

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ» της ΜΑΡΙΑΣ ΜΟΥΡΑΤΙΔΟΥ

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Επιβλέπων Καθηγητής: Αλέξανδρος Χατζηγεωργίου Εξεταστές: Χρήστος Γεωργιάδης. Τμήμα Εφαρμοσμένης Πληροφορικής

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

(C) 2010 Pearson Education, Inc. All rights reserved.

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

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

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

Πληροφορίες για το μάθημα

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

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

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

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΥΛΟΠΟΙΗΣΗ ΔΙΑΔΙΚΤΥΑΚΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ SUPER MARKET (e-shop), ΜΕ ΧΡΗΣΗ ΤΩΝ ΤΕΧΝΟΛΟΓΙΩΝ JAVA (JSP, servlets, JDBC) & MYSQL

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

Από τη UML στον Κώδικα. Μέρος Β

Τεχνολογία Λογισμικού

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

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

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

Σύγχρονη παρουσιάση της πλατφόρμας ανάπτυξης λογισμικού Java και των δημοφιλέστερων σχετικών βιβλιοθηκών και framework Μπακάλης Δημήτριος Ειση

ΑΛΕΞΑΝΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΩΝ ΕΦΑΡΜΟΦΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Πτυχιακή Εργασία

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP

Ενότητα 1: HTTP, Clients και Servers. (Web, το θεμέλιο του Σημασιολογικού Ιστού)

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 9: Web Services. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ


ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

Περιγραφή του EcoTruck

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

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

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

ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΩΝ ΓΙΑ ΤΗΝ ΑΝΑΠΤΥΞΗ WEB ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΕΡΙΒΑΛΛΟΝ JAVA» ΜΠΑΣΛΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ A.M 1737

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

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

PayByBank RESTful API GUIDE

Remote Method Invocation (RMI)

Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου Upload zip αρχείων-

ΕΠΛ 012. JavaScripts

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

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

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

Upload zip αρχείων. Στοιχεία Σύνδεσης Η κλήση του REST Service για το upload zip αρχείων προϋποθέτει

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Βούρβαχης Αντώνιος Γεώργιος 1086 ΠΓ. Γιάνναρος Παναγιώτης Μιχαήλ-Στυλιανός 1148 ΠΒ. Αιβαλής Κωνσταντίνος Καθηγητής Τομέα Πληροφορικής

Πληροφοριακό σύστημα για ανταλλακτικά αυτοκινήτων (αποθήκη) με χρήση Java & Servlets

SOAP API. Table of Contents

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

8ο Πανελλήνιο Συμποσιο Ωκεανογραφίας & Αλιείας 637

Transcript:

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

Αναφορές Ηπαρουσίαση βασίστηκε Σε διαφάνειες και παραδείγματα από το τμήμα Servlet του Java WSDP από τον Stephanie Bodoff της Sun Microsystems Σε διαφάνειες από το τμήμα Sevlet από το υλικό του Doris Chen της Sun Microsystems Μερικά παραδείγματα από το βιβλίο Core Servlets and JavaServer Pages του Marty Hall Στις διαφάνειες για Basic Servlets του Shang Shin 2

Βασικά Θέματα Τα Servlet στη μεγάλη εικόνα J2EE Οι μηχανισμοί αίτησης και απάντησης Κύκλος ζωής Servlet Εμβέλεια αντικειμένων Servlet Αιτήσεις Servlet Απαντήσεις: Κατάσταση, επικεφαλίδα, σώμα Χειρισμός λαθών 3

Τα Servlet στη μεγάλη εικόνα J2EE 4

J2EE 1.2 Architecture An extensible Web technology that uses template data, custom elements, scripting languages, and server-side Java objects to return dynamic content to a client. Typically the template data is HTML or XML elements. The client is often a Web browser. Java Servlet A Java program that extends the functionality of a Web server, generating dynamic content and interacting with Web clients using a request-response paradigm. 5

Που ζουντα Servlet και JSP? Web Tier EJB Tier 6

Τι είναι Servlet; Αντικείμενα Java που είναι βασισμένα στο πλαίσιο και APIs των servlet τα οποία επεκτείνουν τη λειτουργία ενός εξυπηρετητή HTTP. Αντιστοιχίζονται με URLs και διαχειρίζεται από ένα container με απλή αρχιτεκτονική Είναι διαθέσιμη σε όλους τους εξυπηρετητές δικτύου και εφαρμογών Είναι ανεξάρτητα πλατφόρμας και εξυπηρετητή 7

Πρώτο παράδειγμα Servlet Public class HelloServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response){ response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<title>hello World!</title>"); }... } 8

Servlet CGI Γραμμένα σε C, C++, Visual Basic ή Perl Δύσκολα σε διαχείριση & επέκταση Πιθανά προβλήματα ασφαλείας την γλώσσας υλοποίησης Απαιτούν πολλούς πόρους Τρέχουν σε συγκεκριμένη πλατφόρμα και εφαρμογή Servlet Γραμμένασε Java Αποδοτικά και αξιόπιστα Εύκολασε διαχείριση, επαναχρησιμοποίηση & επέκταση (βασίζονται σε αρθρώματα) Βασίζονται στην εγγενή ασφάλειατης Java Ανεξάρτητα πλατφόρμας 9

Servlet vs. CGI Request Request CGI1 CGI1 Request Request CGI2 CGI2 Request Request CGI1 CGI1 CGI CGI Based Based Webserver Webserver Child Child for for CGI1 CGI1 Child Child for for CGI2 CGI2 Child Child for for CGI1 CGI1 Request Request Servlet1 Servlet1 Servlet Servlet Based Based Webserver Webserver Request Request Servlet2 Servlet2 Request Servlet1 JVM JVM Servlet1 Servlet1 Servlet2 Servlet2 10

Πλεονεκτήματα των Servlet Δεν έχουν τους περιορισμούς των CGI Όλοι οι εξυπηρετητές διαδικτύου τα υποστηρίζουν Προσφέρουν πρόσβαση σε όλα τα Java APIs Αξιόπιστα, αποδοτικά και επεκτάσιμα Ανεξάρτητα πλατφόρμα και εξυπηρετητή Ασφαλή Οι περισσότεροι εξυπηρετητές επιτρέπουν την αυτόματη επαναφόρτωση τους με εντολή του διαχειριστή όταν ενημερωθούν 11

Τι είναι ητεχνολογία JSP; Επιτρέπει τον διαχωρισμό της επιχειρησιακής λογικής από το επίπεδο παρουσίασης Το επίπεδο παρουσίασης είναι σε μορφή HTML ή XML/XSLT Ηεπιχειρησιακή λογική υλοποιείται σαν Java Beans ή custom tags Καλύτερη διαχείριση και επαναχρησιμοποίηση Επεκτάσιμη με custom tags Βασίζεται στην τεχνολογία Servlet 12

Τι είναι σελίδα JSP; Ένα αρχείο κειμένου το οποίο παράγει δυναμικό περιεχόμενο και το στέλνει στους χρήστες Περιέχει στατικά και δυναμικά στοιχεία Στατικά: HTML, XML Δυναμικά: scriptlets, JavaBeans, custom tags 13

Παράδειγμα JSP <html> Hello World! <br> <jsp:usebean id="clock" class= calendar.jspcalendar /> Today is <ul> <li>day of month: <%= clock.getdayofmonth() %> <li>year: <%= clock.getyear() %> </ul> </html> 14

JSP Servlets JSP Η Java παράγει HTML Κάθε είδος δεδομένων Δεν είναι εύκολο να φτιάξεις σελίδα διαδικτύου Κώδικας παρόμοιος με Java στην HTML Δομημένο κείμενο Πολύ εύκολο να φτιάξεις σελίδα διαδικτύου Οκώδικας μεταγλωττίζεται σε servlet 15

Πλεονεκτήματα JSP Το περιεχόμενο και ηλογική παρουσίασης χωρίζονται Εύκολη υλοποίηση με JSP, JavaBeans και custom tags Υποστηρίζει επαναχρησιμοποίηση λογισμικού με χρήση components Μεταγλωττίζονται αυτόματα όταν γίνουν αλλαγές στον πηγαίο κώδικα Ευκολότερο να φτιάξουμε σελίδες διαδικτύου Ανεξάρτητο πλατφόρμας 16

Πότε χρησιμοποιούμε Servlet αντί JSP Θέλουμε να επεκτείνουμε τον εξυπηρετητή διαδικτύου ώστε να υποστηρίζει ένα νέο είδος αρχείων Να παράγουμε αντικείμενα τα οποία δεν περιέχουν HTML (διαγράμματα, γραφικές παραστάσεις κλπ) Αποφεύγετε να επιστρέφετε HTML απευθείας από τα servlets 17

Πρέπει να χρησιμοποιώ Servlet ή JSP; Συνήθως τα servlet και JSP χρησιμοποιούνται μαζί Αρχιτεκτονική MVC (Model, View, Controller) Τα Servlet παίζουν το ρόλο Controller Τα JSP παίζουν το ρόλο View 18

Οι μηχανισμοί αίτησης και απάντησης των servlet 19

To μοντέλοαίτησηςκαι απάντησης Servlet Container Request Browser HTTP Request Servlet Response Web Server Response 20

Πωςεκκινείτε και τι κάνει ένα Servlet; Το πλαίσιο εκτέλεσης, βάση του web.xml, διασύνδεει την αίτηση με ένα URL που αντιστοιχεί σε κάποιο servlet To servlet δέχεται τα αιτήματα των πελατών (κατά βάση σε μορφή αίτησης HTTP) HTTPServletRequest Διαβάζει τα δεδομένα από την αίτηση Παράγει το περιεχόμενο ήυλοποιεί την επιχειρησιακή λογική με πιθανή Σύνδεση με βάση δεδομένων Εκτέλεση EJBs κλπ Δημιουργία της απάντησης (κατά βάση σε μορφή HTTP) ή προώθηση σε ένα άλλο servlet ή σέλίδα JSP 21

Αίτηση και απάντηση Τι περιέχει ηαίτηση; Πληροφορίες από τον πελάτη στον εξυπηρετητή Ποιος έκανε την αίτηση Τα δεδομένα του χρήστη Επικεφαλίδες HTTP Τι περιέχει ηαπάντηση; Πληροφορίες από τον εξυπηρετητή στον πελάτη Κείμενο(html, απλό) ή binary(εικόνες) Επικεφαλίδες HTTP, cookies, κλπ 22

HTTP Η αίτηση HTTP περιέχει Επικεφαλίδα Μια μέθοδο Get: Τα δεδομένα του χρήστη περιέχονται μέσα στο URL Post: Τα δεδομένα του χρήστη περιέχονται στο σώμα του μηνύματος Put Header Τα αιτούμενα δεδομένα 23

HTTP GET και POST Αίτηση GET: Τα δεδομένα του χρήστη προστίθενται στο URL Μπορεί να στείλει περιορισμένη ποσότητα πληροφοριών.../servlet/viewcourse?firstname=τάκης&lastname= Αλεφραγκής Αίτηση POST: Τα δεδομένα του χρήστη στέλνονται σαν δεδομένα Μπορείς να στείλεις οποιαδήποτε ποσότητα πληροφοριών 24

Ξανά Πρώτο Servlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; Public class HelloServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<title>first Servlet</title>"); out.println("<big>hello Code Camp!</big>"); } } 25

Διεπαφές & Κλάσης Servlet 26

Διεπαφέςκαι κλάσεις Servlet Κλάσεις Servlet Διεπαφές GenericServlet HttpSession HttpServlet ServletRequest ServletResponse HttpServletRequest HttpServletResponse 27

Κύκλος ζωής των Servlet 28

Κύκλοςζωής Servlet Is Servlet Loaded? init() Http request No Load Invoke Http response Yes Servlet Container Run Servlet Client Server 29

Οι μέθοδοι στο κύκλο ζωήςτων Servlet service( ) init( ) Init parameters Ready destroy( ) doget( ) dopost( ) Request parameters 30

Οιμέθοδοι στοκύκλοζωής των Servlet Καλούνται από τον container Ο Container ελέγχει τον κύκλο ζωής τους Ορίζονται στην κλάση javax.servlet.genericservlet init() destroy() service() - abstract javax.servlet.http.httpservlet doget(), dopost(), doxxx() service() - υλοποίηση 31

Οι μέθοδοι στο κύκλο ζωήςτων Servlet init() Καλείται μία φορά κατά την πρώτη δημιουργία αντικειμένου Κάνουμε αρχικές ρυθμίσεις Π.χ. κάνουμε σύνδεση με την βάση δεδομένων destroy() Καλείται όταν καταστρέφεται ένα αντικείμενο Κάνει απελευθέρωση πόρων Π.χ. κλείνει την σύνδεση με την βάση δεδομένων 32

Παράδειγμα: init() από CatalogServlet.java public class CatalogServlet extends HttpServlet { private BookDB bookdb; // Perform any one-time operation for the servlet, // like getting database connection object. } // Note: In this example, database connection object is assumed // to be created via other means (via life cycle event mechanism) // and saved in ServletContext object. This is to share a same // database connection object among multiple servlets. public void init() throws ServletException { bookdb = (BookDB)getServletContext(). getattribute("bookdb"); if (bookdb == null) throw new UnavailableException("Couldn't get database."); }... 33

Παράδειγμα: init() που διαβάζει παραμέτρους ρυθμίσεων από το web.xml public void init(servletconfig config) throws ServletException { super.init(config); String driver = getinitparameter("driver"); String furl = getinitparameter("url"); try { opendbconnection(driver, furl); } catch (SQLException e) { e.printstacktrace(); } catch (ClassNotFoundException e){ e.printstacktrace(); } } 34

Παράμετροι αρχικοποίησηςστο web.xml <web-app> <servlet> <servlet-name>chart</servlet-name> <servlet-class>chartservlet</servlet-class> <init-param> <param-name>driver</param-name> <param-value> COM.cloudscape.core.RmiJdbcDriver </param-value> </init-param> <init-param> <param-name>url</param-name> <param-value> jdbc:cloudscape:rmi:cloudscapedb </param-value> </init-param> </servlet> </web-app> 35

Παράδειγμα: destroy() public class CatalogServlet extends HttpServlet { private BookDB bookdb; } public void init() throws ServletException { bookdb = (BookDB)getServletContext(). getattribute("bookdb"); if (bookdb == null) throw new UnavailableException("Couldn't get database."); } public void destroy() { bookdb = null; }... 36

Οιμέθοδοι στοκύκλοζωής των Servlet service() στην κλάση javax.servlet.genericservlet Abstract service() στην κλάση javax.servlet.http.httpservlet πλήρης (υλοποιήσιμη) Καλεί τις doget(), dopost() κλπ ΜΗΝ επανορίσετε αυτή την μέθοδο! doget(), dopost(), doxxx() στην κλάση javax.servlet.http.httpservlet Διαχειρίζονται αιτήσεις HTTP GET, POST, κλπ Επανορίσετε αυτές τις μεθόδους στα δικά σας servlet για να ορίσετε την αντίστοιχη συμπεριφορά 37

service() & doget()/dopost() service() παίρνει σαν παραμέτρους γενικές αιτήσεις και απαντήσεις: service(servletrequest request, ServletResponse response) doget() ή dopost() παίρνει σαν παραμέτρους HTTP αιτήσεις και απαντήσεις: doget(httpservletrequest request, HttpServletResponse response) dopost(httpservletrequest request, HttpServletResponse response) 38

Μέθοδος service() Server GenericServlet subclass Request Subclass of GenericServlet class Service( ) Response Key: Implemented by subclass 39

doget() & dopost() Server HttpServlet subclass Request doget( ) Service( ) Response dopost( ) Key: Implemented by subclass 40

Τι κάνουν οι doget() & dopost(); Διάβασμα δεδομένων χρήστη (HTTP parameter) από το αίτημα HTTP Set (Save) και get (read) χαρακτηριστικά από/στα αντικείμενα scope Να υλοποιηθεί επιχειρησιακή λογική ή πρόσβαση σε μια βάση δεδομένων Προώθηση του αιτήματος σε άλλα αρθρώματα (Servlet ή JSP) Συμπλήρωση απάντησης HTTP και αποστολή στον πελάτη 41

Παράδειγμα: Απλό doget() import javax.servlet.*; import javax.servlet.http.*; import java.io.*; Public class HelloServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Just send back a simple HTTP response response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<title>first Servlet</title>"); out.println("<big>hello J2EE Programmers! </big>"); } } 42

Παράδειγμα: Προχωρημένο doget() public void doget (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Read session-scope attribute message HttpSession session = request.getsession(true); ResourceBundle messages = (ResourceBundle)session.getAttribute("messages"); // Set headers and buffer size before accessing the Writer response.setcontenttype("text/html"); response.setbuffersize(8192); PrintWriter out = response.getwriter(); // Then write the response (Populate the header part of the response) out.println("<html>" + "<head><title>" + messages.getstring("titlebookdescription") + "</title></head>"); // Get the dispatcher; it gets the banner to the user RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/banner"); if (dispatcher!= null) dispatcher.include(request, response); 43

Παράδειγμα: Προχωρημένο doget() // Get the identifier of the book to display (Get HTTP parameter) String bookid = request.getparameter("bookid"); if (bookid!= null) { // and the information about the book (Perform business logic) try { BookDetails bd = bookdb.getbookdetails(bookid); Currency c = (Currency)session.getAttribute("currency"); if (c == null) { c = new Currency(); c.setlocale(request.getlocale()); session.setattribute("currency", c); } c.setamount(bd.getprice()); // Print out the information obtained out.println("..."); } catch (BookNotFoundException ex) { response.resetbuffer(); throw new ServletException(ex); } } } out.println("</body></html>"); out.close(); 44

Πως φτιάχνουμε τηναπάντηση HTTP Φτιάχνουμε την επικεφαλίδες Ορίζουμε κάποιες παραμέτρους Μέγεθος Buffer Παίρνουμε μια αναφορά σε αντικείμενο output stream από την απάντηση Γράφουμε το body στο output stream 45

Παράδειγμα: Απλή Απάντηση Public class HelloServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Fill response headers response.setcontenttype("text/html"); // Set buffer size response.setbuffersize(8192); // Get an output stream object from the response PrintWriter out = response.getwriter(); // Write body content to output stream out.println("<title>first Servlet</title>"); out.println("<big>hello J2EE Programmers! </big>"); } } 46

Αντικείμενα εμβέλειας (Scope Objects) 47

Αντικείμενα εμβέλειας Επιτρέπει το μοίρασμα πληροφοριών ανάμεσα σε συνεργαζόμενα αρθρώματα μέσω χαρακτηριστικών που διατηρούνται σε αντικείμενα εμβέλειας Τα χαρακτηριστικά είναι ζεύγη ονόματος/αντικειμένου Ηπροσπέλαση των χαρακτηριστικών γίνεται με κλήσεις των μεθόδων getattribute() & setattribute() Ορίζονται 4 αντικείμενα εμβέλειας Web context, session, request, page 48

Αντικείμεναεμβέλειας: Προσβασιμότητα Web context (ServletConext) Προσβάσιμο από τα αρθρώματα μια εφαρμογής Session Προσβάσιμο από τα αρθρώματα τα οποία διαχειρίζονται μία αίτηση μιας συγκεκριμένης σύνδεσης Request Προσβάσιμο από τα αρθρώματα τα οποία διαχειρίζονται μία αίτηση Page Προσβάσιμοαπότηνσελίδα JSP ηοποίαδημιουργεί τα αντικείμενα 49

Αντικείμενα εμβέλειας: Κλάσεις Web context javax.servlet.servletcontext Session javax.servlet.http.httpsession Request Υποκλάσης της javax.servlet.servletrequest: javax.servlet.http.httpservletrequest Page javax.servlet.jsp.pagecontext 50