Troubleshooting:HTTP Status 500 - Error instantiating servlet class xxx

Java和Web新手,写的第一个servlet小练习,部署到tomcat里出错,看见霍霍的Error 500很奔溃的,后来解决。全程记录如下。

 

【环境设置】

下载安装Web Server:Tomcat (http://tomcat.apache.org/

添加环境变量:系统变量名CATALINA,变量值D:\Program Files\apache-tomcat-7.0.39-windows-x64\apache-tomcat-7.0.39

系统变量名CLASSPATH,变量值%CATALINA%\lib\servlet-api.jar

检查一下:

 

【编写编译源代码】

用某个编辑器编写如下内容:

/**
* Filename: ServletHelloWorld.java
* Author: qyddbear
* Date: 2013/5/7
*/

//import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletHelloWorld extends HttpServlet 
{
    private String message;
    
    public void init() throws ServletException
    {
        //Do required initialization
        message = "Hello World";
    }
    
    public void doGet(HttpServletRequest request, 
                      HttpServletResponse response) throws ServletException, IOException
    {
        //Set response content type
        response.setContentType("text/html");
        
        //Actual logic goes here
        PrintWriter out = response.getWriter();
        out.println("<h1>" + message + "</h1>");
    }
    
    public void destroy()
    {
        //do nothing
    } 
}

编译源代码:javac ServletHelloWorld.java

编译成功,会在同目录下生成ServletHelloWorld.class

 

【部署servlet】

将ServletHelloWorld.class放在tomcat的webapps\ROOT\WEB-INF下。

修改web.xml文件(D:\Program Files\apache-tomcat-7.0.39-windows-x64\apache-tomcat-7.0.39\webapps\ROOT\WEB-INF\web.xml),把servlet的标签对放在web-app标签里。可能web-app中还有其它标签,但并不影响。

<?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>ServletHelloWorld</servlet-name>
     <servlet-class>ServletHelloWorld</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>ServletHelloWorld</servlet-name>
     <url-pattern>/ServletHelloWorld</url-pattern>
  </servlet-mapping>

</web-app>

 

 【访问测试】

启动tomcat:双击运行startup.bat(D:\Program Files\apache-tomcat-7.0.39-windows-x64\apache-tomcat-7.0.39\bin\startup.bat)

如果tomcat成功启动,浏览器输入http://localhost:8080,会出现tomcat的欢迎页面。

再输入http://localhost:8080/ServletHelloWorld进入我们的页面,出现下图错误。

 

 【解决方法】

新安装的tomcat在webapps/ROOT/WEB-INF里没有classes文件夹,需要自己新建一个,把ServletHelloWorld.class放在里面。

成功访问!

 

 

 

附:Servlet架构

posted @ 2013-05-07 18:20  水芊芊  阅读(4999)  评论(2编辑  收藏  举报