2017-01-07 2 views
0

Я читаю книгу «Head first servlets & JSP» и используя tomcat 9, jdk8, eclipse neon .Отель servlet не working.I я получаю сообщение об ошибке: «HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelect»Глава первая сервлеты и JSP пример не работает

В картинка - мое рабочее пространство.

my workspace

это мой HTML код. (form.html)

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<meta charset="UTF-8"> 
 
<title>beer</title> 
 
</head> 
 
<body> 
 
<h1 align = "center">Beer Selection Page</h1> 
 
<form method="POST" action="SelectBeer.do"> 
 
\t Select beer characteristics<p> 
 
\t Color: 
 
\t <select name="color" size = "1"> 
 
\t \t <option value="light">light</option> 
 
\t \t <option value="amber">amber</option> 
 
\t \t <option value="brown">brown</option> 
 
\t \t <option value="dark">dark</option> 
 
\t </select> 
 
\t <br><br> 
 
\t <center> 
 
\t \t <input type="SUBMIT"> 
 
\t </center> 
 
</form> 
 
</body> 
 
</html>

это мой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
 

 
    <servlet> 
 
    \t <servlet-name>Ch3 Beer</servlet-name> 
 
    \t <servlet-class>com.example.web.BeerSelect</servlet-class> 
 
    </servlet> 
 
    
 
    <servlet-mapping> 
 
    \t <servlet-name>Ch3 Beer</servlet-name> 
 
    \t <url-pattern>/SelectBeer.do</url-pattern> 
 
    </servlet-mapping> 
 

 
</web-app>

Это мой servlet (BeerSelect.java)

package com.example.web; 
 

 
import java.io.IOException; 
 
import java.io.PrintWriter; 
 

 
import javax.servlet.ServletException; 
 
import javax.servlet.http.HttpServlet; 
 
import javax.servlet.http.HttpServletRequest; 
 
import javax.servlet.http.HttpServletResponse; 
 

 

 
@SuppressWarnings("serial") 
 
public class BeerSelect extends HttpServlet{ 
 

 
\t public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException 
 
\t { 
 
\t \t response.setContentType("text/html"); 
 
\t \t PrintWriter out = response.getWriter(); 
 
\t \t 
 
\t \t out.println("Beer Selection Advice<br>"); 
 
\t \t String c = request.getParameter("color"); 
 
\t \t out.println("<br>Got beer color " + c); 
 
\t } 
 
}

.class не generated.What не так с ним.

+0

Что такое местоположение файла BeerSelect.class, где вы его положили – Onkar

+0

это не сгенерировано. Я думаю, что он будет сгенерирован автоматически. Так как я могу сгенерировать его в затмении. – Saxon

+0

У вас есть больше трассировки стека, желательно из журнала сервера? То, что вы показали, не означает, что файл класса отсутствует. Вручите руку, попробуйте имя сервлета без пробелов. – nitind

ответ

0

Хмм, я не вижу файл .class в вашем рабочем пространстве. Это только предложение, но вы можете попытаться скомпилировать файл servlet Java с помощью

javac BeerSelect.java 

Это должно создать BeerSelect.class файл. Затем создайте папку classes и поместите ее туда. Например:

WebContent/WEB-INF/classes/com/example/web/BeerSelect.class 

Посмотрите, если это вообще поможет.

+0

спасибо, это сработало! Но как я могу сгенерировать его в eclipse? – Saxon

+0

Попробуйте использовать Project -> Build All (Ctrl + B) в Eclipse. Я думаю, что это должно скомпилировать.java-файлы – Alan

+0

эта кнопка grey.So я ищу в Интернете.и обнаружили, что javac не работает. Спасибо за вашу помощь. – Saxon

0

Вы не увидите .class файлов в eclipse. И при создании вашего проекта вы не можете изменить свою папку файлов классов, по умолчанию build/classes. И не обязательно менять путь к папке с файлами class, если вы не хотите хранить их в нужном месте. Вы можете увидеть файл class в своем рабочем пространстве. И связанный с вашим кодом ничего плохого в коде, он работает нормально. Только одно изменение, которое я сделал, чтобы загрузить html в качестве главной страницы. Я добавил строки ниже в вашем web.xml.

<welcome-file-list> 
    <welcome-file>form.html</welcome-file> 
    </welcome-file-list> 

И он отлично работает.

+0

, но он по-прежнему не работает на моем компьютере .... – Saxon

+0

@Saxon попробуйте это, отмените проект с сервера и очистите проект. Снова создайте его и разверните и перезапустите сервер. И, пожалуйста, проверьте наличие ошибок импорта. – Nara

+0

О, это нормально. Я забыл, что мой классный путь, и коммонд «Джавак» не работает. Большое спасибо. – Saxon

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