Java Programing laungage

J2ME Projects

J2ME Project 1

adplus-dvertising
Create an application for passing Number to Servlet
Previous Home Next

Introduction

In program, a Http request is made form Midlet to Java Servlet which run on Web Server ( Apache Tomcat ) through HTTP POST method to access doPost method of servlet in Midlet. In which two number is passing to servlet through Midlet class and get response form servlet, which display in Midlet client class.

Midlet Program


/*
 * Save as a NumberServletMidlet.java
 */
package r4r.Mobile.Application;

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

/**
 * @author R4R
 */
public class NumberServletMidlet extends MIDlet implements CommandListener {

    final Command SUBMIT = new Command("Result", Command.OK, 1);
    final Command EXIT = new Command("Exit", Command.EXIT, 2);
    private Form form;
    private TextField T_num1, T_num2;

    public NumberServletMidlet() {
        // declaration field with initialization
        form = new Form("Number Servlet");
        T_num1 = new TextField("Number1", "", 10, TextField.NUMERIC);
        T_num2 = new TextField("Number2", "", 10, TextField.NUMERIC);
        form.append(T_num1);
        form.append(T_num2);
        form.addCommand(SUBMIT);
        form.addCommand(EXIT);
        form.setCommandListener(this);
    }

    public void startApp() {
        Display.getDisplay(this).setCurrent(form);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }

    public void commandAction(Command c, Displayable d) {
        if (c == EXIT) {
            destroyApp(true);
        } else if (c == SUBMIT) {
            // Store value form TextField to String
            String num1 = T_num1.getString().trim();
            String num2 = T_num2.getString().trim();
            // initialize new Class
            NumberServletClient client = new NumberServletClient(this, num1, num2);
            client.start();
        }
    }
}

/*
 * --------------------------------------------------
 * Class NumberServletClient handle Client side request 
 * or Receive server response.
 * --------------------------------------------------
 */
class NumberServletClient implements Runnable, CommandListener {

    //client can invoke servlet through SERVLET_URL 
    final String SERVLET_URL = "http://localhost:8084/MobileServlet/numberServlet";
    final Command BACK = new Command("Back", Command.BACK, 1);
    final Command EXIT = new Command("Exit", Command.EXIT, 2);
    private NumberServletMidlet parent;
    private Display display;
    private TextBox tb = null;
    private HttpConnection hc = null;
    private InputStream is = null;
    private OutputStream os = null;
    private String num1, num2;
    StringBuffer sb = new StringBuffer();

    NumberServletClient(NumberServletMidlet aThis, String num1, String num2) {
        this.parent = aThis;   // set field
        this.num1 = num1;
        this.num2 = num2;

        // declaration field with initialization
        display = Display.getDisplay(aThis);
        tb = new TextBox("Client site Response....", null, 1024, TextField.ANY);
        tb.addCommand(BACK);
        tb.addCommand(EXIT);
        tb.setCommandListener(this);
        display.setCurrent(tb);
    }

    void start() {
        // invoke new thread and begin in execution
        new Thread(this).start();
    }

    public void run() {
        try {
            //Open HTTP connection 
            hc = (HttpConnection) Connector.open(SERVLET_URL);
            // client access servlet POST method 
            hc.setRequestMethod(HttpConnection.POST);
            //Sets the general request property 
            hc.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            hc.setRequestProperty("CONTENT-TYPE", "application/x-www-form-encoded");

            //Open DataOutputStream and write data into Stream(in byte form)
            String data = num1 + "?" + num2;
            os = hc.openDataOutputStream();
            os.write((data).getBytes());
            os.flush();

            //Open DataInputStream for a connection.
            is = hc.openDataInputStream();
            int ch;
            //Read the data form DataInputStream
            while ((ch = is.read()) != -1) {
                sb.append((char) ch);           // Convert Byte to character
                System.out.println((char) ch);  // Display data on console
            }
            tb.setString(sb.toString());        // append String to the TextBox
        } catch (IOException ex) {
            Alert a = new Alert("SERVLET Server Error!", "
            
     Cannot connect to server. Ping to server and make sure it's in running state...."
     ,
	              null, AlertType.ERROR);
            a.setTimeout(Alert.FOREVER);
            display.setCurrent(a);
        } finally {
            // close all the Stream and connection
            try {
                if (is != null) {
                    is.close();
                }
                if (os != null) {
                    os.close();
                }
                if (hc != null) {
                    hc.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public void commandAction(Command c, Displayable d) {
        if (c == BACK) {
            parent.startApp();        // Invoke Startapp() method
        } else if (c == EXIT || c == Alert.DISMISS_COMMAND) {
            parent.destroyApp(true);  // terminate application
        }
    }
}

servlet program


/*
 * Save as a numberServlet.java
 */
package r4r.MobileServlet;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

/**
 *
 * @author R4R
 */
public class numberServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request,
		HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request,
		HttpServletResponse response)
            throws ServletException, IOException {

        // Set the response message's MIME type
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        // Reads line of text from a character-input stream
        BufferedReader br = request.getReader();
        String s = br.readLine();

        // Get a Specific String value from line of text.
        String num1 = s.substring(0, s.indexOf("?"));
        String num2 = s.substring(s.indexOf("?") + 1);

        // Convert number into Integer
        int x = Integer.parseInt(num1);
        int y = Integer.parseInt(num2);
        double add, sub, multiply, divide;
        // send response to the client
        add = x + y;
        out.println("Addition of " + x + " + " + y + " = " + add + "\n");
        sub = x - y;
        out.println("Subtraction of " + x + " - " + y + " = " + sub + "\n");
        multiply = x * y;
        out.println("Multiplication of " + x + " x " + y + " = " + multiply + "\n");
        divide = x / y;
        out.println("Division of " + x + " / " + y + " = " + divide + "\n");
        out.close();    // close text-output stream 
    }
}

output
Previous Home Next