在J2ME平台上构建你的邮件程序
E平台上构建你的邮件程序
Jacky Pan
Table of Contents
1. 教程的介绍和程序的安装
2. 程序的结构
3. 界面的设计
4. 账户的管理
5. MIDlet和Servlet的网络连接
6. Servlet和JavaMail
7. 简单的XML
8. 小结
1.教程的介绍和程序的安装
本教程讲述了如何在J2ME平台上编写一个简单的邮件应用程序,包括界面的设计,邮件的发送/接受,邮件账户的创建/修改/删除,后台Servlet的编写。
为了运行本教程所带的演示程序,您需要安装下列软件:
1. WTK2.0 (java.sun.com)
2. Apache Tomcat (www.apache.org)
安装和运行示例程序的步骤:
1. 从http://groups.yahoo.com/group/OriTec/files/下载MicroMail Beta.zip(包括了源代码和二进制文件)
2. 解压MicroMail Beta.zip至$TMP
3. 在$WTK/apps下建一新目录MicroMail
4. 拷贝$TMP/src/client/* 至 $WTK/apps/MicroMail/src/
5. 拷贝$/TMP/bin/server/mail.war至$TOMCAT/webapps/
6. 运行Tomcat
7. 运行WTK2.0, “Open Project” 并选中MicroMail
8. 设置URL为MailAgent的地址http://server/mail/MailAgent
2. 程序的结构
采用Client-Web Server-Mail Server三层架构,如图1。
MIDlet
(Cell Phone)
Servlet
(Web Server)
Mail Server
My Application
Figure 1
Cell Phone将请求(接受/发送邮件)传给Web Server,Web Server将这些http请求转换成对POP3或 SMTP Server的请求。POP3/SMTP Server执行相应的请求,并将相应通过Web Server返回给Cell Phone.
客户端(PDA/手机)为J2ME平台上的程序。MIDP2提供了一些基本网络连接的API。利用这些API可以使得J2ME程序可以向远端发出Http请求,并接受响应,传递数据流。
MailAgent 为Servlet,用来接收来自客户端的请求,并调用Java Mail API,将这些请求转变成对远端Mail Server 的请求,同时将Mail Server的响应传给客户端。
那么为什么要采用这样的架构了?这是因为MIDP2.0只支持HTTP协议, 而不支持POP3 和 SMTP等其它应用层协议,而J2EE提供了完整的Java Mail的API,所以考虑通过一个Servlet将Http请求转换成POP3或SMTP请求。另一个原因是,很多运营商可能只提供有限的网络访问的能力,而通过一个agent则提供了程序部署的灵活性。
下面简单介绍一下源码的结构,在客户端,ui包中的类定义程序的用户界面,utility包中的类定义了数据库的操作,网络的连接,XML的解析等,mail包中的类定义了邮件账户,邮件的头。
ui package:
AccountForm.java
AccountsList.java
Confirm.java
ConfirmListener.java
MailMIDlet.java
MessageList.java
ProgressForm.java
SendMessage.java
WriteContent.java
utility package:
DBOperator.java
HeadParser.java
NetAdapter.java
Networker.java
ParserListener.java
mail package:
MailAccount.java
MessageHead.java
服务器端只有一个文件MailAgent.java,包含了一个servlet,用来做midlet和邮件服务器的桥梁。
3. 界面的设计
MIDP2.0提供了大量的API供开发者创建和控制用户界面。在包javax.microedition.lcdui中提供了List, Form, TextBox, Alert等Screen组件,在Form中可以包含一系列Item,如ChoiceGroup, TextField, StringItem等。包中还提供了Command组件,以及相应的Listener。
源文件ui/MailMIDlet.java定义了程序的入口以及MicroMail的主页面。如图2主页面是一个List,显示了几个功能模块,包括添加账户,修改/删除账户,接受邮件,发送邮件。
Figure 2
public MailMIDlet()
{
display = Display.getDisplay(this);
/* 创建List */
mainList = new List("MicroMail0.1", Choice.IMPLICIT);
/* 创建两个控制按钮OK和Exit */
cmOK = new Command("OK", Command.OK, 1);
cmExit = new Command("Exit", Command.EXIT, 1);
/* 向mainlist中添加内容 */
mainList.append("Add Account", null);
mainList.append("Edit Account", null);
mainList.append("Receive Message", null);
mainList.append("Send Message", null);
[1] [2] [3] [4] [5] [6] 下一页
进入问吧