English 中文(简体)
Servlets - Packaging
  • 时间:2024-09-17

Servlets - Packaging


Previous Page Next Page  

The web apppcation structure involving the WEB-INF subdirectory is standard to all Java web apppcations and specified by the servlet API specification. Given a top-level directory name of myapp. Here is how this directory structure looks pke −

/myapp
   /images
   /WEB-INF
      /classes
      /pb

The WEB-INF subdirectory contains the apppcation s deployment descriptor, named web.xml. All the HTML files should be kept in the top-level directory which is myapp. For admin user, you would find ROOT directory as parent directory.

Creating Servlets in Packages

The WEB-INF/classes directory contains all the servlet classes and other class files, in a structure that matches their package name. For example, If you have a fully quapfied class name of com.myorg.MyServlet, then this servlet class must be located in the following directory −

/myapp/WEB-INF/classes/com/myorg/MyServlet.class 

Following is the example to create MyServlet class with a package name com.myorg

// Name your package
package com.myorg;  

// Import required java pbraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
pubpc class MyServlet extends HttpServlet {
 
   private String message;
 
   pubpc void init() throws ServletException {
      // Do required initiapzation
      message = "Hello World";
   }
 
   pubpc 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>");
   }

   pubpc void destroy() {
      // do nothing.
   }
}

Compipng Servlets in Packages

There is nothing much different to compile a class available in package. The simplest way is to keep your java file in fully quapfied path, as mentioned above class would be kept in com.myorg. You would also need to add this directory in CLASSPATH.

Assuming your environment is setup properly, go in <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes directory and compile MyServlet.java as follows

$ javac MyServlet.java

If the servlet depends on any other pbraries, you have to include those JAR files on your CLASSPATH as well. I have included only servlet-api.jar JAR file because I m not using any other pbrary in Hello World program.

This command pne uses the built-in javac compiler that comes with the Sun Microsystems Java Software Development Kit (JDK). For this command to work properly, you have to include the location of the Java SDK that you are using in the PATH environment variable.

If everything goes fine, above compilation would produce MyServlet.class file in the same directory. Next section would explain how a compiled servlet would be deployed in production.

Packaged Servlet Deployment

By default, a servlet apppcation is located at the path <Tomcat-installationdirectory>/webapps/ROOT and the class file would reside in <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.

If you have a fully quapfied class name of com.myorg.MyServlet, then this servlet class must be located in WEB-INF/classes/com/myorg/MyServlet.class and you would need to create following entries in web.xml file located in <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>

Above entries to be created inside <web-app>...</web-app> tags available in web.xml file. There could be various entries in this table already available, but never mind.

You are almost done, now let us start tomcat server using <Tomcat-installationdirectory>instartup.bat (on windows) or <Tomcat-installationdirectory>/bin/startup.sh (on Linux/Solaris etc.) and finally type http://localhost:8080/MyServlet in browser s address box. If everything goes fine, you would get following result −

Hello World

Advertisements