头第一个servlet示例不起作用

时间:2014-06-26 13:29:24

标签: java tomcat servlets

我正在使用tomcat 7 jdk 6并尝试实现headfirst的第81页版本2008的示例,该示例无法正常工作。我收到一个错误:" HTTP状态500 - 错误实例化servlet类com.example.web.BeerSelect"。

怎么办? 我的servlet代码

     package com.exmaple.web;
     import javax.servlet.*;
     import javax.servlet.http.*;
     import java.io.*;
     public class BeerSelect extends Httpservlet{
     public class dopost(HttpServletRequest request,
         HttpServletResponse response)
         throws IOException,ServletException{
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
            out.println("Beer Selection Advice<br>");

    String c=request.getParameter("color");
    out.println("<br>Got beer color"+c);
     }
       }

我的servlet路径 C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ Beer-V1 \ WEB-INF \ classes \ com \ example \ web

我的xml代码

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <web-app xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
       version="3.0"
      metadata-complete="true">
   <servlet>
    <servlet-name>Ch3 Beer</servlet-name>
       <servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>
      <servlet-mapping>
     <servlet-name>Ch3 Beer</servlet-name>
     <url-pattern>/SelectBeer.do</url-pattern>
       </servlet-mapping>
        </web-app>

我的jdk和tomacat也在不同的文件夹中

1 个答案:

答案 0 :(得分:1)

既然你已经包含了你的代码和配置,我们最终可以发现错误并提出一些解决方案

你犯了一些错误。您需要知道Java区分大小写,因此没有

public class BeerSelect extends Httpservlet{

public class BeerSelect extends HttpServlet {
//                                  ^ capital S.

接下来就是

public class dopost(HttpServletRequest request,

此处dopost应为doPost。这也不是class而是method,它处理从某种形式发送到servlet的数据。要创建此代码方法,您需要使用此方法预期返回类型替换class。由于此方法实际上不会返回任何内容(它只会打印某些内容),因此您需要将其返回类型设置为void。所以将此代码更改为

public void doPost(HttpServletRequest request,
//     ^^^^   ^ changes

最后一件事是你需要注意你写的东西。在你的

<servlet-class>com.example.web.BeerSelect</servlet-class>

你用过

com.example.web.BeerSelect

但是您的课程已经打包com.exmaple.web(&#34;前 ma ple&#34;您有ma而不是am,所以请更正您的包名称为com.example.web