first servlet

42
06/11/22 First Servlet 1 Servlets: Building Your First Servlet Ethan Cerami New York University

Upload: api-3802159

Post on 10-Apr-2015

1.009 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: First Servlet

04/11/23 First Servlet 1

Servlets:Building Your First Servlet

Ethan Cerami

New York University

                                                                                                                                                                 

Page 2: First Servlet

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

Page 3: First Servlet

04/11/23 First Servlet 3

Generic Servlet Template

Page 4: First Servlet

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.

Page 5: First Servlet

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 }}

Page 6: First Servlet

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.

Page 7: First Servlet

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

Page 8: First Servlet

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.

Page 9: First Servlet

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();

Page 10: First Servlet

04/11/23 First Servlet 10

Hello World!

Page 11: First Servlet

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

Page 12: First Servlet

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"); }}

Page 13: First Servlet

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.

Page 14: First Servlet

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.

Page 15: First Servlet

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

Page 16: First Servlet

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.

Page 17: First Servlet

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

Page 18: First Servlet

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>"); }}

Page 19: First Servlet

04/11/23 First Servlet 19

Installing / Compiling Servlets

Page 20: First Servlet

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.

Page 21: First Servlet

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.

Page 22: First Servlet

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.)

Page 23: First Servlet

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

Page 24: First Servlet

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.

Page 25: First Servlet

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.

Page 26: First Servlet

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.

Page 27: First Servlet

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)

Page 28: First Servlet

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

Page 29: First Servlet

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…

Page 30: First Servlet

04/11/23 First Servlet 30

Packaging Servlets

Page 31: First Servlet

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.

Page 32: First Servlet

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.

Page 33: First Servlet

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

Page 34: First Servlet

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>"); }}

Page 35: First Servlet

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

Page 36: First Servlet

04/11/23 First Servlet 36

HTML Utilities

Page 37: First Servlet

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.

Page 38: First Servlet

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.

Page 39: First Servlet

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"); }...}

Page 40: First Servlet

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;

Page 41: First Servlet

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>"); }}

Page 42: First Servlet

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.