Java Servlets: Principles and Programming 1/19

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

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

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

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

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

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

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

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

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

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

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

Cloud Computing Database with Amazon SimpleDB

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

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

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

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

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

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός,

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

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

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

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

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

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

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

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

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

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

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

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

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

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

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

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

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

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

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

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

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

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

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

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

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

PayByBank RESTful API GUIDE

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

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

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

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

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

Frontend optimizations. Θεοδόσης Σουργκούνης

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Paybybank RESTful API GUIDE

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

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

PHP/MySQL και Project

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

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

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

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

Remote Method Invocation (RMI)

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

Εφαρµογές WebGIS Open Source

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

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

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

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

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Generics και ArrayLists

Στρατηγική ανάπτυξη δικτυακού κόμβου

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

Μάθημα 2 [10/11/2015]

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

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

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης

ΚΕΦΑΛΑΙΟ Web Services

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

Apache Jmeter. Αν θέλετε να τεστάρετε μία υφιστάμενη web εφαρμογή π.χ. το Java Petstore

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

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

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

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

Introduction to JAX-WS. Φοιτητής : ηµόπουλος Κωνσταντίνος

11β Δομικά πρότυπα σχεδίασης

PayByBank RESTful API

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:


Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

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

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

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιτεύγµατα των Λ.Σ.

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

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

Transcript:

Java Servlets: Principles and Programming 1/19

Περιεχόµενα Εισαγωγή Πλεονεκτήµατα των Servlet έναντι CGI Αρχιτεκτονική Servlet Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes (SSI) Java Server Pages (JSPs) Αλληλεπίδραση µε Πελάτες Ο κύκλος ζωής ενός Servlet HelloWWW Servlet Επεξεργασία φόρµας µε Servlet Servlet Resources 15/3/2004 2/19

Εισαγωγή Servlets είναι µια τεχνολογία Java αντίστοιχη µε τον προγραµµατισµό CGI. => Είναι προγράµµατα που τρέχουν σε ένα Web server και δηµιουργούν δυναµικά ιστοσελίδες (Web pages). Η δηµιουργία δυναµικών ιστοσελίδων είναι χρήσιµη, και συνήθως γίνεται για τους πιο κάτω λόγους: 1. Η ιστοσελίδα βασίζεται σε δεδοµένα που εισάγονται από το χρήστη. π.χ τα αποτελέσµατα από µια µηχανή αναζήτησης και προγράµµατα επεξεργασίας παραγγελιών για e-commerce sites. 2. Τα δεδοµένα αλλάζουν πολύ συχνά. π.χ αναφορά καιρικών συνθηκών, τιµές χρηµατιστηρίου, τίτλοι ειδήσεων. 3. Η ιστοσελίδα χρησιµοποιεί πληροφορίες από βάσεις δεδοµένων. π.χ ιστοσελίδες που παρουσιάζουν τιµοκαταλόγους σε ένα on-line κατάστηµα. 15/3/2004 3/19

Πλεονεκτήµατα των Servlet έναντι CGI (1/3) Απόδοση: CGI: Νέο HTTP request => Νέα διεργασία (process) N ταυτόχρονες αιτήσεις στο ίδιο CGI πρόγραµµα => ο κώδικας του cgi φορτώνεται στη µνήµη Ν φορές Servlets: Νέο HTTP request => Νέο lightweight Java thread (λιγότερο overhead από µια heavyweight διεργασία του Λειτουργικού Συστήµατος) N ταυτόχρονες αιτήσεις στο ίδιο servlet => N threads και το servlet class είναι φορτωµένο στη µνήµη µόνο µια φορά Περισσότερες εναλλακτικές βελτιστοποίησης από ότι τα προγράµµατα CGI (επειδή η εικονική µηχανή Java µένει φορτωµένη στη µνήµη) όπως είναι το caching προηγούµενων υπολογισµών, διατήρηση ανοικτών συνδέσεων σε βάσεις δεδοµένων κ.α. 15/3/2004 4/19

Πλεονεκτήµατα των Servlet έναντι CGI (2/3) Ευκολία: Για τους προγραµµατιστές Java. Τα servlets έχουν µεγάλη υποδοµή για αυτόµατο parsing και αποκωδικοποίηση των δεδοµένων µια φόρµας HTML, διάβασµα και καθορισµό των HTTP headers και άλλα παρόµοια utilities. Portable: Τα Servlets είναι γραµµένα σε Java => Platform Independent. Υποστηρίζονται απ' ευθείας ή µέσω ενός plugin σε όλους του γνωστούς Web Servers όπως Apache, Microsoft IIS => Server Independent Οικονοµία: Υπάρχουν πολλοί δωρεάν Web servers που είναι καλοί για προσωπική χρήση ή για Web Site που έχουν χαµηλό traffic. Η προσθήκη υποστήριξης servlet σε εµπορικούς Web servers είναι δωρεάν ή πολύ φθηνή. 15/3/2004 5/19

Πλεονεκτήµατα των Servlet έναντι CGI (3/3) Άλλα: Τα Servlets είναι γραµµένα σε Java => Εκµετάλλευση του Java API Εύκολη προσθήκη 3rd party components Garbage Collection Exception Handling Object oriented. 15/3/2004 6/19

Αρχιτεκτονική Servlet (1/2) Servlet Engines Standalone (Sun s JavaWebServer (Jeeves), W3C s JigSaw, O Reilley s Website Pro) Add-On to existing server (Allaires Jrun, Java- Apache project s Jserv, IbmServletExpress) 15/3/2004 7/19

Αρχιτεκτονική Servlet (2/2) 15/3/2004 8/19

Παραλλαγές Servlet - Pure Servlets Καλώντας το class file 1. javac HelloWorld.java 2. http://server:port/servlets/helloword // HelloWorld.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWord extends HttpServlet { public void doget(httpservletrequest req,httpservletresponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html><head><title>hello Client!</TITLE>"+ "</HEAD><BODY>Hello Word</BODY></HTML>"); out.close(); }} 15/3/2004 9/19

Παραλλαγές Servlet - SSI Ο Server κάνει προεπεξεργασία κάθε αρχείου *.shtml πριν στείλει την απάντηση στον client. <html> <!-- ssiexample.shtml--> <head> <title>embedded Servlet Tag</title> </head> <body> <SERVLET CODE="Servlet1" CODEBASE="http://server:port/dir" initparam1=initvalue1 initparam2=initvalue2 > <SERVLET> </body> </html> 15/3/2004 10/19

Παραλλαγές Servlet - JSPs Η τεχνολογία JSP επιτρέπει την ανάµειξη στατικού HTML µε δυναµικού. Πολλές σελίδες που δηµιουργούνται από CGI προγράµµατα είναι ως επί το πλείστον στατικές, και το δυναµικό κοµµάτι είναι πολύ περιορισµένο. Όµως το CGI και παραλλαγές του (και τα servlet), µας αναγκάζουν να δηµιουργούµε ολόκληρη τη σελίδα από το πρόγραµµα. 15/3/2004 11/19

Παραλλαγές Servlet - JSPs <html> <head><title>jsp File</title></head> <body> <% if (request.getparameter("name") == null) { out.println ("You typed nothing"); } else { out.println("you typed" + request.getparameter("name")); } %> </body></html> 15/3/2004 12/19

Αλληλεπίδραση µε Πελάτες (1/2) Όταν ένα servlet δέχεται ένα κάλεσµα από τον πελάτη (client), λαµβάνει δύο αντικείµενα (objects): Ένα ServletRequest, που εξασφαλίζει την επικοινωνία από τον πελάτη προς τον server. Ένα ServletResponse, που εξασφαλίζει την επικοινωνία από το servlet πίσω στον πελάτη. (Τα ServletRequest και ServletResponse είναι interfaces ορισµένα στο javax.servlet package.) 15/3/2004 13/19

Αλληλεπίδραση µε Πελάτες (2/2) Οι µέθοδοι του Servlet οι οποίες εκτελούνται µετά από ένα HTTP request είναι οι ακόλουθοι: doget, για εκτέλεση αιτήσεων GET, conditional GET και HEAD dopost, για εκτέλεση αιτήσεων POST Οι πιο πάνω µέθοδοι by default, επιστρέφουν το µήνυµα λάθους BAD_REQUEST (400). => Το servlet που θα γράψουµε πρέπει να κάνει override τις µεθόδους που θέλουµε να εξυπηρετούν τα αντίστοιχα HTTP requests. 15/3/2004 14/19

Οκύκλος ζωής ενός Servlet init() destroy() 15/3/2004 15/19

HelloWWW Servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW extends HttpServlet { public void doget(httpservletrequest request,httpservletresponse response) throws ServletException, IOException { } // set content type and other response header fields response.setcontenttype("text/html"); // Write the data of the response PrintWriter out = response.getwriter(); out.println("<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + "<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); } 15/3/2004 16/19

Επεξεργασία φόρµας µε Servlet (1/2) <html> <head><title>choosing a picture</title></head> <body> <form ACTION="http://localhost/servlet/ChoosePicture" METHOD="GET" name="form1"> Choose a funny picture: <select name="picture" size="1"> <option value="funny1.jpg">bill Gates</option> <option value="funny2.jpg">2 much time on the Internet</option> <option value="funny3.jpg">bill Clinton</option> </select></p> <input TYPE="submit" name="submit_btn" value="choose"></p> </form> </body></html> 15/3/2004 17/19

Επεξεργασία φόρµας µε Servlet (2/2) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ChoosePicture extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); String picturename = request.getparameter("picture"); out.println("<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n" + "<HTML>\n" + "<HEAD><TITLE>ChoosePicture Servlet</TITLE></HEAD>\n" + "<BODY>\n" + "<IMG SRC=\"../images/" + picturename + "\">\n" + "</BODY></HTML>"); } public void init(servletconfig config) throws ServletException { System.out.print("init()\n"); } public void destroy() { System.out.print("destroy()\n");}} 15/3/2004 18/19

Servlet Resources The Jakarta Project jakarta.apache.org Java Servlet Reference Guide webreview.com/pub/97/10/10/feature/guide.html Servlets and JSP: A Tutorial www.apl.jhu.edu/~hall/java/servlet-tutorial/servlet- Tutorial-Intro.html Sun s Servlet Tutorial java.javasoft.com/docs/books/tutorial/servlets/toc.html Servlet Essentials http://www.novocode.com/doc/servlet-essentials/ Servlet Books Java TM Servlet Programming, Jason Hunter with William Crawford by O REILLY 15/3/2004 19/19