ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何从MIDlet中调用JSP页面(转)

如何从MIDlet中调用JSP页面(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-07-04 10:57:06 0 删除 编辑
信息工业的下一大改革就是无线化,无线应用程序的好处在于对于一些机构的用处,可以使它们的员工走到哪里都可以高效地访问公司或机构的中心事务或业务数据。因此无线应用程序(比如MIDlet)和外部的企业系统之间的交互就变得非常重要了。但是我们怎么实现这个交互过程呢?这是摆在无线应用程序开发人员面前一个非常大的问题。

  在本文中,我想通过一个例子向大家演示一下midlet如何与基于JSP的企业级系统交互。首先,我将讨论一下HttpConnection接口,这个接口可以用来建立Http连接

  1.HttpConnection 接口

  Connected Limited Device Configuration(有限连接设备配置。简称CLDC)。提供了一套用于网络连接的类,就是普通连接框架—一种平台独立连接框架,提供了一种分层的连接接口,它的实现操作系统由具体的设备简表提供(比如Mobile Information Device Profile(MIDP))。

  MIDP通过提供支持HTTP的HttpConnection 框架来实现扩展CLDC的一般连接框架的作用。所有MIDP的应用程序实现都要求支持HTTP,这主要是因为HTTP即可以通过使用基于IP的协议(如TCP/IP)也可以通过使用非IP协议(如WAP)来实现。

  所有的连接都是使用Connector类的open()方法来创建的,如果连接成功的话,这个方法就返回一个实现某种普通连接借口的对象,举一个例子吧,下面的代码段可以用来打开一个到某个URL的HTTP连接。

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

HttpConnection connection = Connector.open(url);

  一旦一个连接被建立后,就可以设置属性了,然后就可以建立I/O流来发送或接收数据。举个例子,请看下面的这一小段代码,用来设置属性并建立输入/输出流。

// 设置 HTTP 属性

connection.setRequestMethod(HttpConnection.POST);

connection.setRequestProperty("IF-Modified-Since","22 Dec 2001 16:33:19 GMT");

connection.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");

connection.setRequestProperty("Content-Language", "en-CA");

// 创建I/O流

InputStream is = connection.openInputStream();

OutputStream os = connection.openOutputStream();

  下面让我们来研究一个例子,了解一下如何从MIDlet中调用JSP,我们调用JSP页面代码的程序段1如下所示:

  代码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);

%>

  这个JSP也面希望取得一个名为name 的变量的值,一旦这个值被取得,就会创建一个Date的实例,然后name和date的值就会被打到客户端中的输出流中。

  现在,让我们看看如何写一个MIDlet来调用这个JSP页面,我们将使用POST请求方法来调用它,这就意味着被传送到JSP页面的数据不是使用URL编码的,而是以一段单独的信息传入,这段MIDlet代码如代码段2所示。

  代码2:InvokeJSPMidlet.java

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

public class InvokeJSPMidlet extends MIDlet implements CommandListener {;
Display display = null;

// name 字段
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() {;
display = Display.getDisplay(this);
name = new TextField("Name:", " ", 25, TextField.ANY);
form = new form("Invoke JSP");

};

public void startApp() throws MIDletStateChangeException {;
form.append(name);
form.addCommand(clearCommand);
form.addCommand(callCommand);
form.setCommandListener(this);
display.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", "29 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")) {;
  destroyApp(true);
 }; else if (label.equals("date?")) {;
  myname = name.getString();
 try {;
  invokeJSP(url);
 };catch(IOException e) {;};
 };
};
};

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-127031/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3481
  • 访问量
    3018062