Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o...

19
Introduction to Java™ Java Servlets: Principles and Programming 1/10/2009 1/19

Transcript of Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o...

Page 1: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

Introduction to Java™

Java Servlets: Principles and Programming

1/10/2009 1/19

Page 2: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 2

Περιεχόμεναo Εισαγωγήo Πλεονεκτήματα των Servlet έναντι CGIo Αρχιτεκτονική Servleto Παραλλαγές Τεχνολογίας Servlet

Pure ServletsServer Side Includes (SSI)Java Server Pages (JSPs)

o Αλληλεπίδραση με Πελάτες o Ο κύκλος ζωής ενός Servleto HelloWWW Servleto Επεξεργασία φόρμας με Servleto Servlet Resources

EPL 425

Page 3: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 3

Εισαγωγή

o Servlets είναι μια τεχνολογία Java αντίστοιχη με τον προγραμματισμό CGI.

Προγράμματα που τρέχουν σε ένα Web server και δημιουργούν δυναμικά ιστοσελίδες (Web pages).

o Η δημιουργία δυναμικών ιστοσελίδων είναι χρήσιμο, και συνήθως γίνεται για τους πιο κάτω λόγους: 1. Η ιστοσελίδα βασίζεται σε δεδομένα που εισάγονται από το

χρήστη. π.χ τα αποτελέσματα από μια μηχανή αναζήτησης και προγράμματα επεξεργασίας παραγγελιών για e-commerce sites.

2. Τα δεδομένα αλλάζουν πολύ συχνά. π.χ αναφορά καιρικών συνθηκών, τιμές χρηματιστηρίου, τίτλοι ειδήσεων.

3. Η ιστοσελίδα χρησιμοποιεί πληροφορίες από βάσεις δεδομένων. π.χ ιστοσελίδες που παρουσιάζουν τιμοκαταλόγους σε ένα on-line κατάστημα.

EPL 425

Page 4: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 4

Πλεονεκτήματα των Servlet έναντι CGI (1/3)

o Απόδοση: CGI:

Νέο HTTP request Νέα διεργασία (process) N ταυτόχρονες αιτήσεις στο ίδιο CGI πρόγραμμα ο κώδικας του cgi φορτώνεται στη μνήμη Ν φορές

Servlets:Νέο HTTP request Νέο lightweight Java thread (λιγότερο overhead από μια heavyweight διεργασία του Λειτουργικού Συστήματος)N ταυτόχρονες αιτήσεις στο ίδιο servlet N threads και το servlet class είναι φορτωμένο στη μνήμη μόνο μια φοράΠερισσότερες εναλλακτικές βελτιστοποίησης από ότι τα προγράμματα CGI (επειδή η εικονική μηχανή Java μένει φορτωμένη στη μνήμη) όπως είναι το caching προηγούμενων υπολογισμών, διατήρηση ανοικτών συνδέσεων σε βάσεις δεδομένων κ.α.

EPL 425

Page 5: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 5

Πλεονεκτήματα των Servlet έναντι CGI (2/3)

o Ευκολία: Για τους προγραμματιστές Java. Τα servlets έχουν μεγάλη υποδομή για αυτόματο parsing και αποκωδικοποίηση των δεδομένων μια φόρμας HTML, διάβασμα και καθορισμό των HTTP headers και άλλα παρόμοια utilities.

o Portable: Τα Servlets είναι γραμμένα σε Java

Platform Independent.Υποστηρίζονται απ' ευθείας ή μέσω ενός plugin σε όλους του γνωστούς Web Servers όπως Apache, Microsoft IIS

Server Independento Οικονομία:

Υπάρχουν πολλοί δωρεάν Web servers που είναι καλοί για προσωπική χρήση ή για Web Site που έχουν χαμηλή κίνηση. Η προσθήκη υποστήριξης servlet σε εμπορικούς Web servers είναι δωρεάν ή πολύ φθηνή.

EPL 425

Page 6: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 6

Πλεονεκτήματα των Servlet έναντι CGI (3/3)

o Άλλα: Τα Servlets είναι γραμμένα σε Java

Εκμετάλλευση του Java APIΕύκολη προσθήκη 3rd party componentsGarbage CollectionException HandlingObject oriented.

EPL 425

Page 7: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 7

Αρχιτεκτονική Servlet (1/2)

o Servlet EnginesStandalone (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)

EPL 425

Page 8: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 8

Αρχιτεκτονική Servlet (2/2)

EPL 425

Page 9: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 9

Παραλλαγές Servlet - Pure Servletso Καλώντας το class file

1. javac HelloWorld.java2. http://server:port/servlets/HelloWord

// HelloWorld.javaimport 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(); }}

EPL 425

Page 10: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 10

Παραλλαγές Servlet - SSIo Ο 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>

EPL 425

Page 11: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 11

Παραλλαγές Servlet - JSPso Η τεχνολογία JSP επιτρέπει την ανάμειξη

στατικού HTML με δυναμικού.o Πολλές σελίδες που δημιουργούνται από

CGI προγράμματα είναι ως επί το πλείστον στατικές, και το δυναμικό κομμάτι είναι πολύ περιορισμένο. Όμως το CGI και παραλλαγές του (και τα servlet), μας αναγκάζουν να δημιουργούμε ολόκληρη τη σελίδα από το πρόγραμμα.

EPL 425

Page 12: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 12

Παραλλαγές 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>

EPL 425

Page 13: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 13

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

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

Ένα ServletRequest, που εξασφαλίζει την επικοινωνία από τον πελάτη προς τον server. Ένα ServletResponse, που εξασφαλίζει την επικοινωνία από το servlet πίσω στον πελάτη.

(Τα ServletRequest και ServletResponse είναι interfaces ορισμένα στο javax.servlet package.)

EPL 425

Page 14: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 14

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

o Οι μέθοδοι του Servlet οι οποίες εκτελούνται μετά από ένα HTTP request είναι οι ακόλουθοι:

doGet, για εκτέλεση αιτήσεων GET, conditional GET και HEAD doPost, για εκτέλεση αιτήσεων POST

Οι πιο πάνω μέθοδοι ως προεπιλογή, επιστρέφουν το μήνυμα λάθους BAD_REQUEST (400).

• Το servlet που θα γράψουμε πρέπει να κάνει override τις μεθόδους που θέλουμε να εξυπηρετούν τα αντίστοιχα HTTP requests.

EPL 425

Page 15: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 15

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

destroy()

init()

EPL 425

Page 16: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 16

HelloWWWServletimport 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 fieldsresponse.setContentType("text/html");// Write the data of the responsePrintWriter 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>");

}}

EPL 425

Page 17: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 17

Επεξεργασία φόρμας με 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>

EPL 425

Page 18: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 18

Επεξεργασία φόρμας με 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");}}

EPL 425

Page 19: Introduction to Java™epl425/labs/java-Servlets.pdf · o Αρχιτεκτονική Servlet o Παραλλαγές Τεχνολογίας Servlet Pure Servlets Server Side Includes

1/10/2009 19

Servlet Resourceso The Jakarta Project

jakarta.apache.orgo Java Servlet Reference Guide

webreview.com/pub/97/10/10/feature/guide.htmlo Servlets and JSP: A Tutorial

www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Intro.html

o Sun’s Servlet Tutorialjava.javasoft.com/docs/books/tutorial/servlets/TOC.html

o Servlet Essentials http://www.novocode.com/doc/servlet-essentials/

o Servlet BooksJavaTM Servlet Programming, Jason Hunter with William Crawford by O’REILLY

EPL 425