Servlets - PowerPoint PPT Presentation

About This Presentation
Title:

Servlets

Description:

Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet ... – PowerPoint PPT presentation

Number of Views:108
Avg rating:3.0/5.0
Slides: 33
Provided by: dccUchil
Category:
Tags: servlet | servlets

less

Transcript and Presenter's Notes

Title: Servlets


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()
//Sobreescribir para que haga lo que
queramos public void doGet (
HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException
//Sobreescribir para que haga lo que queramos
public void doPost( HttpServletRequest
request,
HttpServletResponse response)
throws ServletException, IOException
//Sobreescribir para que haga lo que queramos

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, clients 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 ( HttpServletRequest request,
  • 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("ltHTMLgt")
  • out.println("ltH1gt Mi Primer Servlet lt/H1gt")
  • out.println("ltBRgt ltH2gtFecha y hora "(new
    Date())"ltH2gt")
  • out.println("lt/HTMLgt")

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 ( HttpServletRequest request,
  • 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("ltHTMLgt")
  • out.println("ltH1gt Mi Primer Servlet lt/H1gt")
  • out.println("ltBRgt ltH2gtFecha y hora "(new
    Date())"ltH2gt")
  • out.println("lt/HTMLgt")

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 ( HttpServletRequest request,
  • 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("ltHTMLgt")
  • out.println("ltH1gt Mi Primer Servlet lt/H1gt")
  • out.println("ltBRgt ltH2gtFecha y hora "(new
    Date())"ltH2gt")
  • out.println("lt/HTMLgt")

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 ( HttpServletRequest request,
  • 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("ltHTMLgt")
  • out.println("ltH1gt Mi Primer Servlet lt/H1gt")
  • out.println("ltBRgt ltH2gtFecha y hora "(new
    Date())"ltH2gt")
  • out.println("lt/HTMLgt")

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 ( HttpServletRequest request,
  • 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("ltHTMLgt")
  • out.println("ltH1gt Mi Primer Servlet
    lt/H1gt")
  • out.println("ltBRgt ltH2gtFecha y hora "(new
    Date())"ltH2gt")
  • out.println("lt/HTMLgt")

Print data to browser
Get date and time from system
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("ltH1gt A web page
counter lt/H1gt") out.println("ltHRgt")
out.println("This servlet was accessed "count"
time(s)") out.println("ltHRgt")
out.println("Your computer is "req.getRemoteHost
()) out.println("ltHRgt")
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("ltH1gt A web page
counter lt/H1gt") out.println("ltHRgt")
out.println("This servlet was accessed "count"
time(s)") out.println("ltHRgt")
out.println("Your computer is "req.getRemoteHost
()) out.println("ltHRgt")
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("ltH1gt A web page
counter lt/H1gt") out.println("ltHRgt")
out.println("This servlet was accessed "count"
time(s)") out.println("ltHRgt")
out.println("Your computer is "req.getRemoteHost
()) out.println("ltHRgt")
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("ltH1gt A web page
counter lt/H1gt") out.println("ltHRgt")
out.println("This servlet was accessed "count"
time(s)") out.println("ltHRgt")
out.println("Your computer is "req.getRemoteHost
()) out.println("ltHRgt")
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("ltH1gt A web page
counter lt/H1gt") out.println("ltHRgt")
out.println("This servlet was accessed "count"
time(s)") out.println("ltHRgt")
out.println("Your computer is "req.getRemoteHost
()) out.println("ltHRgt")
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
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("ltH1gt A web
page counter lt/H1gt") outBrowser.println("
ltHRgt") ..... .....
The rest is the same
26
Exercise
  • Escriba un servlet que genere un número aleatorio
    entre 1 y 100 cada vez que es contactado y lo
    muestra al cliente junto con la IP del computador
    del cliente
  • Además muestra el número más grande generado
    hasta ahora y la IP del computador para el cual
    lo generó
  • La dirección del computador del cliente puede ser
    obtenida
  • String s request.getRemoteHost()
  • returns the IP number (like 133.8.109.158
  • String s request.getRemoteAddress()
  • returns the name if it can be retrieved (like
    www.waseda.jp)
  • Un número aleatorio entre 1 y 100 se genera con
    la siguiente instrucción en Java
  • int numero (int)(1 Math.random()100)

27
(No Transcript)
28
import java.io. import javax.servlet.
import javax.servlet.http. public class
NewServlet extends HttpServlet int
maxNumber 0 String maxIP ""
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException
int aleatorio (int)(1 Math.random()100)
String ip request.getRemoteAddr() if
(aleatorio gt maxNumber) maxNumber
aleatorio maxIP ip
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lth1gt Bienvenido lt/h1gtltbrgt")
out.println("lth2gt Su dirección IP es " ip
"ltbrgt") out.println("Su número es
"aleatorio"ltbrgtltbrgt") out.println("El
numero mayor generado es "maxNumber)
out.println("ltbrgtFue generado para "maxIP)
out.close()
29
import java.io. import javax.servlet.
import javax.servlet.http. public class
NewServlet extends HttpServlet int
maxNumber 0 String maxIP ""
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException
int aleatorio (int)(1 Math.random()100)
String ip request.getRemoteAddr() if
(aleatorio gt maxNumber) maxNumber
aleatorio maxIP ip
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lth1gt Bienvenido lt/h1gtltbrgt")
out.println("lth2gt Su dirección IP es " ip
"ltbrgt") out.println("Su número es
"aleatorio"ltbrgtltbrgt") out.println("El
numero mayor generado es "maxNumber)
out.println("ltbrgtFue generado para "maxIP)
out.close()
Inicializacion variables para guardar La IP y el
valor del máximo
30
import java.io. import javax.servlet.
import javax.servlet.http. public class
NewServlet extends HttpServlet int
maxNumber 0 String maxIP ""
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException
int aleatorio (int)(1 Math.random()100)
String ip request.getRemoteAddr()
if (aleatorio gt maxNumber)
maxNumber aleatorio maxIP ip
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lth1gt Bienvenido lt/h1gtltbrgt")
out.println("lth2gt Su dirección IP es " ip
"ltbrgt") out.println("Su número es
"aleatorio"ltbrgtltbrgt") out.println("El
numero mayor generado es "maxNumber)
out.println("ltbrgtFue generado para "maxIP)
out.close()
Generación número aleatorio
Obtencion ip del cliente
31
import java.io. import javax.servlet.
import javax.servlet.http. public class
NewServlet extends HttpServlet int
maxNumber 0 String maxIP ""
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException
int aleatorio (int)(1 Math.random()100)
String ip request.getRemoteAddr()
if (aleatorio gt maxNumber)
maxNumber aleatorio maxIP ip
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lth1gt Bienvenido lt/h1gtltbrgt")
out.println("lth2gt Su dirección IP es " ip
"ltbrgt") out.println("Su número es
"aleatorio"ltbrgtltbrgt") out.println("El
numero mayor generado es "maxNumber)
out.println("ltbrgtFue generado para "maxIP)
out.close()
Actualización de los datos del máximo generado
32
import java.io. import javax.servlet.
import javax.servlet.http. public class
NewServlet extends HttpServlet int
maxNumber 0 String maxIP ""
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException
int aleatorio (int)(1 Math.random()100)
String ip request.getRemoteAddr() if
(aleatorio gt maxNumber) maxNumber
aleatorio maxIP ip
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lth1gt Bienvenido lt/h1gtltbrgt")
out.println("lth2gt Su dirección IP es " ip
"ltbrgt") out.println("Su número es
"aleatorio"ltbrgtltbrgt") out.println("El
numero mayor generado es "maxNumber)
out.println("ltbrgtFue generado para "maxIP)
out.close()
Enviar info al cliente
Write a Comment
User Comments (0)
About PowerShow.com