【发布时间】:2017-01-07 13:57:59
【问题描述】:
我正在阅读“Head first servlets & JSP”一书并使用tomcat 9、jdk8、eclipse neon。servlet 不起作用。我收到错误消息:“HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelect”
图片是我的工作区。
这是我的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">
Select beer characteristics<p>
Color:
<select name="color" size = "1">
<option value="light">light</option>
<option value="amber">amber</option>
<option value="brown">brown</option>
<option value="dark">dark</option>
</select>
<br><br>
<center>
<input type="SUBMIT">
</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>
<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>
这是我的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{
public void 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);
}
}
.class没有生成,这是怎么回事。
【问题讨论】:
-
BeerSelect.class 文件的放置位置是什么
-
它不是生成的。我认为它会自动生成。那么我如何在eclipse中生成它。
-
您是否有更多的堆栈跟踪,最好来自服务器日志?您所显示的内容并不表示缺少类文件。顺便说一下,尝试一个没有空格的 servlet 名称。
-
类文件确实丢失了。解决方法是设置类路径。我忘记了。