| Contents | Previous Page | Servlet Essentials 1.3.5 |
Servlets can be compiled with the JDK (available from
http://www.javasoft.com)
and other Java compilers, just like Applets and Applications.
If the Servlet packages javax.servlet and
javax.servlet.http are not included with the compiler or your
Servlet engine you have to install them separately by downloading
the JSDK (Java Servlet Development Kit)
and including the JSDK classes in your CLASSPATH
environment variable.
Example. Compiling the HelloClientServlet
on a Unix machine with a JDK installation and the JSDK 2.0 unpacked
in /usr/local/JSDK2.0:
$ echo $CLASSPATH .:/usr/local/jdk/lib/classes.zip $ export CLASSPATH=$CLASSPATH:/usr/local/JSDK2.0/lib/jsdk.jar $ echo $CLASSPATH .:/usr/local/jdk/lib/classes.zip:/usr/local/JSDK2.0/lib/jsdk.jar $ ls HelloClientServlet.* HelloClientServlet.java $ javac HelloClientServlet.java $ ls HelloClientServlet.* HelloClientServlet.class HelloClientServlet.java $ | |
The Servlets from this tutorial can be tested easily with the
NetForge Web
Server which supports the most current version 2.1 of the Servlet API.
The server has a preconfigured Servlet directory
netforge/servlets/. Compile the servlets
and copy the *.class files to netforge/servlets/.
When the server is running, the Servlets can be accessed via
http://localhost:22722/servlet/ClassName, e.g.
http://localhost:22722/servlet/HelloClientServlet for the
HelloClientServlet.
Example. Copying the compiled
HelloClientServlet to the NetForge Servlet directory and
starting the server on a Unix machine with NetForge installed in
/usr/local/netforge/:
$ cp HelloClientServlet.class /usr/local/netforge/servlets/ $ /usr/local/netforge/bin/netforge -i [22 Jun 1998 9:39:05 GMT] <note> Starting up NetForge 0.48 [22 Jun 1998 9:39:05 GMT] <note> Home directory is "/usr/local/netforge/." [22 Jun 1998 9:39:06 GMT] <note> Security manager installed [22 Jun 1998 9:39:12 GMT] <note> HTTP server "Example Web" started on port 22722 [22 Jun 1998 9:39:28 GMT] <note> Local administration GUI opened [22 Jun 1998 9:39:28 GMT] <note> Startup completed |
The ListManagerServlet requires an init parameter, so
it has to be accessed through an alias:
Start NetForge with the "-i" option (as shown above) to open an administration GUI.
Use the popup menu which is attached to the "/servlet/" object to open a configuration window.
Enter the line
"listman ListManagerServlet addressfile=/tmp/addresses"
into the "Aliases" field.
Click the "Apply" button to perform the configuration change.
The ListManagerServlet can now be accessed via
http://localhost:22722/servlet/listman. The addresses
are written to the file /tmp/addresses.
See the NetForge manual
for details on configuring and running the server.
C. Servlet Resources on the Internet
System.exit
to quit the server.
Version 2.0 added support for Internationalization, Cookies, Session Tracking, HTTP/1.1 and single-threaded Servlets.
javax.servlet.SingleThreadModeljavax.servlet.http.HttpSessionjavax.servlet.http.HttpSessionBindingListenerjavax.servlet.http.HttpSessionContextjavax.servlet.http.Cookiejavax.servlet.http.HttpSessionBindingEventjavax.servlet.ServletContext.getServletNames()javax.servlet.ServletContext.log(Exception, String)javax.servlet.ServletRequest.getCharacterEncoding()javax.servlet.ServletRequest.getReader()javax.servlet.ServletResponse.getCharacterEncoding()javax.servlet.ServletResponse.getWriter()javax.servlet.ServletException.ServletException()javax.servlet.http.HttpServletRequest.getCookies()javax.servlet.http.HttpServletRequest.getRequestedSessionId()javax.servlet.http.HttpServletRequest.getSession(boolean)javax.servlet.http.HttpServletRequest.isRequestedSessionIdFromCookie()javax.servlet.http.HttpServletRequest.isRequestedSessionIdFromUrl()javax.servlet.http.HttpServletRequest.isRequestedSessionIdValid()javax.servlet.http.HttpServletResponse.SC_CONFLICTjavax.servlet.http.HttpServletResponse.SC_CONTINUEjavax.servlet.http.HttpServletResponse.SC_GATEWAY_TIMEOUTjavax.servlet.http.HttpServletResponse.SC_GONEjavax.servlet.http.HttpServletResponse.SC_HTTP_VERSION_NOT_SUPPORTEDjavax.servlet.http.HttpServletResponse.SC_LENGTH_REQUIREDjavax.servlet.http.HttpServletResponse.SC_METHOD_NOT_ALLOWEDjavax.servlet.http.HttpServletResponse.SC_MULTIPLE_CHOICESjavax.servlet.http.HttpServletResponse.SC_NON_AUTHORITATIVE_INFORMATIONjavax.servlet.http.HttpServletResponse.SC_NOT_ACCEPTABLEjavax.servlet.http.HttpServletResponse.SC_PARTIAL_CONTENTjavax.servlet.http.HttpServletResponse.SC_PAYMENT_REQUIREDjavax.servlet.http.HttpServletResponse.SC_PRECONDITION_FAILEDjavax.servlet.http.HttpServletResponse.SC_PROXY_AUTHENTICATION_REQUIREDjavax.servlet.http.HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGEjavax.servlet.http.HttpServletResponse.SC_REQUEST_TIMEOUTjavax.servlet.http.HttpServletResponse.SC_REQUEST_URI_TOO_LONGjavax.servlet.http.HttpServletResponse.SC_RESET_CONTENTjavax.servlet.http.HttpServletResponse.SC_SEE_OTHERjavax.servlet.http.HttpServletResponse.SC_SWITCHING_PROTOCOLSjavax.servlet.http.HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPEjavax.servlet.http.HttpServletResponse.SC_USE_PROXYjavax.servlet.http.HttpServletResponse.addCookie(Cookie)javax.servlet.http.HttpServletResponse.encodeRedirectUrl(String)javax.servlet.http.HttpServletResponse.encodeUrl(String)javax.servlet.http.HttpServlet.doDelete(HttpServletRequest, HttpServletResponse)javax.servlet.http.HttpServlet.doOptions(HttpServletRequest, HttpServletResponse)javax.servlet.http.HttpServlet.doPut(HttpServletRequest, HttpServletResponse)javax.servlet.http.HttpServlet.doTrace(HttpServletRequest, HttpServletResponse)javax.servlet.ServletContext.getServlets()getServletNames in conjunction with
getServlet instead)Version 2.1 introduced the new model for inter-servlet communication and request delegation. There are some new minor features like nested Exceptions. Several inconsistencies in the API have been corrected.
javax.servlet.RequestDispatcherjavax.servlet.http.HttpSessionContextjavax.servlet.ServletContext.getAttributeNames()javax.servlet.ServletContext.getContext(String)javax.servlet.ServletContext.getMajorVersion()javax.servlet.ServletContext.getMinorVersion()javax.servlet.ServletContext.getRequestDispatcher(String)javax.servlet.ServletContext.getResource(String)javax.servlet.ServletContext.getResourceAsStream(String)javax.servlet.ServletContext.log(String, Throwable)javax.servlet.ServletContext.removeAttribute(String)javax.servlet.ServletContext.setAttribute(String, Object)javax.servlet.ServletRequest.getAttributeNames()javax.servlet.ServletRequest.setAttribute(String, Object)javax.servlet.GenericServlet.init()javax.servlet.GenericServlet.log(String, Throwable)javax.servlet.ServletException.ServletException(String, Throwable)javax.servlet.ServletException.ServletException(Throwable)javax.servlet.ServletException.getRootCause()javax.servlet.http.HttpServletRequest.getSession()javax.servlet.http.HttpServletRequest.isRequestedSessionIdFromURL()javax.servlet.http.HttpServletResponse.encodeRedirectURL(String)javax.servlet.http.HttpServletResponse.encodeURL(String)javax.servlet.http.HttpSession.getMaxInactiveInterval()javax.servlet.http.HttpSession.setMaxInactiveInterval(int)javax.servlet.ServletContext.getServlet(String)javax.servlet.ServletContext.getServletNames()getServlet)javax.servlet.ServletContext.log(Exception, String)log(String, Throwable) instead)javax.servlet.ServletRequest.getRealPath(String)ServletContext.getRealPath instead)javax.servlet.http.HttpServletRequest.isRequestedSessionIdFromUrl()isRequestedSessionIdFromURL instead)javax.servlet.http.HttpServletResponse.encodeRedirectUrl(String)encodeRedirectURL instead)javax.servlet.http.HttpServletResponse.encodeUrl(String)encodeURL instead)javax.servlet.http.HttpSession.getSessionContext()HttpSessionContext is deprecated)| Contents | Previous Page | Top | Servlet Essentials 1.3.5 |