How to call JSP pages from MIDlet in J2ME development

Source: Internet
Author: User
Tags date final interface variable stringbuffer
js| page

First, I'll discuss the Httpconnection interface, which can be used to establish an HTTP connection

Httpconnection interface

Connected Limited Device Configuration (limited connection device configuration. Referred to as CLDC). Provides a set of classes for network connections, the common connection framework? A platform-independent connectivity framework that provides a layered interface for implementing the operating system provided by a specific device summary (such as Mobile Information Device profile (MIDP)).

MIDP implements the extended CLDC General connection framework by providing a httpconnection framework that supports HTTP. All MIDP application implementations require HTTP support, primarily because HTTP can be achieved by using ip-based protocols such as TCP/IP, or by using a non-IP protocol such as WAP.

All connections are created using the open () method of the connector class, and if the connection succeeds, this method returns an object that implements a common connection excuse, for example, where the following code snippet can be used to open an HTTP connection to a URL.

String url = "http://www.ora.com/whatif.jsp";;

Httpconnection connection = connector.open (URL);

Once a connection is established, you can set the properties, and then you can establish an I/O stream to send or receive data. For example, take a look at this little piece of code that sets the properties and builds an input/output stream.

Sets the HTTP property Connection.setrequestmethod (Httpconnection.post); Connection.setrequestproperty ("IF-Modified-Since", " DEC 2001 16:33:19 GMT "); Connection.setrequestproperty (" User-agent "," profile/midp-1.0 configuration/cldc-1.0 "); Connection.setrequestproperty ("Content-language", "En-ca");//Create I/o stream InputStream is = Connection.openinputstream (); O Utputstream OS = Connection.openoutputstream ();

Let's look at an example of how to invoke a JSP from MIDlet, where we call the JSP page code in section 1, as follows:

Code 1:

today.jsp<%! String name; %><% name = Request.getparameter ("name"); Java.util.Date today = new Java.util.Date (); Out.println ("Got:" +name); Out.println ("Date&time:" +today);%>

This JSP also wants to get a value of a variable named name, and once that value is obtained, an instance of date is created, and the value of name and date is then hit to the output stream in the client.

Now, let's look at how to write a MIDlet to invoke this JSP page, we will invoke it using the Post request method, which means that the data that is passed to the JSP page is not encoded using a URL, but rather a separate piece of information, which is MIDlet code as shown in code Snippet 2.

Code 2:

Invokejspmidlet.java Import Javax.microedition.lcdui.*;import Javax.microedition.midlet.*;import Javax.microedition.io.*;import java.io.*;p ublic class Invokejspmidlet extends MIDlet implements {;D Isplay display = null;//Name field TextField name = Null;form form; String URL = "http://127.0.0.1:8080/examples/jsp/today.jsp ";; Static Final command callcommand = new command ("date?", Command.ok, 2); static final command Clearcommand = new command ("clear", Command.stop, 2); String myname;public Invokejspmidlet () {;d isplay = Display.getdisplay (this); name = new TextField ("Name:", "", Textfie Ld. any); form = new Form ("Invoke JSP"); public void startApp () throws midletstatechangeexception {; form.append (name); Form.addcommand (Clearcommand); Form.addcommand (Callcommand); Form.setcommandlistener (this);d isplay.setcurrent (form); public void Pauseapp () {;}; public void Destroyapp (Boolean unconditional) {; notifydestroyed ();}; void invokejsp (String url) throws IOException {; Httpconnection c = Null;inputstream is = Null;outputstream OS = null; StringBuffer B = new StringBuffer (); TextBox T = null;try {; c = (httpconnection) connector.open (URL); C.setrequestmethod (Httpconnection.post); C.setrequestproperty ("If-modified-since", "Dec 2001 15:17:19 GMT"); C.setrequestproperty ("User-agent", "profile/midp-1.0 configuration/cldc-1.0"); C.sEtrequestproperty ("Content-language", "En-ca"); C.setrequestproperty ("Content-type", "application/x-www-form-urlencoded"); OS = C.openoutputstream (); Os.write (("Name=" +myname). GetBytes ()); Os.flush (); is = C.opendatainputstream (); int ch; while (ch = is.read ())!=-1) {; B.append ((char) ch); System.out.print ((char) ch); }; t = new TextBox ("Date", b.tostring (), 1024, 0); T.setcommandlistener (this); }; finally {; if (is!= null) {; Is.close ();}; if (OS!= null) {; Os.close ();}; if (c!= null) {; C.close ();};}; Display.setcurrent (t);}; public void Commandaction (Command C, displayable D) {; String label = C.getlabel (); if (Label.equals ("clear")) {;d Estroyapp (true); else if (label.equals ("date?") {; myname = name.getstring (); try {; invokejsp (URL); catch (IOException e) {;}; };};};

The Invokejspmidlet code specifies the URL of the JSP page to be invoked, creates two command buttons, and then creates a text field that allows the user to enter a name inside. In the Invokejsp () method, will create an HTTP connection to this URL, and then build I/O stream, MIDlet use the output stream to send data to the JSP page, and then use the input stream to receive data from the JSP page, note that in this example we will send the name to the JSP page, In fact, it just shows you how the data flows between MIDlet and pages.

In code snippet 2, it should be noted that in order for the JSP page to use GetParameter () to get the value of the data from the name variable, you must set the Content-type property to application/x-www-form-urlencoded.

Summary

This article only demonstrates how to invoke JSP pages from MIDlet, Invokejspmidlet can also be easily modified to implement the purpose of invoking other JSPs. But note that JSP is primarily used in conjunction with HTML, but if your mobile device's browsers can't handle HTML, then XML is a great choice because MIDlet can parse XML documents.



Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.