English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
涉及到 WEB-INF 子目录的 Web 应用程序结构是所有的 Java web 应用程序的标准,并由 Servlet API 规范指定。给定一个顶级目录名 myapp,目录结构如下所示:
/myapp /images /WEB-INF /classes /lib
WEB-INF 子目录中包含应用程序的部署描述符,名为 web.xml。所有的 HTML 文件都位于顶级目录 myapp 下。对于 admin 用户,您会发现 ROOT 目录是 myApp 的父目录。
WEB-INF/classes 目录包含了所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配。例如,如果您有一个完全合格的类名称 com.myorg.MyServlet,那么这个 Servlet 类必须位于以下目录中:
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
下面的实例创建包名为 com.myorg 的 MyServlet 类。
// 为包命名 package com.myorg; // 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; @WebServlet("/MyServlet) public class MyServlet extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Den Inhaltstyp der Antwort einstellen response.setContentType("text/html;charset=UTF-8"/html;charset=UTF-8-8); // Der eigentliche Logik ist hier PrintWriter out = response.getWriter(); out.println("<h1">" + message + "</h1}); } public void destroy() { // Nichts zu tun } }
Die Kompilierung von Klassen in Paketen unterscheidet sich nicht erheblich von der Kompilierung anderer Klassen. Der einfachste Weg ist es, Ihre java-Dateien den vollständigen Pfaden zu behalten, wie oben erwähnt, die Klasse wird in com.myorg gespeichert. Sie müssen auch dieses Verzeichnis im CLASSPATH hinzufügen.
Angenommen, Ihre Umgebung ist korrekt eingerichtet, geben Sie <Tomcat-Installation-Verzeichnis>/webapps/ROOT/WEB-INF/classes Verzeichnis, und kompilieren Sie MyServlet.java wie folgt:
$ javac MyServlet.java
Wenn das Servlet von anderen Bibliotheken abhängt, müssen diese JAR-Dateien ebenfalls im CLASSPATH referenziert werden. Hier habe ich nur servlet referenziert-api.jar JAR-Datei, da ich im Hello World-Programm keine anderen Bibliotheken verwende.
Diese Kommandozeile verwendet den integrierten javac-Compiler, der im Java-Software-Entwicklungspaket (JDK, vollständiger Name Java Software Development Kit) von Sun Microsystems enthalten ist. Sun Microsystems Java Software Development Kit (JDK). Um dieses Kommando korrekt auszuführen, muss die Position des Java SDK, das Sie in der PATH-Umgebungsvariable verwenden, enthalten sein.
Wenn alles gut geht, wird die obige Kompilierung in derselben Verzeichnisstruktur erstellt MyServlet.class Datei. Im nächsten Abschnitt wird erläutert, wie ein bereits kompiliertes Servlet in die Produktion bereitgestellt wird.
Standardmäßig befindet sich die Servlet-Anwendung auf dem Pfad <Tomcat-Installation-Verzeichnis>/webapps/im Verzeichnis 'ROOT' und die Klassendateien werden in <Tomcat-Installation-Verzeichnis>/webapps/ROOT/WEB-INF/in den Verzeichnissen 'classes'.
Wenn Sie einen vollständig qualifizierten Klassennamen haben com.myorg.MyServletzu befinden, dann muss sich diese Servlet-Klasse im WEB-INF/classes/com/myorg/MyServlet.class, Sie müssen in der Lage sein, sich im <Tomcat-Installation-Verzeichnis>/webapps/ROOT/WEB-INF/ Erstellen Sie im web.xml-Datei die folgenden Einträge:
<servlet <servlet-name>MyServlet</servlet-name> <servlet-class>com.myorg.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping>
Diese Einträge müssen im <web-app>.../web-app> Tag verwenden. Möglicherweise gibt es in dieser Datei bereits verschiedene Einträge, aber das ist nicht wichtig.
Bis hierher haben Sie im Grunde genommen alles erledigt, lassen Sie uns nun den <Tomcat-Installation-Verzeichnis>\bin\startup.bat (unter Windows) oder <Tomcat-Installation-Verzeichnis>/bin/startup.sh (unter Linux)/Solaris und anderen (Starten Sie den Tomcat-Server und geben Sie schließlich im Adressfeld des Browsers ein) http://localhost:8080/MyServlet。Falls alles gut geht, sehen Sie unten das Ergebnis:
Hallo Welt |