//========================================
//TimeServlet1.java(class) 
package com.wrox.projsp.ch03.time.controller;import java.util.Enumeration;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;public class TimeServlet1 extends HttpServlet {
  public void init() {
    log("init was called");
  }   public void doGet(HttpServletRequest request, 
                    HttpServletResponse response) throws ServletException, 
                    IOException {
    log("doGet called");    response.setContentType("text/html");    PrintWriter out = response.getWriter();    out.println("<html>");
    out.println("<head><title>");
    out.println("Time Entry System");
    out.println("</title></head>");    out.println("<body>");    out.println("<h2>Welcome to the Time Entry System</h2>");    out.println("<form action=Time1 method=POST>");    String event = request.getParameter("EVENT");
    if (event == null) {      // default case
    } else if (event.equals("ADMIN")) {
      out.println("<h3>Administration Information</h3>");
      out.println("<ul>");
      out.println("<li>Last Modified: " + getLastModified(request));
      out.println("<li>Servlet Info: " + getServletInfo());
      out.println("<li>Servlet Name: " + getServletName());
      out.println("<li>Init Parameters:");      Enumeration initParams = getInitParameterNames();
      out.println("<ul>");
      while (initParams.hasMoreElements()) {
        String paramName = (String) initParams.nextElement();
        String paramValue = getInitParameter(paramName);
        out.println("<li>" + paramName + "=" + paramValue);
      } 
      out.println("</ul>");
      out.println("</ul>");    }     out.println("</form>");    out.println("</body>");
    out.println("</html>");  } 
  public void doPost(HttpServletRequest request, 
                     HttpServletResponse response) throws ServletException, 
                     IOException {
    log("doPost called");
    doGet(request, response);
  } }
//===========================================
//TimeServlet2.java(class)
package com.wrox.projsp.ch03.time.controller;import java.util.Enumeration;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;public class TimeServlet2 extends HttpServlet {
  public void init() {
    log("init was called");
  }   public void doGet(HttpServletRequest request, 
                    HttpServletResponse response) throws ServletException, 
                    IOException {
    log("doGet called");    response.setContentType("text/html");    PrintWriter out = response.getWriter();    out.println("<html>");
    out.println("<head><title>");
    out.println("Time Entry System");
    out.println("</title></head>");    out.println("<body>");    out.println("<h2>Welcome to the Time Entry System</h2>");    out.println("<form action=Time2 method=POST>");    String event = request.getParameter("EVENT");
    if (event == null) {      // default case
    } else if (event.equals("ADMIN")) {
      out.println("<h2>Administration Information</h2>");      out.println("<h3>Webapp and Servlet Engine Info</h3>");      ServletContext context = getServletContext();      out.println("<ul>");
      out.println("<li>Server Info: " + context.getServerInfo());
      out.println("<li>Major Version: " + context.getMajorVersion());
      out.println("<li>Minor Version: " + context.getMinorVersion());
      out.println("<li>Webapp Init Parameters:");      Enumeration webappParams = context.getInitParameterNames();
      out.println("<ul>");
      while (webappParams.hasMoreElements()) {
        String paramName = (String) webappParams.nextElement();
        String paramValue = context.getInitParameter(paramName);        // assume paramName and paramValue don't contain any
        // HTML formatting characters such as <, >, &, " or '
        out.println("<li>" + paramName + "=" + paramValue);
      } 
      out.println("</ul>");      out.println("<h3>Servlet Info</h3>");      ServletConfig config = getServletConfig();      out.println("<li>Last Modified: " + getLastModified(request));
      out.println("<li>Servlet Info: " + getServletInfo());
      out.println("<li>Servlet Name: " + config.getServletName());      out.println("<li>Servlet Init Parameters:");      Enumeration ServletParams = config.getInitParameterNames();
      out.println("<ul>");
      while (ServletParams.hasMoreElements()) {
        String paramName = (String) ServletParams.nextElement();
        String paramValue = config.getInitParameter(paramName);
        out.println("<li>" + paramName + "=" + paramValue);
      } 
      out.println("</ul>");
      out.println("</ul>");    }     out.println("</form>");    out.println("</body>");
    out.println("</html>");  } 
  public void doPost(HttpServletRequest request, 
                     HttpServletResponse response) throws ServletException, 
                     IOException {
    log("doPost called");
    doGet(request, response);
  } }

解决方案 »

  1.   

    //=====================================
    //TimeServlet3
    package com.wrox.projsp.ch03.time.controller;import com.wrox.projsp.ch03.time.controller.beans.Charge;import java.util.Enumeration;
    import java.util.Hashtable;import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    public class TimeServlet3 extends HttpServlet {
      public void init() {
        log("init was called");
      }   public void doGet(HttpServletRequest request, 
                        HttpServletResponse response) throws ServletException, 
                        IOException {
        log("doGet called");    response.setContentType("text/html");    PrintWriter out = response.getWriter();    out.println("<html>");
        out.println("<head><title>");
        out.println("Time Entry System");
        out.println("</title></head>");    out.println("<body>");    out.println("<h2>Welcome to the Time Entry System</h2>");    out.println("<form action=Time3 method=POST>");    HttpSession session = request.getSession();    // find out what we were told to do (if anything)
        String event = request.getParameter("EVENT");
        if (event == null) {
          event = "ENTER_RECORD";   // catch this special case
        } else if (event.equals("")) {
          event = "ENTER_RECORD";   // catch this special case
        }     // main dispatch center
        if (event.equals("ENTER_RECORD")) {      // default case
          out.println("<h3>Enter Charge Record</h3>");
          out.println("<p>User Name<input type=text name=name>");
          out.println("<p>Project<input type=text name=project>");
          out.println("<p>Hours<input type=text name=hours>");
          out.println("<p>Date<input type=text name=date>");
          out.println("<input type=hidden name=EVENT value=NEW_RECORD>");
          out.println("<p><input type=submit>");
          out.println("<input type=reset>");    } else if (event.equals("NEW_RECORD")) {      out.println("<h3>Your Charge Record has been saved</h3>");
          String name = request.getParameter("name");
          String project = request.getParameter("project");
          String hours = request.getParameter("hours");
          String date = request.getParameter("date");      Charge c = new Charge();
          c.setName(name);
          c.setProject(project);
          c.setHours(hours);
          c.setDate(date);      Hashtable h = (Hashtable) session.getAttribute("charges");
          if (h == null) {
            h = new Hashtable();   // first charge
            session.setAttribute("charges", h);
          } 
          h.put(project, c);       // use project as the key
          out.println("Record Details: <p>");
          out.println("Name = " + name + ", Project = " + project 
                      + ", Hours = " + hours + ", Date = " + date);    } else if (event.equals("SUMMARY")) {      out.println("<h3>Summary of your Charge Records</h3>");
          Hashtable h = (Hashtable) session.getAttribute("charges");
          if (h != null) {
            out.println("<ul>");
            Enumeration charges = h.keys();
            while (charges.hasMoreElements()) {
              String proj = (String) charges.nextElement();
              Charge ch = (Charge) h.get(proj);
              out.println("<li>");
              out.println("name = " + ch.getName());
              out.println(", project = " + proj);
              out.println(", hours = " + ch.getHours());
              out.println(", date = " + ch.getDate());
            } 
            out.println("</ul>");
          } 
        } else if (event.equals("ADMIN")) {
          out.println("<h2>Administration Information</h2>");      out.println("<h3>Webapp and Servlet Engine Info</h3>");      ServletContext context = getServletContext();      out.println("<ul>");
          out.println("<li>Server Info: " + context.getServerInfo());
          out.println("<li>Major Version: " + context.getMajorVersion());
          out.println("<li>Minor Version: " + context.getMinorVersion());
          out.println("<li>Webapp Init Parameters:");      Enumeration webappParams = context.getInitParameterNames();
          out.println("<ul>");
          while (webappParams.hasMoreElements()) {
            String paramName = (String) webappParams.nextElement();
            String paramValue = context.getInitParameter(paramName);
            out.println("<li>" + paramName + "=" + paramValue);
          } 
          out.println("</ul>");      out.println("<h3>Servlet Info</h3>");      ServletConfig config = getServletConfig();      out.println("<li>Last Modified: " + getLastModified(request));
          out.println("<li>Servlet Info: " + getServletInfo());
          out.println("<li>Servlet Name: " + config.getServletName());      out.println("<li>Servlet Init Parameters:");      Enumeration ServletParams = config.getInitParameterNames();
          out.println("<ul>");
          while (ServletParams.hasMoreElements()) {
            String paramName = (String) ServletParams.nextElement();
            String paramValue = config.getInitParameter(paramName);
            out.println("<li>" + paramName + "=" + paramValue);
          } 
          out.println("</ul>");
          out.println("</ul>");    }     out.println("</form>");    out.println("<hr>");
        out.println("<form action=Time3 method=POST>");
        out.println("<input type=hidden name=EVENT value=SUMMARY>");
        out.println("<input type=submit value=Summary>");
        out.println("</form>");    out.println("</body>");
        out.println("</html>");  } 
      public void doPost(HttpServletRequest request, 
                         HttpServletResponse response) throws ServletException, 
                         IOException {
        log("doPost called");
        doGet(request, response);
      } }
      

  2.   

    lz恐怕还没懂servlet-mapping的作用
    他是将定义的url给servlet处理
    你看你定义的url和浏览器的url有匹配的吗?第一个例子他是项通过tomcat自定义的invoker来实现,这需要你把servlet.xml中名叫invoker的servlet和servlet-mapping的注释去掉二三例需要你在web.xml中
      <servlet-mapping>
        <servlet-name>Time2</servlet-name>
        <url-pattern>/Time2</url-pattern>
      </servlet-mapping>  <servlet-mapping>
        <servlet-name>Time3</servlet-name>
        <url-pattern>/Time3</url-pattern>
      </servlet-mapping>
    再设置上面的servlet
      

  3.   

    第一例你说的servlet.xml中名叫invoker在什么位置,能不能具体些
    第二例我改了下,不过还是有些问题,调不到xml里的参数,我用out.print输不出此句的
    Enumeration ServletParams = config.getInitParameterNames();信息
    servlet-api.jar配置成功的500错误
    The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.