Presentation is loading. Please wait.

Presentation is loading. Please wait.

Servlets Servlets are modules that extend the functionality of a “java-enabled” web-server They normally generate HTML code and web content dynamically.

Similar presentations


Presentation on theme: "Servlets Servlets are modules that extend the functionality of a “java-enabled” web-server They normally generate HTML code and web content dynamically."— Presentation transcript:

1 Servlets Servlets are modules that extend the functionality of a “java-enabled” web-server They normally generate HTML code and web content dynamically. This is sent to the browser which displays it. For example, they send a query to a database based on parameters sent by the browser and send the results to the browser in html format

2 Development Environments There are many good development environments which help to write and test the servlets They include an editor and a java-enabled sever They also include all the necessary jar files an import statements Some of them are Eclipse (need to download plugins) and Netbeans (which also has full j2ee support

3 Anatomy of a Servlet A new servlet can be written by extending the HttpServlet class which has the following pre-defined methods init() is called when the servlet is “uploaded” the first time (this can vary depending on the server) doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException is called every time the servlet is contacted by a GET request (which is the default way) doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException is called when the client contacted the servlet with a POST request

4 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void init() { //Overwrite } public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // Overwrite } public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Overwrite }

5 The HttpServletRequest Parameter HttpServletRequest is the class of the first parameter the server uses to calls doGet and doPost. It gives access to: –Information about the client, for example, parameters passed, protocol used, client’s host, etc. –The input stream, ServletInputStream is used by the servlet to receive data from the client when the method POST or PUT has been used.

6 The HttpServletResponse parameter HttpServletResponse is the class of the second argument. Provides methods for : –Declaring the MIME type of the answer that will be sent to the client –Getting the output stream ServletOutputStream and a Writer through which the servlet can send dinamically generated html code to the browser. –Sending other information to the browser (cookies, refreshment time, etc…)

7 Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println(" ") out.println(" Mi Primer Servlet "); out.println(" Fecha y hora: "+(new Date())+" "); out.println(" "); out.close(); }

8 Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println(" ") out.println(" Mi Primer Servlet "); out.println(" Fecha y hora: "+(new Date())+" "); out.println(" "); out.close(); } Imports necessary classes This is for the Date class

9 Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println(" ") out.println(" Mi Primer Servlet "); out.println(" Fecha y hora: "+(new Date())+" "); out.println(" "); out.close(); } Every servlet extends HttpServlet Overwrites doGet method

10 Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println(" ") out.println(" Mi Primer Servlet "); out.println(" Fecha y hora: "+(new Date())+" "); out.println(" "); out.close(); } Tells the browser the content type of the answer Gets writer to browser from response parameter

11 Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequestrequest, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println(" ") out.println(" Mi Primer Servlet "); out.println(" Fecha y hora: "+(new Date())+" "); out.println(" "); out.close(); } Get date and time from system Print data to browser Close connection to browser

12 Running the first example Writing a servlet with Netbeans is very easy Also the deployment is done automatically –Open netbeans –Create a web project (this will create a lot of directories for putting the different kind of files) –Create a servlet –Copy the code of SimpleServlet.java –Run the file

13 A second example Implementing a web counter It will count how many times an object of this class has been creates It will show the Address of the computer that contacted the servlet It will show a

14 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println(" A web page counter "); out.println(" "); out.println("This servlet was accessed "+count+" time(s)"); out.println(" "); out.println("Your computer is "+req.getRemoteHost()); out.println(" "); out.close(); }

15 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println(" A web page counter "); out.println(" "); out.println("This servlet was accessed "+count+" time(s)"); out.println(" "); out.println("Your computer is "+req.getRemoteHost()); out.println(" "); out.close(); }

16 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println(" A web page counter "); out.println(" "); out.println("This servlet was accessed "+count+" time(s)"); out.println(" "); out.println("Your computer is "+req.getRemoteHost()); out.println(" "); out.close(); } Increments counter every time doGet is called by the web server

17 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println(" A web page counter "); out.println(" "); out.println("This servlet was accessed "+count+" time(s)"); out.println(" "); out.println("Your computer is "+req.getRemoteHost()); out.println(" "); out.close(); } Sine Qua Non

18 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println(" A web page counter "); out.println(" "); out.println("This servlet was accessed "+count+" time(s)"); out.println(" "); out.println("Your computer is "+req.getRemoteHost()); out.println(" "); out.close(); } Print data to browser

19 What happens if the server crashes and starts again ? The counter will start from 0 again To “remember” the value of the counter in cast of an unexpected crash, we will write the value of the variable in a file every time it changes. At the beginning, the servlet reads the initial value from a file, if it exists, or creates the file with the initial value = 0

20 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... }

21 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... } Try to open the file when the servlet is called the first time

22 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... } Read the line and convert the content to its integer value

23 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... }

24 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... } After count is incremented, open the file to write (overwrite), write the new number and close file

25 public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println(" A web page counter "); outBrowser.println(" ");..... } The rest is the same

26 Parameters passed by client One of the most important features to make the web an interactive environment is the passing of parameters from client so the server The client can pass parameters with the request according to the following format – http://host:port/servlet?param1=value1&param2=value2 –This means the server will receive 2 parameters: one with name param1 and value value1 and the other with name param2 and value value2 The servlet can ask for those values in the following way: –String valueOfParam1 = request.getParameter(“param1”); –String valueOfParam2 = request.getParameter(“param2”); Parameter names and values are strings Names of parameters are case sensitive (Param1 != param1)

27 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class ServletParameter1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { PrintWriter out = null; response.setContentType("text/html"); // obtaining parameter value for parameter named “firstname" String fname = request.getParameter(“firstname"); // obtaining parameter value for parameter named “lastname" String lname = request.getParameter(“lastname"); out = response.getWriter(); out.println( "Hello "+fname+" “+lname</h1"); out.close(); } http://host:port/ServletParameter1?firstname=Nelson&lastname=Baloian

28 The normal way is to gather parameters with forms A Form is an HTML page which may contain graphical objects to gather information which is sent to the server automatically in an URL Collecting parameters Nombre: Apellido:

29 Collecting parameters Nombre: Apellido: y define the beginning and end of a Formulary which will be filled in order to transfer data to the server ACTION= “…” defines the action that will be taken when the input button is pressed In this case, the URL that will be called

30 Collecting parameters Nombre: Apellido: <INPUT … defines an input (interaction) element This element will be transfered as a parameter to the server with the URL TYPE defines the type of element (TEXT) NAME defines the name of the element, which will also be transfered

31 Collecting parameters Nombre: Apellido: TYPE=SUBMIT defines a button element which will trigger the ACTION defined VALUE=“……” label of the button

32 When pressing the button the URL Shown will be sent The parameters will be automatically added

33 Other Input types Radio: only one element between various alternatives can be chosen Select: like radiobutton but with puldown menu TextArea: like text but can contain many lines. Password: like text but does not show the content (***** instead of what you really input)

34 Radio Elija una laternativa Alternativa 1 Alternativa 2 Alternativa 3

35 Radio Elija una laternativa Uvas Peras Higos Mangos String alt = request.getParameter(“radio1”); if (alt.equals(“valor1”)) out.println(“Ud. Eligió Uvas”); else if (alt.equals(“valor2”)) out.println(“Ud. Eligió Peras”); else if(alt.equals(“valor3”) out.println(“Ud. Eligió Higos”); else out.println(“Ud. Eligió Mangos”); Código para chequear cuál alternativa se seleccionó

36 HTML SERVLET Preview Select (Elección entre varias alternativas con pul-down menu)

37 HTML SERVLET Ingrese aqui su opinion lo que se excriba aca saldra en el area pero se puede editar String texto; texto = request.getParameter(“Ta1”); Text Area


Download ppt "Servlets Servlets are modules that extend the functionality of a “java-enabled” web-server They normally generate HTML code and web content dynamically."

Similar presentations


Ads by Google