You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Denis Shurtleff <dc...@draper.com> on 2002/06/17 16:39:17 UTC

I get a 404 when using requestDispatcher (using Tomcat-4.0.2)? servlets

If anyone needs them to be a simple little test or whatever:

Switch.java:

/* 
 * 
 * Switch.java
 *
 * $Author: dcs2120 $
 * $Date: 2001/12/04 15:02:21 $
 * $Revision: 1.2 $
 *
 */
package adminForms;


import java.io.IOException;
import java.io.PrintWriter; 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Test requestDispatcher forwarding.
 */
public final class Switch extends HttpServlet{

    /* the client notification message, used only when running 
       this servlet; not on form generation */
    private String message = "";

    /**
     * Provides HTTP GET action for processing.
     * Not used by the form as it's defined as a POST.
     *
     * @param request the request sent via the QUERYSTRING.
     * @param response the servlet response handler.
     */
    public void doGet
      (HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
        processRequest(request,response);
    }

    /**
     * Provides HTTP POST action for processing.
     * Primary way of accessing this form.
     *
     * @param request the request in the contents.
     * @param response the servlet response handler.
     */
    public void doPost
      (HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
        processRequest(request, response);
    }
     
    /**
     * @return a string containing the form for this servlet.
     */
    public static String getSwitchForm(){
        return " <b>Test RequestDispatcher forwarding.</b>\n" + 
            "<form method=POST name=\"testRd\" " + 
            "action=\"/app/switch\">" +
            "<table>\n" +
            " <tr>\n" +
            "   <td><b>Reload this page.</b></td>\n" +
            "   <td><input type=submit name=\"action\" value=\"" + 
            "Reload\"></td>\n" +
            "  </tr>\n" +
            "  <tr>\n" +
            "   <td><b>Get the panel.</b></td>\n" +
            "   <td><input type=submit name=\"action\" " +
            "value=\"Panel\"></td>\n" +
            "  </tr>\n" +
            "  </table>\n" +
            " </tr>\n" +
            "</table>\n" + 
            "</form>\n";
    }

    /**
     * Redirect the request to another servlet/jsp.
     * 
     * @param address the address to forward the request to.
     * @param request the request to forward.
     * @param response the response to forward.
     */
    private void redirectRequest
        (String address, HttpServletRequest request, 
         HttpServletResponse response) 
    throws IOException, ServletException{
        RequestDispatcher rd = 
            getServletContext().getRequestDispatcher
            (address);
        rd.forward(request, response);
    }
    
    /**
     * Provides HTTP GET action for processing.
     * Not used by the form as it'eees defined as a POST.
     *
     * @param request the request sent via the QUERYSTRING.
     * @param response the servlet response handler.
     */
    private void processRequest
      (HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
        
        // Get all the form parameters; set to null if not found.
        String action  = (String)request.getParameter("action");
        // the form string
        String form   = "";
        // reset message to "" because or reuse issues.
        message = "";
        
        if("Panel".equals(action)){
            redirectRequest("/app/panel", request, response);
        }else if("Reload".equals(action))
            message += "Reload pushed.";
        form = Switch.getSwitchForm();
        
        // great, we must print out a proper html page back
        // to the client.
        PrintWriter printy = new PrintWriter(response.getWriter());
        printy.println
            ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD " + 
             "HTML 4.0 Transitional//EN\">");
        printy.println("<html>\n" + 
                       "<head>\n" + 
                       "<title>RequestDispatcher Test</title>\n" +
                       "</head>\n" +
                       "<body>\n");
        // get the form in there.
        printy.print(form);
        // if we have a message to report; do it.
        if(message != null && message.length() > 0)
            printy.print("<br>\n<i>" + message + "</i>\n");
        // clean up the page by terminating it properly.
        printy.print("</body>\n" +
                     "</html>");
    }
}


Panel.java:

package adminForms;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public final class Panel extends HttpServlet{
    
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
      throws IOException, ServletException {
        processRequest(request,response);
    }
    
    public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
      throws IOException, ServletException {
        processRequest(request,response);
    }

    private void processRequest
      (HttpServletRequest request,HttpServletResponse response)
        throws IOException, ServletException{
        
        String action = (String)request.getParameter( "action" );       
        String form = null;
        
        form = "<h1><b><i>IT WORKED!!!!!" + action + "</i></b></h1>\n";
        
        PrintWriter printy = new PrintWriter(response.getWriter());
        
        printy.print
            ("<html>\n" +
             "<head>\n" +
             "<title>My God did it work?!</title>\n" +
             "</head>\n" +
             "<body>\n");
        printy.print( form );
        printy.print("</body>\n</html>\n");
    }
}

pretty simple.

-Denis Shurtleff

Programmer/Integrator
Charles Stark Draper Labs


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>