Server Side Programming Servlets Server Side Programming Java

  • Slides: 62
Download presentation

Περιεχόμενα • Server Side Programming • Servlets

Περιεχόμενα • Server Side Programming • Servlets

Server Side Programming με Java 7

Server Side Programming με Java 7

Servlets 8

Servlets 8

Servlet vs. CGI 1/2

Servlet vs. CGI 1/2

Servlet vs. CGI 2/2

Servlet vs. CGI 2/2

Μέθοδοι 1/3 • Το interface javax. servlet. Servlet διαθέτει τρεις μεθόδους που ορίζουν τον

Μέθοδοι 1/3 • Το interface javax. servlet. Servlet διαθέτει τρεις μεθόδους που ορίζουν τον κύκλο ζωής του Servlet: • public void init(Servlet. Config config) throws Servlet. Exception • public void service(Servlet. Request request, Servlet. Response response) throws Servlet. Exception, IOException • public void destroy() 18

Μέθοδοι 2/3 • public void init(Servlet. Config config) throws Servlet. Exception • καλείται μια

Μέθοδοι 2/3 • public void init(Servlet. Config config) throws Servlet. Exception • καλείται μια φορά, όταν το Servlet φορτώνεται στην Servlet engine, πριν ακόμη το Servlet λάβει την πρώτη προς διεκπεραίωση αίτηση. Μέσω του αντικειμένου Servlet. Config το servlet διαβάζει τις αρχικοποιημένες παραμέτρους. • public void service(Servlet. Request request, Servlet. Response response) throws Servlet. Exception, IOException 19

HTTP Servlet Overview

HTTP Servlet Overview

Πολύ Απλό Servlet import java. io. *; import javax. servlet. http. *; public class

Πολύ Απλό Servlet import java. io. *; import javax. servlet. http. *; public class Hello. World extends Http. Servlet { public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { Print. Writer out = response. get. Writer(); out. println("Hello World"); } } 24

Απλό Servlet import java. io. *; import javax. servlet. http. *; public class Hello.

Απλό Servlet import java. io. *; import javax. servlet. http. *; public class Hello. World extends Http. Servlet { public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws IOException, Servlet. Exception { response. set. Content. Type("text/html"); Print. Writer out = response. get. Writer(); out. println("<html><head>"); out. println("<title>Hello World!</title>"); out. println("</head></body>"); out. println("<h 1>Hello World!</h 1>"); out. println("</body></html>"); } } ενημερώνουμε το browser ότι πρόκειται για HTML έγγραφο με την response. set. Content. Type("text/html"); 25

Το Servlet API: Http. Servlet 26

Το Servlet API: Http. Servlet 26

Παράδειγμα init public class Book. DBServlet. . . { public void init(Servlet. Config config)

Παράδειγμα init public class Book. DBServlet. . . { public void init(Servlet. Config config) throws Servlet. Exception { super. init(config); try { //Connection to a database! String database. Url = config. get. Init. Parameter("database. Url"); connection = Driver. Manager. get. Connection(database. Url); } catch(Exception e) { e. print. Stack. Trace(); } Servlet. Context context = config. get. Servlet. Context(); String country = context. get. Init. Parameter("Country"); //H parametros Country einai koinh gia ola ta servlet!! …. . }. . . } 35

Παράδειγμα destroy public class Book. DBServlet extends Generic. Servlet { private Bookstore. DB books;

Παράδειγμα destroy public class Book. DBServlet extends Generic. Servlet { private Bookstore. DB books; . . . // the init method public void destroy() { connection. close() } } 37

Πιο ενδιαφέρον Servlet 1/2 Δημιουργία Servlet που • καλείται με ένα Όνομα (“name”) •

Πιο ενδιαφέρον Servlet 1/2 Δημιουργία Servlet που • καλείται με ένα Όνομα (“name”) • εμφανίζει το μήνυμα «Welcome» + Όνομα Φόρμα Εισαγωγής <form action="/servlet/Greeting" method="POST"> Your name: <input type="text" name="name" /> <input type="submit" value="Greet me!" /> </form> 38

Πιο ενδιαφέρον Servlet 2/2 import java. io. *; import javax. servlet. http. *; public

Πιο ενδιαφέρον Servlet 2/2 import java. io. *; import javax. servlet. http. *; public class Greeting extends Http. Servlet { public void do. Get(Http. Servlet. Request req, Http. Servlet. Response rsp) throws Servlet. Exception, IOException { rsp. set. Content. Type("text/html"); Print. Writer out = rsp. get. Writer(); String name = req. get. Parameter("name"); String greeting if (name == null) greeting = "Hi there!"; else greeting = "Hi, " + name + "!"; out. println("<html>"); out. println("<head><title> Welcome! </title></head>"); out. println("<body>"); out. println("<p>" + greeting + "</p>"); out. println("</body></html>"); } public void do. Post(Http. Servlet. Request req, Http. Servlet. Response rsp) throws Servlet. Exception, IOException { do. Get(req, rsp); } } 39

(Λίγο) πιο ενδιαφέρον Servlet import java. io. *; import javax. servlet. http. *; public

(Λίγο) πιο ενδιαφέρον Servlet import java. io. *; import javax. servlet. http. *; public class Greeting 2 extends Http. Servlet { public void do. Get(Http. Servlet. Request req, Http. Servlet. Response rsp) throws Servlet. Exception, IOException { rsp. set. Content. Type("text/html"); Print. Writer out = rsp. get. Writer(); String name = req. get. Parameter("name"); String greeting; if (name == null) { // Get the URL of this Servlet String. Buffer action = Http. Utils. get. Request. URL(req); greeting = "<form action="" + action + "" method="POST">n"; greeting += "Your name: " + " <input type="text" name="name" /> n"; greeting += " <input type="submit" value="Greet me!" />n « + "</form>n"; } else greeting = "Hi, " + name + "!"; out. println("<html>"); out. println("<head><title> Welcome to my site! </title></head>"); out. println("<body>"); out. println("<p>" + greeting + "</p>"); out. println("</body></html>"); } public void do. Post(Http. Servlet. Request req, Http. Servlet. Response rsp) throws Servlet. Exception, IOException { do. Get(req, rsp); } } 40

Παράδειγμα Cookie public class Cookie. Example extends Http. Servlet { protected void do. Get(Http.

Παράδειγμα Cookie public class Cookie. Example extends Http. Servlet { protected void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { response. set. Content. Type("text/html; charset=UTF-8"); Print. Writer out = response. get. Writer(); // print out cookies Cookie[] cookies = request. get. Cookies(); for (int i = 0; i < cookies. length; i++) { Cookie c = cookies[i]; String name = c. get. Name(); String value = c. get. Value(); out. println(name + " = " + value + " "); } // read parameters cookie. Name and cookie. Value and set a cookie String name = request. get. Parameter("cookie. Name"); if (name != null && name. length() > 0) { String value = request. get. Parameter("cookie. Value"); Cookie c = new Cookie(name, value); response. add. Cookie(c); } } } 44

Παράδειγμα Session public class Session. Example extends Http. Servlet { public void do. Get(Http.

Παράδειγμα Session public class Session. Example extends Http. Servlet { public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws IOException, Servlet. Exception { response. set. Content. Type("text/html"); Print. Writer out = response. get. Writer(); Http. Session session = request. get. Session(); out. println("ID " + session. get. Id()); // print session info // set session info if needed String data. Name = request. get. Parameter("data. Name"); if (data. Name != null && data. Name. length() > 0) { String data. Value = request. get. Parameter("data. Value"); session. set. Attribute(data. Name, data. Value); } Enumeration e = session. get. Attribute. Names(); // print session contents while (e. has. More. Elements()) { String name = (String)e. next. Element(); String value = session. get. Attribute(name). to. String(); out. println(name + " = " + value); } } } Βγάζει διαφορετικό idΔικτυακός κάθεΠρογραμματισμός φορά που κάνω refresh (? ) 50

Για Ελληνικά. . . import java. io. *; import javax. servlet. http. *; public

Για Ελληνικά. . . import java. io. *; import javax. servlet. http. *; public class Hello. To. You extends Http. Servlet { public void do. Post(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { request. set. Character. Encoding("ISO-8859 -7"); response. set. Content. Type("text/html; charset=ISO-8859 -7"); String s = request. get. Parameter("name"); Print. Writer out = response. get. Writer(); out. println("Hello to you "+s); } public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { do. Post(request, response); } } 52