Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

maddany
Class ChatServlet  view ChatServlet download ChatServlet.java

java.lang.Object
  extended byjavax.servlet.GenericServlet
      extended byjavax.servlet.http.HttpServlet
          extended bymaddany.ChatServlet
All Implemented Interfaces:
Analyzer, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig, Wakable

public class ChatServlet
extends javax.servlet.http.HttpServlet
implements Analyzer, Wakable


Field Summary
static int IDENT_LENGTH
           
private  ChatListener listener
           
private  java.util.Vector pool
           
static int PORT
           
private  java.util.Random r
           
static int TIMEOUT
           
private  java.lang.String validChars
           
 
Fields inherited from class javax.servlet.http.HttpServlet
 
Fields inherited from class javax.servlet.GenericServlet
 
Constructor Summary
ChatServlet()
           
 
Method Summary
 void addToPool(java.lang.Object obj)
           
 java.lang.String analyze(java.lang.String toAnalyze, ChatHandler generator)
           
private  void broadcast(java.lang.String tosend, ChatHandler generator)
           
 boolean containsIdentifier(java.lang.String ident)
           
 void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Called by the server (via the service method) to allow a servlet to handle a GET request.
 void doPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Called by the server (via the service method) to allow a servlet to handle a POST request.
static java.lang.String extractCommand(java.lang.String response)
           
static java.lang.String extractParam(java.lang.String response)
           
 ChatHandler getHandlerByIdent(java.lang.String ident)
           
private  java.lang.String getIdent(java.lang.String nick)
           
 java.util.Vector getThreadPool()
           
 void init(javax.servlet.ServletConfig conf)
          Called by the servlet container to indicate to a servlet that the servlet is being placed into service.
private  void internalBroadcast(java.lang.String tosend, ChatHandler generator)
           
private  boolean isValidInput(java.lang.String str)
           
private  boolean isValidNick(java.lang.String nick)
           
 java.lang.String logUserIn(java.lang.String nick, java.net.Socket sck)
           
private  void logUserOut(java.lang.String ident)
           
 java.util.Enumeration poolElements()
           
 void removeFromPool(java.lang.Object obj)
           
private  java.lang.String singleList()
           
 void wakeUp()
           
 void wakeUp(java.lang.Object obj)
           
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

validChars

private final java.lang.String validChars
See Also:
Constant Field Values

IDENT_LENGTH

public static final int IDENT_LENGTH
See Also:
Constant Field Values

TIMEOUT

public static final int TIMEOUT
See Also:
Constant Field Values

PORT

public static final int PORT
See Also:
Constant Field Values

pool

private java.util.Vector pool

r

private java.util.Random r

listener

private ChatListener listener
Constructor Detail

ChatServlet

public ChatServlet()
Method Detail

init

public void init(javax.servlet.ServletConfig conf)
          throws javax.servlet.ServletException
Description copied from class: javax.servlet.GenericServlet
Called by the servlet container to indicate to a servlet that the servlet is being placed into service. See Servlet.init(javax.servlet.ServletConfig)>Servlet.init(javax.servlet.ServletConfig) 55 .

This implementation stores the javax.servlet.ServletConfig object it receives from the servlet container for later use. When overriding this form of the method, call super.init(config).

Specified by:
init in interface javax.servlet.Servlet

doGet

public void doGet(javax.servlet.http.HttpServletRequest req,
                  javax.servlet.http.HttpServletResponse res)
           throws javax.servlet.ServletException,
                  java.io.IOException
Description copied from class: javax.servlet.http.HttpServlet
Called by the server (via the service method) to allow a servlet to handle a GET request.

Overriding this method to support a GET request also automatically supports an HTTP HEAD request. A HEAD request is a GET request that returns no body in the response, only the request header fields.

When overriding this method, read the request data, write the response headers, get the response's writer or output stream object, and finally, write the response data. It's best to include content type and encoding. When using a PrintWriter object to return the response, set the content type before accessing the PrintWriter object.

The servlet container must write the headers before committing the response, because in HTTP the headers must be sent before the response body.

Where possible, set the Content-Length header (with the ServletResponse.setContentLength(int)>ServletResponse.setContentLength(int) 55 method), to allow the servlet container to use a persistent connection to return its response to the client, improving performance. The content length is automatically set if the entire response fits inside the response buffer.

When using HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the Content-Length header.

The GET method should be safe, that is, without any side effects for which users are held responsible. For example, most form queries have no side effects. If a client request is intended to change stored data, the request should use some other HTTP method.

The GET method should also be idempotent, meaning that it can be safely repeated. Sometimes making a method safe also makes it idempotent. For example, repeating queries is both safe and idempotent, but buying a product online or modifying data is neither safe nor idempotent.

If the request is incorrectly formatted, doGet returns an HTTP "Bad Request" message.


doPost

public void doPost(javax.servlet.http.HttpServletRequest req,
                   javax.servlet.http.HttpServletResponse res)
            throws javax.servlet.ServletException,
                   java.io.IOException
Description copied from class: javax.servlet.http.HttpServlet
Called by the server (via the service method) to allow a servlet to handle a POST request. The HTTP POST method allows the client to send data of unlimited length to the Web server a single time and is useful when posting information such as credit card numbers.

When overriding this method, read the request data, write the response headers, get the response's writer or output stream object, and finally, write the response data. It's best to include content type and encoding. When using a PrintWriter object to return the response, set the content type before accessing the PrintWriter object.

The servlet container must write the headers before committing the response, because in HTTP the headers must be sent before the response body.

Where possible, set the Content-Length header (with the ServletResponse.setContentLength(int)>ServletResponse.setContentLength(int) 55 method), to allow the servlet container to use a persistent connection to return its response to the client, improving performance. The content length is automatically set if the entire response fits inside the response buffer.

When using HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the Content-Length header.

This method does not need to be either safe or idempotent. Operations requested through POST can have side effects for which the user can be held accountable, for example, updating stored data or buying items online.

If the HTTP POST request is incorrectly formatted, doPost returns an HTTP "Bad Request" message.


analyze

public java.lang.String analyze(java.lang.String toAnalyze,
                                ChatHandler generator)
Specified by:
analyze in interface Analyzer

broadcast

private void broadcast(java.lang.String tosend,
                       ChatHandler generator)

internalBroadcast

private void internalBroadcast(java.lang.String tosend,
                               ChatHandler generator)

getThreadPool

public java.util.Vector getThreadPool()
Specified by:
getThreadPool in interface Analyzer

addToPool

public void addToPool(java.lang.Object obj)
Specified by:
addToPool in interface Analyzer

removeFromPool

public void removeFromPool(java.lang.Object obj)
Specified by:
removeFromPool in interface Analyzer

poolElements

public java.util.Enumeration poolElements()
Specified by:
poolElements in interface Analyzer

wakeUp

public void wakeUp()
Specified by:
wakeUp in interface Wakable

wakeUp

public void wakeUp(java.lang.Object obj)
Specified by:
wakeUp in interface Wakable

logUserIn

public java.lang.String logUserIn(java.lang.String nick,
                                  java.net.Socket sck)
Specified by:
logUserIn in interface Analyzer

logUserOut

private void logUserOut(java.lang.String ident)

containsIdentifier

public boolean containsIdentifier(java.lang.String ident)
Specified by:
containsIdentifier in interface Analyzer

getHandlerByIdent

public ChatHandler getHandlerByIdent(java.lang.String ident)

getIdent

private java.lang.String getIdent(java.lang.String nick)

singleList

private java.lang.String singleList()

isValidInput

private boolean isValidInput(java.lang.String str)

isValidNick

private boolean isValidNick(java.lang.String nick)

extractCommand

public static java.lang.String extractCommand(java.lang.String response)

extractParam

public static java.lang.String extractParam(java.lang.String response)