Date post: | 10-Apr-2015 |
Category: |
Documents |
Upload: | api-3802159 |
View: | 1,004 times |
Download: | 4 times |
04/11/23 First Servlet 1
Servlets:Building Your First Servlet
Ethan Cerami
New York University
04/11/23 First Servlet 2
Road Map Generic Template for Creating Servlets
Servlet 2.3/2.4 API Hello World Examples
Outputting Text, HTML, and the current time. Compiling your own Servlets
Tips for installing/compiling servlets on Apache Tomcat
Live demo of Tomcat/JCreator running locally. Packaging Servlets HTML Utilities
04/11/23 First Servlet 3
Generic Servlet Template
04/11/23 First Servlet 4
Servlet Template First, let’s 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.
04/11/23 First Servlet 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 }}
04/11/23 First Servlet 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.
04/11/23 First Servlet 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://java.sun.com/products/servlet/2.3/javadoc/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
04/11/23 First Servlet 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: encapsulates 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.
04/11/23 First Servlet 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();
04/11/23 First Servlet 10
Hello World!
04/11/23 First Servlet 11
Hello World! We are finally ready to see our first real
servlet. This servlet outputs “Hello World!” as
plain text, not HTML. Let’s take a look at the code, and then
see the servlet in action. URL:
http://ecerami.com/servlet/HelloWorld
04/11/23 First Servlet 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"); }}
04/11/23 First Servlet 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.
04/11/23 First Servlet 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.
04/11/23 First Servlet 15
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");
PrintWriter out = response.getWriter();out.println("<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>");
}}
HelloWWW.java
04/11/23 First Servlet 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.
04/11/23 First Servlet 17
Time Servlet Let’s try one more simple servlet… Using the java.util.Date object, you can
obtain the current time. Let’s create a simple Servlet that
outputs the current time. URL:
http://ecerami.com/servlet/TimeServlet
04/11/23 First Servlet 18
import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;
public 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("<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n"+ "<H2>Time is now: "+now+"</H2>"+ "</BODY></HTML>"); }}
04/11/23 First Servlet 19
Installing / Compiling Servlets
04/11/23 First Servlet 20
Basic Setup It is recommended that you do all development
on a local computer. This enables you to have complete control over
all your servlets and JSPs. If you do not have access to your own computer,
you can also do all your development on a UNIX account (email me for account information.)
The next few slides provide an overview of local installation. Complete details are available in Chapter 2 of our text and today’s (virtual) handout.
04/11/23 First Servlet 21
Local Installation - Overview
1) Download and install the Java Software Development Kit (SDK).
2) Download Apache Tomcat Servlet Engine.
3) Configure Apache Tomcat.
4) Set up your development environment, including CLASSPATH.
5) Test your setup.
6) Establish a simplified deployment method.
04/11/23 First Servlet 22
Step 1: Download Java SDK Complete details and URLs are
available in handout. It is best to download Java 1.4 Once you have installed the SDK, verify
that it works (see handout.)
04/11/23 First Servlet 23
Step 2: Download a Server A number of Servlet engines are available for
download: Apache Tomcat: Open Source Servlet Engine. Macromedia JRun Caucho Resin New Atlanta ServletExec Jetty
Recommended: Apache Tomcat
04/11/23 First Servlet 24
Step 3: Configure Tomcat Again, complete details are in handout. Important Details:
Specify a server port: 8080 or 80. Enable Servlet Reloading: When activated,
Tomcat will automatically reload modified class files. Otherwise, you have to continually stop/start the server (very annoying)
Enable the ROOT context: good place to put all your class projects.
Turn on the Servlet Invoker: makes it easier to deploy new servlets with minimal configuration.
04/11/23 First Servlet 25
Step 4: Dev. Environment
Once you have confirmed that your servlet engine is running, you need to set-up your development environment.
Set up your CLASSPATH: You must modify your CLASSPATH to
include servlet.jar.
04/11/23 First Servlet 26
Step 5: Test your Setup Handout includes three tests to verify
that your set-up is working correctly: Create a servlet that does not use
packages. Create a servlet that does use packages. Create a servlet that does use packages
and a separate utility class.
04/11/23 First Servlet 27
Step 6: Simplify Development Handout includes several options. Recommended, but not required: the best
option is to use a Java IDE to do servlet development.
A number of Java IDEs are available. If you are already familiar to one, feel free to
use it. Otherwise, try out JCreator:
http://www.jcreator.com/ (Freeware)
04/11/23 First Servlet 28
Tips on Using JCreator Course web site includes tutorials on
using JCreator. To use JCreator for servlet
development: Make sure that servlet.jar is in your
CLASSPATH. Output class files to your tomcat directory:
webapps/ROOT/WEB-INF/classes
04/11/23 First Servlet 29
Live Demo On my laptop, I have:
Java 1.4 Apache Tomcat JCreator
Let’s see how it all works…
04/11/23 First Servlet 30
Packaging Servlets
04/11/23 First Servlet 31
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.
04/11/23 First Servlet 32
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
named coreservlets*. You therefore need to create a coreservlets
directory and place your code here.
04/11/23 First Servlet 33
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: javac coreservlets/HelloWWW2.java
04/11/23 First Servlet 34
package coreservlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class HelloWWW2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "<H2>This is a servlet within a package.</H2>"+ "</BODY></HTML>"); }}
04/11/23 First Servlet 35
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
04/11/23 First Servlet 36
HTML Utilities
04/11/23 First Servlet 37
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. Let’s first examine the ServletUtilities
class, and then examine how to use it.
04/11/23 First Servlet 38
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 <TITLE> tag.
04/11/23 First Servlet 39
package coreservlets;import javax.servlet.*;import javax.servlet.http.*;
/** Some simple time savers. Note that most are static methods.*/public class ServletUtilities { public static final String DOCTYPE = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">";
public static String headWithTitle(String title) { return(DOCTYPE + "\n" + "<HTML>\n" + "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n"); }...}
04/11/23 First Servlet 40
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;
04/11/23 First Servlet 41
package coreservlets;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public 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") + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); }}
04/11/23 First Servlet 42
Next Steps… Start Studying the Servlet API
HttpServlet, HttpServletRequest, HttpServletResponse are very important.
Study the beginner examples.
Start working on Tomcat. Get your servlets running today. Experiment with packaged servlets. Experiment with the Servlet Utilities class.