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架構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM