form.html<html>
<body>
<form method="GET" action="servlet/ColorServlet">
选择你喜欢的颜色:
<select name="color">
<option value="red">红色</option>
<option value="yellow">黄色</option>
<option value="blue">蓝色</option>
<option value="white">白色</option>
<option value="black">黑色</option>
</select>
<input type="submit" value="提交">
</form>
</body>
</html>ColorServlet.javaimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class ColorServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
String color = req.getParameter("color");
String colorName = "";
if (color.equals("red"))
colorName = "红色";
else if (color.equals("yellow"))
colorName = "黄色";
else if (color.equals("blue"))
colorName = "蓝色";
else if (color.equals("white"))
colorName = "白色";
else if (color.equals("black"))
colorName = "黑色";
res.setContentType("text/html; charset=GBK");
PrintWriter pw = res.getWriter();
pw.println("<html><body>");
pw.println("你选择了<b>" + colorName + "</b><br>");
pw.println("</body></html>");
}
}按照书中的方法,下面是文件夹中的内容webapps
--------mystudy
----------------form.html
----------------WEB-INF
------------------------web.xml
------------------------classes
--------------------------------ColorServlet.class然后又修改了tomcat/conf/web.xml中的部分内容如下,只是删除了下面两处的注释而已    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <!-- The mapping for the deprecated invoker servlet -->
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
但是运行不给力啊,当选择红色提交后,提示错误HTTP 400错误的请求,难道书上说的有误,在此请教大家应该如何运行这个Servlet,你们的举手之劳对一个刚刚入门的菜鸟会是无比的重要,谢谢大家了。

解决方案 »

  1.   

     <servlet-class>
              org.apache.catalina.servlets.InvokerServlet
            </servlet-class>
    这个地方是你写的那个ColorServlet class.这指哪里去了.
      

  2.   

    <form method="GET" action="servlet/ColorServlet">你的问题出在这里
    action=“servlet的链接地址”
    出现400错误可以很确定的告诉你是无法访问的问题。说明没有服务器上没有你要访问的文件。从客户端请求的话一定要指明是那个服务器
    即  action=“/webproject/servlet/任意”
    webproject是你的工程名称,任意是因为你配的的是/servlet/*
      

  3.   

    看看地址栏改变了没··如果改变了·你出错就在Servlet里面··如果没错··那就很可能是WEB.xml配置不对··你的代码没时间看了··呵呵··你按照上面的内容去调一下吧··
      

  4.   

    有没有哪个好心人帮帮忙写一下web.xml文件,我已经明白是这个文件出错了,但书上没有明确说要怎么写,我也很迷惘,不知如何下手。文件的详细目录前面已经列出来了,两个主要文件也给出了。就差一个web.xml文件了,大家帮帮忙,小弟不胜感激。
      

  5.   

    1,2楼说到的情况就基本接近了,你去按他们的想法好好的检查一下,不过我再给个比较少见的案例给你如果你是住在学校的在校学生的话,有时候是与上网的宽带登陆器dr.com起冲突了,卸载看看....
    我就是属于这个特殊的情况dr.com城市热点这个公司确实很恶劣.....
      

  6.   


    我曾经也被dr.com城市热点害过...
      

  7.   

    CSDN的确水了点,看来大牛都不屑于来这里,剩下的都是菜鸟忽悠菜鸟,悲剧
      

  8.   

    ?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <servlet>
        <description>servlet</description>
        <display-name>servlet</display-name>
        <servlet-name>PaymentRequest</servlet-name>
        <servlet-class>cn.itc.servlet.ColorServlet</servlet-class>
      </servlet>
      
    //这是映射路径。一般的404都出在这个地方
      <servlet-mapping>
        <servlet-name>PaymentRequest</servlet-name>
        <url-pattern>/servlet/colorServlet</url-pattern>
      </servlet-mapping>
        <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  9.   

    上面的给成<servlet-name>ColorServlet<servlet-name>   上面颜色的判断 能不能用 枚举和switch语句来完成呀
      

  10.   

    <servlet>
            <servlet-name>invoker</servlet-name>
            <servlet-class>
              org.apache.catalina.servlets.InvokerServlet//这里应该是你的类的路径如:com.ColorServlet
            </servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>    //这里的可选值是0或者1吧 为1时tomcat启动时加载该servlet 否则tomcat在有人第一次请求该servlet的时候才加载
        </servlet>
    你试试看吧
      

  11.   

    哦 还有这里也改一下
    <servlet-mapping>
            <servlet-name>invoker</servlet-name>
            <url-pattern>/servlet/*</url-pattern>  //这里你也改成/servlet/ColorServlet试试吧 
    </servlet-mapping>
      

  12.   

    看得会笑死人滴。。
    你下面的 org.apache.catalina.servlets.InvokerServlet 在哪里?你给出的SERVLET是ColorServlet ,而且没有package。    <servlet>
            <servlet-name>invoker</servlet-name>
            <servlet-class>
              org.apache.catalina.servlets.InvokerServlet
            </servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>
        </servlet>
      

  13.   

    不过你要他运行还是很简单的,只要把
      <servlet-class>
      org.apache.catalina.servlets.InvokerServlet
      </servlet-class>
    改为
      <servlet-class>
     ColorServlet 
      </servlet-class>
    就好了
      

  14.   

           org.apache.catalina.servlets.InvokerServlet
    开始别用这个啊