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