A Hello, World Servlet
Resin 3.0

Features
Installation
Configuration
Web Applications
IOC/AOP
Resources
JSP
Servlets and Filters
Portlets
Databases
Admin (JMX)
CMP
EJB
Amber
EJB 3.0
Security
XML and XSLT
XTP
JMS
Performance
Protocols
Third-party
Troubleshooting/FAQ

Servlets
Servlet Lib
run-at
Filters
Filter Lib
Tutorials
FAQ

Hello World
Bean-Init
Sub-Bean-Init
Filter Templates
Tutorials
Tutorials
Bean-Init

Find this tutorial in: /usr/local/resin/webapps/resin-doc/servlet/tutorial/helloworld
Try the Tutorial
A trivial "hello, world" servlet

Servlets are the pure Java solution to handle web requests. Many application will use servlets instead of JSP and others will use servlets in conjunction with JSP. Experienced JSP programmers use servlets in conjunction with JSP to create clearer and simpler applications. The servlets handle Java processing: form handing, calculation and database queries. JSP formats the results.

Servlets belong in WEB-INF/classes. On this machine, the source is in Java source in /usr/local/resin/webapps/resin-doc/servlet/tutorial/helloworld/WEB-INF/classes. WEB-INF/classes is the standard location for servlets and other Java classes. Resin automatically reloads and recompiles servlets, beans, and classes placed in WEB-INF/classes. You should make some changes and add errors to become familiar with Resin's recompilation and the error reporting.

Create the following servlet in WEB-INF/classes/test/HelloServlet.java with your favorite text editor: notepad, emacs, vi, or whatever. (On this machine, /usr/local/resin/webapps/resin-doc/servlet/tutorial/helloworld/WEB-INF/classes/test/HelloServlet.java)

WEB-INF/classes/test/HelloServlet.java
package test;

import java.io.*;

import javax.servlet.http.*;
import javax.servlet.*;

public class HelloServlet extends HttpServlet {
  public void doGet (HttpServletRequest req,
                     HttpServletResponse res)
    throws ServletException, IOException
  {
    PrintWriter out = res.getWriter();

    out.println("Hello, world!");
    out.close();
  }
}

Now browse the servlet at /resin-doc/servlet/tutorial/helloworld/hello. Resin will automatically compiles the servlet for you. Browsing servlets differs from page browsing because you're executing a servlet class, not looking at a page. The /hello URL is configured for the hello, world servlet below.

Configuration

Configuration for the servlet is in the WEB-INF/web.xml file.

The servlet needs to be configured and it needs to be mapped to a URL. The <servlet> tag configures the servlet. In our simple example, we just need to specify the class name for the servlet.

The <servlet-mapping> tag specifies the URLs which will invoke the servlet. In our case, the /hello URL invokes the servlet. Because the tutorial webapp is a sub-URL like /doc/servlet/tutorial/helloworld, the actual URL to invoke the servlet is the combination of the two.

WEB-INF/web.xml
<web-app xmlns="http://caucho.com/ns/resin">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>test.HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

Resin allows a short cut for the XML configuration in the example above; you can use XML attributes in place of elements. The Servlet 2.3 standard uses only elements. So the servlet-mapping configuration following the Servlet 2.3 standard would look like:

WEB-INF/web.xml
<web-app xmlns="http://caucho.com/ns/resin">
   <servlet servlet-name="hello"
            servlet-class="test.HelloServlet"/>

   <servlet-mapping url-pattern="/hello"
            servlet-name="hello"/>
</web-app>

The two are entirely equivalent. For larger configurations, using attributes makes the resin.conf or web.xml more readable.

tagmeaning
web-appWeb application top-level tag.

The xmlns="http://caucho.com/ns/resin" lets Resin validate the web.xml configuration. The validator will catch most errors in the web.xml.

Try the Tutorial


Tutorials
Tutorials
Bean-Init
Copyright © 1998-2005 Caucho Technology, Inc. All rights reserved.
Resin® is a registered trademark, and HardCoretm and Quercustm are trademarks of Caucho Technology, Inc.