我正在使用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也在不同的文件夹中
答案 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
。