to the main page about the tutorial  INTERACTIVE WEB SERVICES WITH JAVA back up next

A Tiny Example

The following is a tiny Web service written using Servlets:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Enter extends HttpServlet 
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException 
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><head><title>Servlet Demo</title></head><body>" +
                    "<form action=\"Hello\">" +
                    "Enter your name: <input name=\"handle\" />" +
                    "<input type=\"submit\" value=\"Continue\" /></form>" +
                    "</body></html>");
    } 
}

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Hello extends HttpServlet 
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException 
    {
        String name = (String) request.getParameter("handle");
        if (name==null) {
            response.sendError(response.SC_BAD_REQUEST, "Illegal request");
            return;
        }
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><head><title>Servlet Demo</title></head><body>");
        ServletContext context = getServletContext();
        if (context.getAttribute("users")==null)
            context.setAttribute("users", new Integer(0));
        int users = ((Integer) context.getAttribute("users")).intValue() + 1;
        context.setAttribute("users", new Integer(users));
        HttpSession session = request.getSession(true);
        session.setAttribute("name", name);
        out.println("<form action=\"Goodbye\">" +
                    "Hello " + name + ", you are user number " + users +
                    "<input type=\"submit\" value=\"Continue\" /></form>" +
                    "</body></html>");
    } 
}

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Goodbye extends HttpServlet 
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException 
    {
        HttpSession session = request.getSession(false);
        if (session==null) {
            response.sendError(response.SC_BAD_REQUEST, "Illegal request");
            return;
        }
        String name = (String) session.getAttribute("name");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><head><title>Servlet Demo</title></head><body>" +
                    "Goodbye " + name + "</body></html>");
        session.invalidate();
    } 
}

An equivalent program written in JWIG:

import java.io.*;
import dk.brics.jwig.runtime.*;

public class ExampleService extends Service 
{
    int counter = 0;
    synchronized int next() { return ++counter; }
    
    public class ExampleSession extends Session 
    {
        XML wrapper = [[ <html><head><title>JWIG Demo</title></head>
                         <body><[body]></body></html> ]]; 
        XML form =  [[ <form><[contents]>
                       <input type="submit" value="Continue" /></form> ]];
        XML hello = [[ Enter your name: <input name="handle" /> ]];
        XML greeting = [[ Hello <[who]>, you are user number <[count]> ]];
        XML goodbye = [[ Goodbye <[who]> ]];

        public void main() throws IOException 
        {
            XML x = wrapper<[body=form];
            show x<[contents=hello];
            String name = receive handle;
            show x<[contents=greeting<[who=name,count=next()]];
            exit wrapper<[body=goodbye<[who=name]];
        }
    }
}

Notable features in the JWIG version:

Look at other small examples.

back COPYRIGHT © 2002-2003 ANDERS MØLLER & MICHAEL I. SCHWARTZBACH next