#ff0000 19  2005 . - #000655 Wireless Development Tutorial  2
#0000ff   Jonathan Knudsen. 
#def       ,    J2ME  (Java 2, Micro Edition).  - MIDlet,    Mobile Information Device Profile -    J2ME.     .        servlet ( Java ),     MIDlet  servlet-.     ,         end-to-end wireless Java . 
    servlet-     .        : 
* Tomcat (http://jakarta.apache.org/tomcat/)   ,  Java servlet  JavaServer Pages (JSP) .       servlet-. 
* The Java 2, Enterprise Edition (J2EE) Reference Implementation server http://java.sun.com/j2ee/      J2EE . ,         . Tomcat     servlet-.     servlet- and JSP. J2EE RI server     J2EE ,  servlet-, JSP, EJB, JMS, JNDI,   ,   .       Tomcat. 
   Tomcat 
Tomcat    Zip ,     http://jakarta.apache.org/tomcat/. Tomcat   .    .       .    : c:\jakarta-tomcat-4.1.27\. Tomcat   Java.   Tomcat       J2SE.   ,    JAVA_HOME       J2SE.        : c:\j2sdk1.4.0.   Tomcat,    ,   bin  Tomcat-.   startup  .  ,     . 
    Tomcat,     URL: http://localhost:8080/.    ,     Tomcat      servlet-  JSP.    ,    ,    bin Tomcat-    shutdown.         ,      Windows   startup  shutdown . 
   Servlet- 
    servlet-       Java :       .java .        servlet,   HitServlet.    .   .       ,   .
 --------- 
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

public class HitServlet extends HttpServlet {
  private int mCount;
  
  public void doGet(HttpServletRequest request,
      HttpServletResponse response)
      throws ServletException, IOException {
    String message = "Hits: " + ++mCount;

    response.setContentType("text/plain");
    response.setContentLength(message.length());
    PrintWriter out = response.getWriter();
    out.println(message);
  }
} 

-------- 
 ,            .        ,    Tomcat :
 webapps/midp/WEB-INF/classes/HitServlet.java.

 ( ,      midp    .) 
 Servlet - 
  servlet-       Java ,     .  servlet API    J2SE ,      CLASSPATH,     . Servlet API    common/lib/servlet.jar   Tomcat.      CLASSPATH.     HitServlet.java  javac. CLASSPATH    ,         ,   : 
C:\>set CLASSPATH=\jakarta-tomcat-4.1.27\common\lib\servlet.jar C:\>javac HitServlet.java 
 Servlet-
  servlet-    -  web . Web      ,   HTML , , servlet-,           web . Tomcat      web .    webapp.     web       servlet. -    web .      midp  webapps       .         Tomcat,       .   conf/server.xml   .    web   contexts.      Context   examples,    : 
<!-- Tomcat Examples Context --><CONTEXT path="/examples" crossContext="true" reloadable="true" debug="0" docBase="examples">
   )      web .      ,   ,     midp.
<!-- MIDP Context --><CONTEXT path="/midp" reloadable="true" docBase="midp" />
  . 
    HTTP    .     HTTP ,   "/midp" (path)     ,    webapps/midp (docBase).  reloadable   .   Tomcat-,     servlet    . ,   web-.  . Web      servlet-  .        .   web    web.xml ,     web .      web    WEB-INF/web.xml.     web.xml.    ,        /hits. ,    servlet-  .    http://localhost:8080/midp/hits.         webapps/midp/WEB-INF/web.xml  Tomcat . 
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <servlet>
    <servlet-name>bob</servlet-name>
    <servlet-class>HitServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>bob</servlet-name>
    <url-pattern>/hits</url-pattern>
  </servlet-mapping>
</web-app>

   Tomcat-   servlet   HitServlet. Servlet-name     web.xml;   servlet    servlet-mapping.  bob  .      . 
     ,      servlet-     WEB-INF  classes.  Tomcat ,     servlet-.  ,     ,  servleta    . 
 servlet      web-,  ,     Tomcat  ,     server.xml   . 
  ,      http://localhost:8080/midp/hits.      HitServlet.    .     ,   . 
   Servlet-  MIDlet-
,    ,   MIDP  servlet-.        end-to-end Java . MIDlet-       HTTP ,  servlet,     ,   HTTP.  ,        . 
 KToolbar   MIDlet,      .     MIDlet,     servlet-,      servlet-     .    MIDlet-.
import java.io.*;

import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HitMIDlet
    extends MIDlet 
    implements CommandListener {
  private Display mDisplay;
  private Form mMainForm;
  private StringItem mMessageItem;
  private Command mExitCommand, mConnectCommand;
  
  public HitMIDlet() {
    mMainForm = new Form("HitMIDlet");
    mMessageItem = new StringItem(null, "");
    mExitCommand = new Command("Exit", Command.EXIT, 0);
    mConnectCommand = new Command("Connect",
        Command.SCREEN, 0);
    mMainForm.append(mMessageItem);
    mMainForm.addCommand(mExitCommand);
    mMainForm.addCommand(mConnectCommand);
    mMainForm.setCommandListener(this);
  }
  
  public void startApp() {
    mDisplay = Display.getDisplay(this);
    mDisplay.setCurrent(mMainForm);
  }
  
  public void pauseApp() {}
  
  public void destroyApp(boolean unconditional) {}
  
  public void commandAction(Command c, Displayable s) {
    if (c == mExitCommand)
      notifyDestroyed();
    else if (c == mConnectCommand) {
      Form waitForm = new Form("Waiting...");
      mDisplay.setCurrent(waitForm);
      Thread t =  new Thread() {
        public void run() {
          connect();
        }
      };
      t.start();
    }
  }
  
  private void connect() {
    HttpConnection hc = null;
    InputStream in = null;
    String url = getAppProperty("HitMIDlet.URL");
    
    try {
      hc = (HttpConnection)Connector.open(url);
      in = hc.openInputStream();

      int contentLength = (int)hc.getLength();
      byte[] raw = new byte[contentLength];
      int length = in.read(raw);

      in.close();
      hc.close();

      // Show the response to the user.
      String s = new String(raw, 0, length);
      mMessageItem.setText(s);
    }
    catch (IOException ioe) {
      mMessageItem.setText(ioe.toString());
    }
    mDisplay.setCurrent(mMainForm);
  }
}

   HitMIDlet-   HelloMIDlet,      EXIT  Connect. Connect,        connect(),        . 
          HitMIDlet.java   apps/HelloSuite/src  J2ME Wireless Toolkit . 
   ,    . -    toolkit-    MIDlet-.  Settings...,   MIDlets.  Add        MIDlet-  "HitMIDlet".    Icon .  OK.    HelloMIDlet  HitMIDlet. 
        . (       connect())  Settings...  toolkit-,   User Defined.   Add.    property name HitMIDlet.URL.  value   URL,    HitServlet,        ,   servlet.  OK. 
  Build,    . ,       .  .   .  Servlet.   Run   HitMIDlet.   Connect.     , HitMIDlet   HitServlet      
. 
 
      web .       HitServlet.         .   ,    servlet      HelloMIDlet, Tomcat      servlet- (  reloadable   server.xml? ,      .)      servlet-,        web.xml.     ,     . 
 
           end-to-end Java .       ,   -      servlet-.      MIDlet-  servlet-  HTTP .           end-to-end Java . MIDP     ,      servlet-,     . 
: Arix          : #ff0000 www.mobilab.ru