One of the useful things a servlet can do using status codes and a header is redirecting a request. This is done by sending instructions for the client to use another URL in the responses. Redirection is generally used when a document moves (to send the client to new location), for load balancing, or for simple randomization.

This example shows a servlet that performs a random-redirect, sending a client to a random site selected from its site list.

 import java.io.*;
import java.sql.Date;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class DemoSiteSelector extends HttpServlet{
    
    Vector sites = new Vector();
    Random random = new Random();
    
    public void init(ServletConfig config)throws ServletException{
        
        super.init(config);
        sites.addElement("http://www.google.com");
        sites.addElement("http://www.java-tips.org");
        sites.addElement("http://www.yahoo.com");
        sites.addElement("http://www.rediffmail.com");
        
    }
    public void doGet(HttpServletRequest req,HttpServletResponse res)
            throws ServletException,IOException{
        
        res.setContentType("text/plain");
        PrintWriter out= res.getWriter();
        int siteIndex = Math.abs(random.nextInt())%sites.size();
        String site = (String) sites.elementAt(siteIndex);
        res.setStatus(res.SC_MOVED_TEMPORARILY);
        res.setHeader("Location", site);
        
    }
}

The actual redirection happened in two lines

   res.setStatus(res.SC_MOVED_TEMPORARILY);
  res.setHeader("Location", site);

These two lines can be simplified to one using the sendRedirect convenience method:

   res.sendRedirect(site);

  public void HttpServletRequest.sendRedirect(String location) throws IOException