首先是servlet& JSP示例不起作用

时间:2017-01-07 13:58:00

标签: java eclipse servlets

我正在读这本书&#34; Head first servlets & JSP&#34;并使用tomcat 9jdk8eclipse neonservlet无效。我收到错误:&#34; HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelect&#34; < / p>

图片是我的工作区。

my workspace

这是我的HTML代码。(form.html

&#13;
&#13;
<!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>
&#13;
&#13;
&#13;

这是我的web.xml

&#13;
&#13;
<?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>
&#13;
&#13;
&#13;

这是我的servletBeerSelect.java

&#13;
&#13;
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);
	}
}
&#13;
&#13;
&#13;

.class未生成。它出了什么问题。

2 个答案:

答案 0 :(得分:0)

嗯,我无法在工作区中看到.class文件。这只是一个建议,但您可以尝试使用

编译servlet java文件
 javac BeerSelect.java

这应创建一个BeerSelect.class文件。然后创建一个classes文件夹并将其放在那里。像这样:

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

看看这是否有帮助。

答案 1 :(得分:0)

您不会在.class中看到eclipse个文件。在创建项目时,您可能无法更改类文件文件夹,默认值为build/classes。除非您希望将它们保存在所需位置,否则不必更改class文件夹路径。您可以在工作区中看到class文件。 并且与您的代码相关的代码没有错,它工作正常。我只是做了一个加载html作为主页的更改。我在web.xml

中添加了以下行
<welcome-file-list>
    <welcome-file>form.html</welcome-file>
  </welcome-file-list>

它工作正常。