2014-06-26 3 views
-1

Я использую tomcat 7 jdk 6 и пытаюсь реализовать пример на стр. 81 выпуск 2008 года, и пример не работает. Я получаю сообщение об ошибке: «HTTP Status 500 - Ошибка создания класса сервлета com.example.web.BeerSelect».Пример первого примера сервлета не работает

Что делать? мой сервлет код

 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); 
    } 
     } 

мой сервлет путь C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ WebApps \ Беэр-V1 \ WEB-INF \ Классы \ ком \ например \ веб

Мой 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 находятся в папке diffrent

+0

Plz Введите код, который вы пробовали до сих пор ... :), чтобы мы могли получить подсказку. – goodyzain

+2

Хммм .... кажется, что есть проблема при создании класса сервлета, и это не конец история, это имя класса 'com.example.web.BeerSelect'. Надеюсь, это поможет. – Yasin

+0

Либо вы забыли скомпилировать сервлет, либо у вас его нет в правой папке. – developerwjk

ответ

1

Теперь, когда вы включили ваш код и конфигурации мы можем, наконец, определить ошибки и предложить некоторые решения

Вы сделали несколько ошибок. Вы должны знать, что Java чувствителен к регистру, так что будет не

public class BeerSelect extends Httpservlet{ 

но

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

Следующая вещь не

public class dopost(HttpServletRequest request, 

Здесь dopost должен быть doPost. Также это не class, а method, который обрабатывает данные, отправляемые сервлету из какой-либо формы. Чтобы выполнить этот метод кода, вам необходимо заменить class на этот метод, ожидаемый тип возвращаемого значения. Поскольку этот метод фактически ничего не вернет (он просто что-то напечатает), вам необходимо установить его возвращаемый тип на void. Таким образом изменить этот код, чтобы

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

Последняя вещь, что вам нужно обратить внимание на то, что вы пишете. В ваших

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

вы использовали

com.example.web.BeerSelect 

но ваш класс находится в пакете com.exmaple.web ("экс м PLE" вы имеете ma вместо am) так исправьте имя пакета быть com.example.web.

+0

Сообщите мне, если он решит вашу проблему. – Pshemo

Смежные вопросы