J2ME手机程序连接服务器2.docx
- 文档编号:7391990
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:47
- 大小:1.82MB
J2ME手机程序连接服务器2.docx
《J2ME手机程序连接服务器2.docx》由会员分享,可在线阅读,更多相关《J2ME手机程序连接服务器2.docx(47页珍藏版)》请在冰豆网上搜索。
J2ME手机程序连接服务器2
J2ME手机程序连接服务器——实现上传数据与返回数据
实现的具体功能:
手机页面具有闪屏功能,连接服务器后可以上传数据,并返回数据,返回的数据在手机里以列表的形式展现出来(列表的数据实现了分页功能),点击列表里的具体列,弹出详细列表,在此可以查看详细信息相对应的图片(图片来源于服务器端下载时有进度条显示图片下载的进度)。
以下是具体实现的代码:
首先介绍一下在MyEclipse里创建手机程序与运行效果
如下:
第一个手机程序helloworld
通过MyEclipse创建手机程序
1.建立项目
2.在项目里建立类
3.运行手机程序
运行程序后出现的效果如下:
4.手机程序类及其其中的代码.
publicclassCheshiextendsMIDlet{
publicCheshi(){
//TODOAuto-generatedconstructorstub
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
protectedvoidpauseApp(){
//TODOAuto-generatedmethodstub
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
}
5.在手机屏幕上显示helloworld
一个MIDlet通常由若干个屏幕组成,每个屏幕包含若干个组件元素.程序的运行依赖于屏幕之间的调节和切换,而Display起调节和管理的重要角色。
publicclassCheshiextendsMIDlet{
privateDisplaydisplay;
publicCheshi(){
//TODOAuto-generatedconstructorstub
display=Display.getDisplay(this);
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
protectedvoidpauseApp(){
//TODOAuto-generatedmethodstub
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
}
Display可以在MIDlet中调节不同屏幕,使其中一个成为当前屏幕显示出来就需要Displayable对象的参数.
Displayable包含多个多个子类,以下以TextBox为例
publicclassCheshiextendsMIDlet{
privateDisplaydisplay;
privateTextBoxt;
publicCheshi(){
//TODOAuto-generatedconstructorstub
display=Display.getDisplay(this);
t=newTextBox("第一个手机程序标题","helloworld",30,TextField.ANY);
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
protectedvoidpauseApp(){
//TODOAuto-generatedmethodstub
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
display.setCurrent(t);
}
}
运行程序的结果为:
以上是一个简单的新建手机项目的建立与运行
下面我们将建立一个具有客户端与服务器端等一系列功能的程序代码:
手机客户端:
PublicclasshhhaaaextendsMIDletimplementsCommandListener,Runnable{
Formform,formmx,xxxx,formtp;
TextFieldtxbh,txxm,txxb,txmz,fcx;
DateFieldtxcsny;
Commandqd,tc,txtc,tp,fh,fhtp,qx;
Listlista,listmx;
Displaydis;
Alertalt1;
Imageimag,image;
Stringscabcl,bz,bza,ural;
Stringcxbh;
intleng,a;
Mcancan;
这段程序主要是下载图片的:
1.下载图片我们考虑到了进度条,我们用了Canvas类中的paint()来绘制进度条
publicclassXiazaiextendsMIDletimplementsCommandListener,Runnable
{
Displaydis;
intleng,a;
Listlistmx;
Mcancan;
Alertalt1;
Commandqx,fh,tp,qdcx;
TextFieldcxtj;
Formformtp,xxxx,formcx;
Stringbz,bza;
Stringstr;
Stringural,cxbh;
Imageimage;
classMcanextendsCanvasimplementsRunnable
{
Threadt;
booleanisFinished=false;
publicvoidrun()
{
while(!
isFinished)
try
{
repaint();
}
catch(Exceptionexception){}
}
publicMcan()
{
t=newThread(this);
}
protectedvoidpaint(Graphicsg){
bytebyte0=20;
inti=getHeight()/2-2;
intj=getWidth()-40;
bytebyte1=8;
g.setColor(0xffffff);
g.fillRect(0,0,getHeight(),getHeight());
g.setColor(0);
g.drawString("下载中......",byte0,i-20,20);
g.drawRect(byte0,i,j,byte1);
g.setColor(255);
if(leng==0)
{
}
else
{
g.fillRect(byte0,i,(a*j)/leng,byte1);
}
}
}
publicvoidhhhaaa(){
form=newForm("演示");
txbh=newTextField("编号:
",null,10,0);
txxm=newTextField("姓名:
",null,10,0);
txxb=newTextField("性别:
",null,10,0);
txmz=newTextField("民族:
",null,10,0);
txcsny=newDateField("出生年月:
",DateField.DATE,TimeZone.getTimeZone("cst"));
form.append(txbh);
form.append(txxm);
form.append(txxb);
form.append(txmz);
form.append(txcsny);
form.setCommandListener(this);
qd=newCommand("确定",Command.SCREEN,1);
tc=newCommand("退出",Command.SCREEN,1);
form.addCommand(qd);
form.addCommand(tc);
form.setCommandListener(this);
lista=newList("请选择相应操作",List.IMPLICIT);
lista.append("1录入信息",null);
lista.append("2查询信息",null);
lista.append("3其他",null);
lista.setCommandListener(this);
}
protectedvoidstartApp()throwsMIDletStateChangeException{
Alertalt=newAlert("闪图");
imag=alt.getImage();
try{
alt.setImage(imag.createImage("/001.jpg"));
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
dis=Display.getDisplay(this);
dis.setCurrent(alt,lista);
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{//TODOAuto-generatedmethodstub}
protectedvoidpauseApp(){
//TODOAuto-generatedmethodstub
}
publicvoidcommandAction(Commandarg0,Displayablearg1){
if(arg1.equals(listmx))
{
if(com==List.SELECT_COMMAND)
{
intzz=listmx.getSelectedIndex();
Stringkk=listmx.getString(zz);
String[]ss=getStrArray(kk,"/");
cxbh=ss[0];
str=ss[0].toString().trim();
str="bz=mx"+"&xm="+str;
bz="nopic";
bza="mx";
sevletsc();
}
}
if(arg0==qx)
{
dis.setCurrent(listmx);
}
if(arg1.equals(lista))
{
if(arg0==List.SELECT_COMMAND)
{
intaa=lista.getSelectedIndex();
switch(aa){
case0:
dis.setCurrent(form);
break;
case1:
dis.setCurrent(formmx);
break;
}
}
}
if(arg0==tp)
{
bz="pic";
a=0;
dis.setCurrent(can);
sevletsc();
Threadkm=newThread(can);
km.start();
}
if(arg0==txtc)
{
if(fcx.getString().trim().equals(""))
{
alt1.setString("查询条件不能为空");
dis.setCurrent(alt1,dis.getCurrent());
}
scabcl=fcx.getString().trim();
System.out.println(scabcl);
scabcl="bz=cx"+"&xm="+scabcl;
bz="nopic";
bza="cx";
sevletsc();
}
if(arg0==fh)
{
dis.setCurrent(lista);
}
if(arg0==qd)
{
alt1=newAlert("");
if(txbh.getString().trim().equals(""))
{
alt1.setString("编号不能为空");
dis.setCurrent(alt1,dis.getCurrent());
return;
}
Stringsca,scb,scc,scd,sce;
sca=txbh.getString().trim();
scb=txxm.getString().trim();
scc=txxb.getString().trim();
scd=txmz.getString().trim();
sce=txcsny.getDate().toString().trim();
scabcl="bz=lr"+"&bh="+sca+"&xm="+scb+"&xb="+scc+"&mz="+scd+"&csny="+sce;
bz="nopic";
bza="lr";
sevletsc();
}以下为分页:
if(arg0==cx){
newThread(this).start();
dis.setCurrent(cxmxpm);
查询按钮,此按钮是图3-1中的查询按钮
图表3-1
点击查询按钮弹出第一页list(如图4-1)并且有下一页,上一页,首页,末页,跳转等功能菜单
图表4-1
1.下一页
if(arg0==cxxy)
{
if(!
String.valueOf(ys).trim().equals(zys.trim()))
{
cxmxpm.deleteAll();
ys=ys+1;
newThread(this).start();
dis.setCurrent(cxmxpm);
}
else
{
alert=newAlert("本页为末页!
");
dis.setCurrent(alert,cxmxpm);
}
}
2.上一页
if(arg0==cxsy)
{
if(ys!
=1)
{
cxmxpm.deleteAll();
ys=ys-1;
newThread(this).start();
dis.setCurrent(cxmxpm);
}
else
{
alert=newAlert("本页为首页!
");
dis.setCurrent(alert,cxmxpm);
}
}
3.首页
if(arg0==cxshouy)
{
cxmxpm.deleteAll();
ys=1;
newThread(this).start();
dis.setCurrent(cxmxpm);
}
4.末页
if(arg0==cxmoy)
{
cxmxpm.deleteAll();
ys=Integer.valueOf(zys).intValue();
newThread(this).start();
dis.setCurrent(cxmxpm);
}
5.跳转
当点击跳转按钮时,将出现新的FORM屏幕如图5-1
图表5-1
其中有两个按钮分别是查询和返回
(1)查询
if(cmd==tzcx)
{
if(Integer.valueOf(tztx.getString()).intValue()>Integer.valueOf(zys).intValue()&&Integer.valueOf(tztx.getString()).intValue()<0)
{
alert=newAlert("页数不存在");
dis.setCurrent(alert,cxmxpm);
}
else
{
ys=Integer.valueOf(tztx.getString()).intValue();
System.out.println(ys);
cxmxpm.deleteAll();
newThread(this).start();
dis.setCurrent(cxmxpm);
}
(2)返回
if(cmd==tzfh)
{
dis.setCurrent(cxmxpm);
}
分页结束
}
publicvoidrun()
{
HttpConnectionhtc=null;
DataInputStreamdain=null;
DataOutputStreamdos=null;
InputStreaminput;
StringBufferstb=newStringBuffer();
if(bz.equals("nopic"))
{
ural="http:
//localhost:
8080/ww/sj";
}
else{
ural="http:
//localhost:
8080/ww/"+cxbh+".jpg";
}
try{
htc=(HttpConnection)Connector.open(ural);
if(bz.equals("nopic"))
{
htc.setRequestMethod("POST");
htc.setRequestProperty("Content-Language","en-US");
byte[]bytesa=str.getBytes();
htc.setRequestProperty("Content-Type","application/x-www-forurlencoded");
htc.setRequestProperty("ContentLength",Integer.toString(bytesa!
=null?
bytesa.length:
0));
dos=htc.openDataOutputStream();
dos.write(bytesa);
}
if(bz.equals("nopic")){
dain=htc.openDataInputStream();
stb.append(dain.readUTF());
Stringssaa=stb.toString();
System.out.println("传回结果:
"+stb);
jgcl(bza,ssaa);
}
.append(dain.readUTF());
Stringssaa=stb.toString();
System.out.println("传回结果:
"+stb);
jgcl(bza,ssaa);
}
else
{
input=htc.openInputStream();
leng=(int)htc.getLength();
ByteArrayOutputStreambytearrayoutputstream=newByteArrayOutputStream();
inti;
while((i=input.read())!
=-1)
{
bytearrayoutputstream.write(i);
a++;
}
byteabyte1[]=bytearrayoutputstream.toByteArray();
bytearrayoutputstream.close();
image=Image.createImage(abyte1,0,abyte1.length);
ImageItemimac=newImageItem("测试图像",image,ImageItem.LAYOUT_CENTER,"图片无法显示");
formtp.deleteAll();
formtp.append(imac);
dis.setCurrent(formtp);
}
}catch(IOExceptione)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2ME 手机 程序 连接 服务器