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