Servlets - Embalaje
La estructura de la aplicación web que involucra el subdirectorio WEB-INF es estándar para todas las aplicaciones web Java y está especificada por la especificación de la API del servlet. Dado un nombre de directorio de nivel superior de myapp. Así es como se ve esta estructura de directorio:
/myapp
/images
/WEB-INF
/classes
/lib
El subdirectorio WEB-INF contiene el descriptor de implementación de la aplicación, llamado web.xml. Todos los archivos HTML deben mantenerse en el directorio de nivel superior que es myapp . Para el usuario administrador, encontrará el directorio ROOT como directorio principal.
Creación de servlets en paquetes
El directorio WEB-INF / classes contiene todas las clases de servlet y otros archivos de clase, en una estructura que coincide con el nombre de su paquete. Por ejemplo, si tiene un nombre de clase completo decom.myorg.MyServlet, entonces esta clase de servlet debe estar ubicada en el siguiente directorio:
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
A continuación se muestra el ejemplo para crear la clase MyServlet con un nombre de paquete com.myorg
// Name your package
package com.myorg;
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet 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.
}
}
Compilación de servlets en paquetes
No hay nada muy diferente para compilar una clase disponible en paquete. La forma más sencilla es mantener su archivo java en una ruta totalmente calificada, como se mencionó anteriormente, la clase se mantendría en com.myorg. También necesitaría agregar este directorio en CLASSPATH.
Suponiendo que su entorno está configurado correctamente, ingrese <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / classes y compile MyServlet.java de la siguiente manera
$ javac MyServlet.java
Si el servlet depende de otras bibliotecas, también debe incluir esos archivos JAR en su CLASSPATH. Solo he incluido el archivo JAR servlet-api.jar porque no estoy usando ninguna otra biblioteca en el programa Hello World.
Esta línea de comandos utiliza el compilador javac integrado que viene con el kit de desarrollo de software Java de Sun Microsystems (JDK). Para que este comando funcione correctamente, debe incluir la ubicación del SDK de Java que está utilizando en la variable de entorno PATH.
Si todo va bien, la compilación anterior produciría MyServlet.classarchivo en el mismo directorio. La siguiente sección explicaría cómo se implementaría un servlet compilado en producción.
Implementación de servlets empaquetados
De forma predeterminada, una aplicación de servlet se encuentra en la ruta <Tomcat-installationdirectory> / webapps / ROOT y el archivo de clase residiría en <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.
Si tiene un nombre de clase completamente calificado de com.myorg.MyServlet, entonces esta clase de servlet debe estar ubicada en WEB-INF / classes / com / myorg / MyServlet.class y necesitaría crear las siguientes entradas en web.xml archivo ubicado en <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /
<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>
Las entradas anteriores se crearán dentro de las etiquetas <web-app> ... </web-app> disponibles en el archivo web.xml. Podría haber varias entradas en esta tabla ya disponibles, pero no importa.
Ya casi ha terminado, ahora iniciemos el servidor Tomcat usando <Tomcat-installationdirectory> \ bin \ startup.bat (en Windows) o <Tomcat-installationdirectory> /bin/startup.sh (en Linux / Solaris, etc.) y finalmente escriba http://localhost:8080/MyServleten el cuadro de dirección del navegador. Si todo va bien, obtendría el siguiente resultado:
Hello World