Servlets: Building Your First Servlet - PowerPoint PPT Presentation

About This Presentation
Title:

Servlets: Building Your First Servlet

Description:

Servlets: Building Your First Servlet Ethan Cerami New York University – PowerPoint PPT presentation

Number of Views:147
Avg rating:3.0/5.0
Slides: 36
Provided by: Cera79
Learn more at: http://www.cs.rpi.edu
Category:

less

Transcript and Presenter's Notes

Title: Servlets: Building Your First Servlet


1
ServletsBuilding Your First Servlet
  • Ethan Cerami
  • New York University

2
Road Map
  • Generic Template for Creating Servlets
  • Servlet 2.2 API
  • Hello World Examples
  • Outputting Text, HTML, and the current time.
  • Compiling your own Servlets
  • Instructions for installing/compiling servlets on
    I5
  • Packaging Servlets
  • HTML Utilities

3
Generic Servlet Template
4
Servlet Template
  • First, lets take a look at a generic servlet
    template.
  • The code does not actually do anything, but all
    your future servlets will follow this general
    structure.
  • The most important pieces are noted in yellow.

5
import java.io. import javax.servlet. import
javax.servlet.http. public class
ServletTemplate extends HttpServlet public
void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
// Use "request" to read incoming HTTP headers
// (e.g. cookies) and HTML form data (e.g. data
the user // entered and submitted).
// Use "response" to specify the HTTP response
status // code and headers (e.g. the content
type, cookies). PrintWriter out
response.getWriter() // Use "out" to send
content to browser
6
Generic Template
  • Import the Servlet API
  • import javax.servlet.
  • import javax.servlet.http.
  • To create servlets, you must remember to always
    use these two import statements.

7
Generic Template
  • All your servlets must extend HTTPServlet.
  • HTTPServlet represents the base class for
    creating Servlets within the Servlet API.
  • The Full Servlet API is available at
  • http//www.java.sun.com/products/servlet/2.2/javad
    oc/index.html
  • Once you have extended HTTPServlet, you must
    override one or both
  • doGet() to capture HTTP Get Requests
  • doPost() to capture HTTP Post Requests

8
doGet and doPost
  • The doGet() and doPost() methods each take two
    parameters
  • HTTPServletRequest encapsulates all information
    regarding the browser request.
  • Form data, client host name, HTTP request
    headers.
  • HTTPServletResponse encapsulate all information
    regarding the servlet response.
  • HTTP Return status, outgoing cookies, HTML
    response.
  • If you want the same servlet to handle both GET
    and POST, you can have doGet call doPost or vice
    versa.

9
Getting an OutputStream
  • The HTTPResponse object has a getWriter() method.
  • This method returns a java.io.PrintWriter object
    for writing data out to the Web Browser.
  • PrintWriter out response.getWriter()

10
Hello World!
11
Hello World!
  • We are finally ready to see our first real
    servlet.
  • This servlet outputs Hello World! as plain
    text, not HTML.
  • Note All examples are available on the web
    site.
  • Lets take a look at the code, and then see the
    servlet in action.

12
import java.io. import javax.servlet. import
javax.servlet.http. public class HelloWorld
extends HttpServlet public void
doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException PrintWriter
out response.getWriter()
out.println("Hello World")
13
Output Stream
  • Once you have an OutputStream object, you just
    call the println() method to output to the
    browser.
  • Anything you print will display directly within
    the web browser.
  • As we will now see, you can also output any HTML
    tags.

14
Generating HTML
  • To generate HTML, you need to add two steps
  • Tell the browser that you are sending back HTML.
  • Modify the println() statements to return valid
    HTML.

15
HelloWWW.java
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
response.setContentType("text/html") PrintWrite
r out response.getWriter() out.println("ltHTMLgt
\n" "ltHEADgtltTITLEgtHello
WWWlt/TITLEgtlt/HEADgt\n"
"ltBODYgt\n" "ltH1gtHello
WWWlt/H1gt\n" "lt/BODYgtlt/HTMLgt")

16
Generating HTML
  • To return HTML, you must set the content MIME
    type to text/html
  • response.setContentType("text/html")
  • Remember that you must set the content type
    before you output any content.
  • Once you have set the MIME type, you can return
    any HTML document you want.

17
Time Servlet
  • Lets try one more simple servlet
  • Using the java.util.Date object, you can obtain
    the current time.
  • Lets create a simple Servlet that outputs the
    current time.

18
import java.io. import java.util. import
javax.servlet. import javax.servlet.http. pub
lic class TimeServlet extends HttpServlet
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException
response.setContentType("text/html") Date
now new Date() PrintWriter out
response.getWriter() out.println("ltHTMLgt\n"
"ltHEADgtltTITLEgtHello
WWWlt/TITLEgtlt/HEADgt\n"
"ltBODYgt\n" "ltH1gtHello
WWWlt/H1gt\n" "ltH2gtTime is now
"now"lt/H2gt" "lt/BODYgtlt/HTMLgt")

19
Installing / Compiling Servlets
20
Basic Setup
  • I5 now has the Jakarta-Tomcat Servlet Engine
    installed.
  • Tomcat is an open source servlet engine.
  • Supports both Servlets and JSPs.
  • Maintained by the same group that develops the
    Apache Web Server.

21
Tomcat Set-up
Send request to port 9712
Web Browser
Tomcat Servlet Engine
Hello World Servlet
22
Getting Started
  • Lets take a look at todays handout.
  • Handout is also available online at
  • http//ecerami.com/applied_fall_2001/handouts/i5_s
    ervlets.php4
  • Change to handout
  • CLASSPATH"/usr/local/jakarta-tomcat-3.2.3/lib/ser
    vlet.jar."

Add . to Classpath!
23
Packaging Servlets
24
What is a Package?
  • Package Group of related classes.
  • For example
  • package coreservlets
  • In real web sites, multiple programmers may be
    creating multiple servlets.
  • By dividing your code base into packages, it
    helps to modularize the code.
  • A very common practice in the real world, and
    used throughout our textbook.

25
Creating Packages
  • To create your own package, you need to follow
    three steps
  • Move your .java files to a subdirectory that
    matches your package name.
  • For example, the text book uses the package name
    coreservlets.
  • You therefore need to create a coreservlets
    directory within /public_html/tomcat/WEB-INF/clas
    ses and place your code here.

26
Creating Packages
  • Insert a package statement in the first line of
    your class file
  • For example package coreservlets
  • Compile your Java code like this
  • type servlets
  • type javac coreservlets/HelloWWW2.java

27
package coreservlets import java.io. import
javax.servlet. import javax.servlet.http. pub
lic class HelloWWW2 extends HttpServlet
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("ltHTMLgt\n"
"ltHEADgtltTITLEgtHello WWWlt/TITLEgtlt/HEADgt\n"
"ltBODYgt\n" "ltH1gtHello
WWWlt/H1gt\n" "ltH2gtThis is a
servlet within a package.lt/H2gt"
"lt/BODYgtlt/HTMLgt")
28
Invoking a Packaged Servlet
  • To invoke a packaged servlet, you need to specify
    the package name and the servlet name
  • http//host/servlet/packageName.servletName
  • For example, to access the HelloWWW2 servlet on
    ecerami.com
  • http//ecerami.com/servlet/coreservlets.HelloWWW2
  • To access the servlet on I5
  • http//i5.nyu.edu9712/eqc3844/servlet/coreservlet
    s.HelloWWW2

29
HTML Utilities
30
Servlet Utilities
  • Author of our text book has created a class
    called ServletUtilities.
  • This class contains some simple HTML utilities
    that you can use.
  • As we read further in the book, the author adds
    more utilities to this class.
  • Lets first examine the ServletUtilities class,
    and then examine how to use it.

31
ServletUtilities.java
  • For now, let us examine just one method
    headWithTitle().
  • This method outputs
  • HTML DOCTYPE, used to specify which version of
    HTML we are using.
  • The title of the page via the HTML ltTITLEgt tag.

32
package coreservlets import javax.servlet. impo
rt javax.servlet.http. / Some simple time
savers. Note that most are static
methods. / public class ServletUtilities
public static final String DOCTYPE
"lt!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
"Transitional//EN\"gt" public static
String headWithTitle(String title)
return(DOCTYPE "\n" "ltHTMLgt\n"
"ltHEADgtltTITLEgt" title
"lt/TITLEgtlt/HEADgt\n") ...
33
Using Servlet Utilities
  • To use the Servlet Utilities class, you just need
    to call the headWithTitle() method
  • ServletUtilities.headWithTitle("Hello WWW")
  • If you are placing your servlet in a different
    package, you also need to import coreservlets

34
package coreservlets import java.io. import
javax.servlet. import javax.servlet.http. pub
lic class HelloWWW3 extends HttpServlet
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println(ServletUtilities.headWithTitle("Hello
WWW") "ltBODYgt\n"
"ltH1gtHello WWWlt/H1gt\n"
"lt/BODYgtlt/HTMLgt")
35
Compiling
  • To compile this servlet
  • Download ServletUtilities.java and copy to your
    coreservlets directory.
  • Download HelloWorldWWW3.java and copy to your
    coreservlets directory.
  • Type
  • javac coreservlets/HelloWWW3.java
  • Then, open browser and go to
  • http//i5.nyu.edu9712/NET-ID/servlet/coreservle
    ts.HelloWWW3
Write a Comment
User Comments (0)
About PowerShow.com