Jump to: navigation, search

Difference between revisions of "Jetty/Tutorial/Jetty HelloWorld"

m
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Jetty Tutorial
 
{{Jetty Tutorial
 
| introduction =  
 
| introduction =  
To develop against the Jetty API's you need Jetty jars on your classpathThis can be done with maven and/or IDE tools like m2eclipse.  However, this tutorial shows you the simplest possible approach to building and running a Jetty server.
+
This tutorial shows how you can develop code against the Jetty API with the jetty classes on  
 +
your class pathIf you want to use Maven or standard web applications, see the  
 +
[[Jetty/Tutorial/Jetty_and_Maven_HelloWorld|Jetty and Maven HelloWorld tutorial]].
 +
 
 +
 
 
| details =  
 
| details =  
  
 
=== Downloading the Jars ===
 
=== Downloading the Jars ===
Normally it is best to let a tool like maven manage the jetty jars and dependencies. But for this tutorial, we will manually download jars from the maven repository.
+
Jetty is decomposed into many [[Jetty/Reference/Dependencies|jars and dependencies]] to achieve a minimal footprint by selecting the minimal set of jars.  Typically it is best to use something like Maven to manage jars (see [[Jetty/Tutorial/Jetty_and_Maven_ HelloWorld|Jetty and Maven HelloWorld Tutorial]]), but for this tutorial, we will use an aggregate jar that contains all of the jetty classes in one jar.  
  
You can use the many individual jetty jars, if you want the minimal footprint, but for this tutorial we will download the aggregate-all jar, that contains all the jetty classes in a single jar. We also need to download a servlet API jar.
+
You can manually download the jetty aggregate-all jar and the servlet api jar using [http://www.gnu.org/software/wget/ wget] or similar command (for example, [http://curl.haxx.se/ curl]) or a browser.  Use wget as follows:
 
+
The downloads can be done with wget or similar command (eg curl) or a browser as follows:
+
  
 
<source lang="bash">
 
<source lang="bash">
wget -U none http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/7.0.1.v20091125/jetty-all-7.0.1.v20091125.jar
+
mkdir Demo
 +
cd Demo
 +
JETTY_VERSION=7.0.2.v20100331
 +
wget -U none http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/$JETTY_VERSION/jetty-all-$JETTY_VERSION.jar
 
wget -U none http://repo1.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
 
wget -U none http://repo1.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
 
</source>
 
</source>
  
 +
=== Writing a HelloWorld Example ===
 +
 +
The [[Jetty/Tutorial/Embedding Jetty|Embedding Jetty]] tutorial contains many examples of writing against the Jetty API. For this tutorial, we will use a simple HelloWorld handler with a main method to run the server. In an editor, edit the file <tt>HelloWorld.java</tt> and add the following content:
 +
 +
<source lang="java">
 +
import javax.servlet.http.HttpServletRequest;
 +
import javax.servlet.http.HttpServletResponse;
 +
import javax.servlet.ServletException;
 +
 +
import java.io.IOException;
 +
 +
import org.eclipse.jetty.server.Server;
 +
import org.eclipse.jetty.server.Request;
 +
import org.eclipse.jetty.server.handler.AbstractHandler;
 +
 +
public class HelloWorld extends AbstractHandler
 +
{
 +
    public void handle(String target,
 +
                      Request baseRequest,
 +
                      HttpServletRequest request,
 +
                      HttpServletResponse response)
 +
        throws IOException, ServletException
 +
    {
 +
        response.setContentType("text/html;charset=utf-8");
 +
        response.setStatus(HttpServletResponse.SC_OK);
 +
        baseRequest.setHandled(true);
 +
        response.getWriter().println("<h1>Hello World</h1>");
 +
    }
 +
 +
    public static void main(String[] args) throws Exception
 +
    {
 +
        Server server = new Server(8080);
 +
        server.setHandler(new HelloWorld());
 +
 +
        server.start();
 +
        server.join();
 +
    }
 +
}
 +
</source>
 +
 +
=== Compiling the HelloWord example ===
 +
The following command  compiles the HelloWorld class:
 +
 +
<source lang="bash">
 +
javac -cp servlet-api-2.5.jar:jetty-all-$JETTY_VERSION.jar HelloWorld.java
 +
</source>
 +
 +
=== Running the Handler and Server ===
 +
The following command runs the HelloWorld example:
 +
 +
<source lang="bash">
 +
java -cp .:servlet-api-2.5.jar:jetty-all-$JETTY_VERSION.jar HelloWorld
 +
</source>
 +
 +
You can now point your browser at <nowiki>http://localhost:8080</nowiki> to see your hello world page.
 +
 +
 +
== Next Steps ==
 +
* Follow the examples in [[Jetty/Tutorial/Embedding Jetty]] tutorial to better understand the jetty APIs
 +
* Explore the complete [http://download.eclipse.org/jetty/stable-7/apidocs/ jetty javadoc]
 +
* Consider using [[Jetty/Tutorial/Jetty_and_Maven_HelloWorld|Jetty and Maven]] to manage your jars and dependencies.
 +
* Review other options to [[Jetty/Howto/Develop|Howto Develop with Jetty]]
  
 
}}
 
}}

Revision as of 12:34, 19 August 2010



Introduction

This tutorial shows how you can develop code against the Jetty API with the jetty classes on your class path. If you want to use Maven or standard web applications, see the Jetty and Maven HelloWorld tutorial.

Details

Downloading the Jars

Jetty is decomposed into many jars and dependencies to achieve a minimal footprint by selecting the minimal set of jars. Typically it is best to use something like Maven to manage jars (see Jetty and Maven HelloWorld Tutorial), but for this tutorial, we will use an aggregate jar that contains all of the jetty classes in one jar.

You can manually download the jetty aggregate-all jar and the servlet api jar using wget or similar command (for example, curl) or a browser. Use wget as follows:

mkdir Demo
cd Demo
JETTY_VERSION=7.0.2.v20100331
wget -U none http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/$JETTY_VERSION/jetty-all-$JETTY_VERSION.jar
wget -U none http://repo1.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar

Writing a HelloWorld Example

The Embedding Jetty tutorial contains many examples of writing against the Jetty API. For this tutorial, we will use a simple HelloWorld handler with a main method to run the server. In an editor, edit the file HelloWorld.java and add the following content:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
 
import java.io.IOException;
 
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
 
public class HelloWorld extends AbstractHandler
{
    public void handle(String target,
                       Request baseRequest,
                       HttpServletRequest request,
                       HttpServletResponse response) 
        throws IOException, ServletException
    {
        response.setContentType("text/html;charset=utf-8");
        response.setStatus(HttpServletResponse.SC_OK);
        baseRequest.setHandled(true);
        response.getWriter().println("<h1>Hello World</h1>");
    }
 
    public static void main(String[] args) throws Exception
    {
        Server server = new Server(8080);
        server.setHandler(new HelloWorld());
 
        server.start();
        server.join();
    }
}

Compiling the HelloWord example

The following command compiles the HelloWorld class:

javac -cp servlet-api-2.5.jar:jetty-all-$JETTY_VERSION.jar HelloWorld.java

Running the Handler and Server

The following command runs the HelloWorld example:

java -cp .:servlet-api-2.5.jar:jetty-all-$JETTY_VERSION.jar HelloWorld

You can now point your browser at http://localhost:8080 to see your hello world page.


Next Steps